본문 바로가기

전체 글

(43)
Web3j 스터디 (6) 네이티브 코인 전송 1. 지갑 주소 생성 (Private Key, Public Key) 1.1 Private Key로 Public Key 추출 1.2 생성된 주소 메타마스크에 등록해보기 1.3 Private Key로 서명 생성 2. 단위 변환 (wei, gwei, eth) 2.1 wei → eth 2.2 eth → wei3. 네이티브 코인 전송3.1 네이티브 코인 전송 (from, to, amount) 네이티브 코인이란?네이티브 코인은 블록체인 네트워크가 기본적으로 사용하는 화폐이다.Ethereum → ETHBNB Chain → BNBBitcoin → BTCAvalanche → AVAXSolana → SOL네트워크의 전송 수수료(가스비) 도 이 네이티브 코인으로 지불한다. 네이티브 코인의 특징스마트 컨트랙트를 직접 호출하지..
Web3j 스터디 (5) 단위 변환 (wei, gwei, eth) 1. 지갑 주소 생성 (Private Key, Public Key)1.1 Private Key로 Public Key 추출1.2 생성된 주소 메타마스크에 등록해보기1.3 Private Key로 서명 생성2. 단위 변환 (wei, gwei, eth)2.1 wei → eth2.2 eth → wei 이더리움 단위 변환 (wei, gwei, ether)이더리움(Ethereum)에서 모든 금액은 가장 작은 단위인 wei로 처리된다.그 이유는 컴퓨터가 소수점 계산에서 발생할 수 있는 오차를 피하기 위해서이다.모든 계산을 정수 단위로만 수행하면 금융 연산에서의 정확성을 보장할 수 있다. web3j에서는 Convert 유틸 클래스를 이용해 wei, gwei, ether 간의 단위 변환을 할 수 있다.1. 이더리움 단위 ..
Web3j 스터디 (4) Private Key로 서명 생성 1. 지갑 주소 생성 (Private Key, Public Key)1.1 Private Key로 Public Key 추출1.2 생성된 주소 메타마스크에 등록해보기1.3 Private Key로 서명 생성Web3j로 개인키 서명(Signature) 생성 및 검증하기 이더리움 지갑의 개인키를 이용해 디지털 서명(Digital Signature) 을 생성하고, 공개키를 복구하여 검증하는 과정은 블록체인 트랜잭션이 동작하는 기본 원리이다.디지털 서명이란?디지털 서명은 메시지의 무결성과 서명자의 신원을 보장하기 위한 기술이다.이더리움에서는 ECDSA(Elliptic Curve Digital Signature Algorithm) 방식을 사용한다.서명은 크게 세 가지 역할을 수행한다. 메시지 인증메시지를 보낸 사람이 ..
Web3j 스터디 (3) 생성된 주소 메타마스크에 등록해보기 1. 지갑 주소 생성 (Private Key, Public Key)1.1 Private Key로 Public Key 추출1.2 생성된 주소 메타마스크에 등록해보기메타마스크란? 메타마스크(MetaMask)는 가장 널리 사용되는 이더리움 지갑 확장 프로그램이다.브라우저(Chrome, Edge, Firefox 등)에 설치하여 이더리움 및 EVM 호환 블록체인 네트워크에서 지갑을 관리하고 트랜잭션을 실행할 수 있다.특징은 다음과 같다.지갑 관리: 계정 생성, 가져오기, 내보내기 지원네트워크 관리: 메인넷뿐 아니라 테스트넷, 커스텀 RPC 네트워크 연결 가능DApp 연동: 웹 브라우저에서 탈중앙화 애플리케이션과 직접 상호작용 가능크롬 웹스토어에서 메타마스크 검색 후 다운로드 받는다. Web3j로 생성한 지갑 정보..
Querydsl에서 columnDefinition으로 인한 cast 에러 해결 경험 querydsl에서 처음 보는 이상한 에러를 마주했다,,, API 작업을 위해 mysql 쿼리를 작성하고 -> 실행하고 -> 결과가 잘 나오면 querydsl로 옮긴다. 게시글 상세조회 쪽을 작성하며 쿼리를 이런 식으로 짰다. 1. MySQL 쿼리내가 글쓴이를 팔로우했는지 여부 (followYn)내 글인지 여부 (myFeedYn)내가 좋아요 했는지 여부 (likeYn)# 로그인한 사용자의 id는 1, 조회하는 글의 id는 5라고 가정하고 하드코딩함CASE WHEN EXISTS ( SELECT 1 FROM community_follow cf WHERE cf.use_yn = 1 AND cf.following_id = 1 AND cf.follower_id = c.user..
Web3j 스터디 (2) Private Key로 Public Key 추출 1. 지갑 주소 생성 (Private Key, Public Key)1.1 Private Key로 Public Key 추출 이더리움 지갑의 핵심은 개인키(Private Key) 하나에 모든 정보가 담겨 있다는 점이다. 개인키만 있으면 언제든 지갑 전체를 복원할 수 있다. 이미 가지고 있는 개인키를 사용해 공개키(Public Key)와 지갑 주소를 복원할 수 있다.1. 단방향 암호화의 원리이더리움 지갑은 개인키로부터 공개키와 주소가 파생되는 단방향 구조를 가진다.개인키 → 공개키 → 주소이 암호학적 관계 덕분에 개인키만 안전하게 보관하면 언제든 지갑 전체를 복원할 수 있다. 이러한 관계는 일방향으로, 개인키에서 주소를 계산하는 것은 가능하지만, 주소나 공개키를 보고 개인키를 알아내는 것은 불가능하다.지난 ..
QueryDSL 페이징 Count 쿼리 작성 시 groupBy 사용의 문제점 분석 페이징(Pagination) 구현은 백엔드 개발의 일반적인 요구사항이다. Spring Data JPA와 QueryDSL은 Page 객체를 통해 이를 편리하게 처리하는 기능을 제공한다. 이 과정에서는 데이터 목록을 조회하는 메인 쿼리와 전체 데이터 개수를 조회하는 Count 쿼리를 함께 사용하게 된다.이때 Count 쿼리를 작성하는 과정에서 groupBy를 잘못 사용하면, 페이징 처리에 오류가 발생할 수 있다. 문제 현상: 오류 없이 잘못된 totalCount가 반환되는 코드다음은 '특정 키워드가 포함된 댓글이 달린 게시글(Post)' 목록을 조회하며, 각 게시글에 달린 댓글 수를 집계하여 페이징으로 반환하는 코드이다.// 메인 쿼리JPAQuery query = queryFactory .select(..
BSC Testnet Web3j 스터디 (1) 지갑 주소 생성 (Private Key, Public Key) 1. 지갑 주소 생성 (Private Key, Public Key) 이더리움 지갑을 만든다고 하면 흔히 메타마스크 같은 지갑 앱을 떠올리지만, 사실 지갑의 핵심은 단순하다.지갑은 결국 Private Key, Public Key, Address 이 세 가지 값으로 정의된다. 자바에서는 web3j 라이브러리를 사용하여 이를 코드로 구현할 수 있다. 지갑 생성 과정이더리움 지갑은 기본적으로 다음 과정을 거쳐 만들어진다.키 쌍 생성타원곡선 암호화(SECP-256k1)를 사용해 개인키와 공개키를 생성한다.개인키는 서명에 사용되고, 공개키는 이를 검증하거나 주소를 만들 때 사용된다.주소 도출공개키를 Keccak-256 해시 함수에 넣는다.나온 값에서 마지막 20바이트를 추출하고, 앞에 0x를 붙이면 이더리움 주소가..