본문 바로가기
블록체인/실습

Java를 이용한 블록체인 개발 [ Wallet ]

by upswp 2021. 3. 14.

Wallet의 기능

  • 공개키, 개인키의 의미는 트랜잭션의 검증수단
  • 트랜잭션이 생성되고 처리되는 과정에서 개인키로 트랜잭션에 서명하고 공개키로 올바른 서명인지 확인한다.
  • 트랜잭션을 일으키는 지갑이 본인의 개인키로 디지털 서명을 암호화, 공개키로 해당 트랜잭션을 복호화 하여 유효한 트랜잭션인지 확인한다.
  • 보통 이 키 쌍을 가르켜 keyPair라고 한다. 키 쌍을 만드는데에는 타원 곡선 암호(Elliptic-curve cryptography)가 사용된다.
  • Wallet은 블록체인의 가장 밑바탕이 되는 프로그램이다. 지갑 프로그램은 각 클라이언트들이 모두 설치가 되어 있다는 가정에 진행된다.
  • 지갑에서 Transaction을 생성한다.
  • 수신자는 오픈되어 있는 공개키를 알고 있어야 복호화가 가능하다.

Wallet의 상세기능 설명

구성항목 분류 설명
공개키(Public Key) - 누구에게나 공개(계좌번호 같은 역할)
개인키(Private Key) - 사용자 본인만 알고있는 비밀키(계좌비밀번호와 같은 역할)
타원곡선 알고리즘 알고리즘 공개키, 개인키를 쌍으로 만들어주는 알고리즘
UTXO(Unspent Transaction Output) 내용 사용되지 않은 TransactionOutput(Unspent 상태)
TxOutput은 생성 항목이 (받는사람, 금액, parentTransacionId)이다.
말 그대로 누군가에게 돈을 그 사람에 계좌에 보내겠다는 역할을 한다.
Main함수에서는 이것을 <id , TransationOutput>로 관리한다.
자료구조 관리하는 자료구조 형태에는
HashMap<String, TransactionOutput>로 관리한다.
시나리오 1. 100코인을 계좌번호 0xa에 보낸다.
2. TxOutput은 생성항목이(0xa, 100, parentTransactionId)로 저장된다.
3.이것을 메인 함수에서는 HashMap(key, TxOutput)로 메모리 상테로 저장된다.

Wallet의 구성

구성 항목 설명
개인키 비밀번호
공개키 계좌번호
UTXO 보내야할 코인에 트랜잭션
잔고확인 잔고확인
송신(잔액) 잔고 확인 후 송신