#5 Wallet

비트코인의 주인이될 wallet을 만들어봅시다.

Wallet에 대한 코드를 작성하기전에 Wallet에 대한 문서를 읽고 오시는 것을 추천드립니다. 👊🏻

Wallet은 거래를 위해 사용하는 address와 보안을 위해 Public/Private Key쌍으로 이루어져있습니다. 이를 구현해 보도록하겠습니다.

아래는 wallet에서 사용되는 값들의 관계를 나타낸 것입니다. 화살표 방향으로만 유도가 가능합니다.

Wallet key, hash and address

blockchain/tx.go

먼저 코드 리팩토링을 진행합니다. transcation.go에서 txIn과 txOut에 관련된 코드를 blockchain/tx.go 로 옮김니다.

wallet/wallet.go

Wallet을 만들기 위한 코드 입니다. 암호학을 기반으로 하므로 여러 암호화 함수들이 대거 등장합니다. 복잡해보이지만 어렵지 않습니.

wallet.go에 사용된 Base58관련 코드는 따로 wallet/utils.go 에 저장합니다.

wallet/wallets.go

Wallets는 Wallet들을 관리합니다. 직관적인 함수들로 구성되어 있습니다. Wallet을 영구적으로 저장하기위해 DB를 사용하지는 않고 파일에 인코딩하여 저장합니다.

cli/cli.go

마지막으로 Cli 프로그램에 명령어를 추가해줍니다. 비슷한 내용이므로 따로 설명은 달지 않았습니다.

실행

Wallet을 만들고 Wallet들의 address를 출력해봅시다.

createwallet

Address가 만들어지는 과정과 이론을 비교해보세요.

몇 개의 wallet을 더 만들고 출력해보겠습니다.

listaddresses

각기 다른 주소가 출력됩니다.

Last update: 2021/04/29

Last updated

Was this helpful?