HD Wallet을 구현하기 위한 설계


HD Wallet에 대한 정의

HD Wallet의 작동 원리(BIP32, 39, 44 프로토콜 사용)

  1. 먼저, 마스터 시드 (Master Seed)를 생성합니다. 마스터 시드는 무작위 엔트로피를 기반으로 생성되는 256-bit 임의의 값입니다. 이 마스터 시드는 모든 개인키 및 공개키를 생성하는 데 사용됩니다.
  2. 마스터 시드를 사용하여 마스터 키 (Master Key)를 생성합니다. 마스터 키는 마스터 시드를 HMAC-SHA512 해시 함수에 넣어 생성합니다. 이렇게 생성된 마스터 키는 512-bit 값이며, 이 중 상위 256-bit는 마스터 개인키 (Master Private Key)로 사용되며, 하위 256-bit는 마스터 체인 코드 (Master Chain Code)로 사용됩니다.
  3. 마스터 개인키를 사용하여 첫 번째 하위 개인키를 생성합니다. 이 하위 개인키는 마스터 개인키에서 파생된 개인키이며, 이때 파생 시 사용되는 값은 인덱스와 같은 값입니다. 인덱스가 0인 경우 첫 번째 하위 개인키가 생성되며, 인덱스가 1인 경우 두 번째 하위 개인키가 생성됩니다.
  4. 이후 파생된 하위 개인키를 계속해서 생성하며, 이때 하위 체인 코드도 함께 생성됩니다. 이 하위 체인 코드는 하위 개인키를 파생시키는 데 사용됩니다.
  5. BIP39에서는 마스터 시드를 생성할 때 무작위 엔트로피를 생성하는데, 이 엔트로피를 사용자가 쉽게 기억할 수 있는 단어로 변환합니다. 이렇게 생성된 단어를 백업 프레이즈 (Backup Phrase)라고 합니다. 백업 프레이즈를 사용하여 다시 마스터 시드를 복구할 수 있습니다.
  6. BIP44는 계층적 결정적 지갑의 발전 버전으로서, 각각의 코인마다 다른 계층을 사용하여 파생된 하위 개인키를 저장합니다. 예를 들어, 비트코인의 경우 m/44'/0'/0'을 사용하고, 이더리움의 경우 m/44'/60'/0'을 사용합니다.
  7. BIP44에서는 또한 개인키와 함께 공개키도 파생시킵니다. 공개키는 주소 생성에 사용됩니다.

HD Wallet의 요구사항 정의