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 | 보내야할 코인에 트랜잭션 |
잔고확인 | 잔고확인 |
송신(잔액) | 잔고 확인 후 송신 |
'블록체인 > 실습' 카테고리의 다른 글
Java를 이용한 블록체인 개발 [ TransactionOutput ] (0) | 2021.03.13 |
---|---|
Java를 이용한 블록체인 개발 [ TransactionInput ] (0) | 2021.03.13 |
Java를 이용한 블록체인 개발 [ Transaction ] (0) | 2021.03.13 |
Java를 이용한 블록체인 개발 [ BlockUtil ] (0) | 2021.03.12 |
Java를 이용한 블록체인 개발 [ Block ] (0) | 2021.03.12 |