지갑 (Wallet)

zzase·2021년 12월 15일
1

개요


정의

  • 블록체인에서 실행되고 public key&private key를 저장하며 해당 키와 관련된 모든 트랜잭션을 모니터링하고 유지하는 소프트웨어
    즉, 블록체인 ID(=지갑주소)를 발급하며 해당 ID와 관련된 모든 거래를 추적하는 App이며
    이는 곧 블록체인에 접속하는 프로그램이라고 이해해야 한다.

  • 특정 지갑 주소에 관한 모든 트랜잭션(거래내역)은 사용자뿐만 아니라 모두가 볼 수 있으며 그 트랜잭션을 발생시키는 권한을 가진자는 이 지갑주소를 만들때 사용한 private key, Mnemoic code의 소유자이며 따라서 소유자는 이 private key와 Mnemonic code를 절대 분실해선 안된다.

기능

  • 여려 유형의 블록체인 자산 저장, 전송, 수신 및 관리
  • 다른 지갑과 상호 작용하는 데 필요한 모든 기능

지갑은 생성된 계정(들)의 트랜잭션을 모니터링하고 관리하는 프로그램

구조


HD 지갑(Hierarchical Desterministic Wallet)

HD 지갑(계층적 결정 지갑)
하나의 시드키를 사용하여 무수히 많은 주소를 생성할 수 있는 지갑

계층적 결정 지갑 이전에 비결정적 지갑, 결정 지갑이 있으나 이는 공개키와 주소 재사용의 문제, 개인키 백업&관리 등의 문제가 있었고 HD 지갑이 이를 해소하기 위해 만들어진 비트코인의 BIP32 표준으로 정의된 지갑이며 현재 MetaMask를 포함한 대부분의 암호화폐 지갑은 이 HD 지갑 구조이다.

MetaMask와 같은 지갑 프로그램을 이용하여 지갑을 생성하는 과정은 다음과 같다.

  • Mnemonic Code 생성
  • Mnemonic Code로부터 Master Seed Key 생성
  • Master Seed key로부터 개인키(들) 생성
  • 생성된 개인키(들)를 AES 암호 알고리즘을 사용하여 지갑에서 확인 할 수 있는 account, private key pair 생성

만약 지갑내에서 2번째 account (index=1)을 삭제하고
새로운 계정을 생성한다면 HD지갑은 seed key를 통해 이미 정해진 인덱스의 account를 생성해주기 때문에 삭제한 account를 다시 찾을 수 있다.

실제 코인정보는 블록체인에 담겨있고 지갑은 그 account 값을 파라미터로 블록체인에 저장된 데이터를 읽는 것이기 때문에 잔액이 남아있었다면 그것 또한 그대로 복구(정확히는 블록체인에서 읽는 것) 가능하다.

정리


  • 통상 MetaMask와 같은 지갑은 실제로 디지털 자산을 보관하는 실제 지갑과 같은 기능이 아니라 블록체인에 접근하여 해당 지갑주소의 트랜잭션 정보를 읽어 자산을 모니터링하고 keystore를 보관해주는 프로그램.

    실제 자산정보는 블록체인에만 기록돼어 있다.

  • 지갑주소 (지갑에 있는 모든 account 주소) 분실시 복구 방법은 지갑 생성시 입력한 Mnemonic code 뿐이다.
    따라서 이 Mnemonic code는 종이에 물리적으로 저장하거나 안전하게 보관해야 하며 각 account 의 private key 또한 노출시에도 해당 account에 접근할 수 있기 때문에
    Mnemonic code와 private key는 안전히 보관해야한다.

참조 사이트

http://wiki.hash.kr/index.php/HD_%EC%A7%80%EA%B0%91

profile
블록체인 백엔드 개발자

1개의 댓글

comment-user-thumbnail
2022년 1월 28일

블록체인 개발은 어떤식으로 배울 수 있는지 알려주실 수 있나요?

답글 달기