비트코인 HD BIP
HD 월렛 관련 BIP
BIP | 설명 |
---|---|
BIP32 | HD Wallet을 만드는 일반적인 방법과 기본적인 키 생성 메카니즘을 설명하고 있다. BIP32는 Seed로부터 Hierarchical Deterministic 키를 만드는 방법을 설명하고 있는데, 즉, Parent Key로부터 Child Key를 만드는 메카니즘, Extended Keys, Hardened Keys, Internal/External Keys 등의 기본 개념을 설명하고 있다. BIP32의 기본 포맷은 m/account/change/index 으로서, Bitcoin Core는 m/account'/change'/index'을 사용하고, Multibit(deprecated)은 m/account'/change/index 을 사용했었다. 예를 들어, Bitcoin Core의 첫번째(0th) internal 주소는 m/0'/0'/0' 이고, 첫번째 external 주소는 m/0'/1'/0' 이다. |
BIP39 | Mnemonic Sentence로부터 Seed를 만드는 방법을 설명하고 있다. Seed는 Binary Seed로 타이핑하거나 기억하기 어려운데, Mnemonic Sentence를 사용하면 월렛 복구나 이동을 더 쉽게 할 수 있다. BIP39에서 생성된 Seed는 BIP32, BIP44 등의 Seed로 사용된다. |
BIP43 | BIP32 스펙이 너무 광범위하여 여러 다른 구현들이 출현들 서로 호환되지 않는 문제가 있어, BIP32의 첫번째 레벨에 Purpose 필드를 도입함. |
BIP44 | BIP44는 BIP43를 계승하여 구현된 것으로 BIP32를 확장하여 Purpose와 여러 코인들(multi-coins)을 지원하는 스펙이다. BIP44의 기본포맷은 m/purpose'/coin_type'/account'/change/index 로서 m/44'/coin_type'/account'/change/index 포맷을 사용한다. |
BIP49 | BIP49는 P2SH 안에 SegWit을 넣은 것으로 Native SegWit (BIP84)으로 완전히 이전하기 전에 사용되었던 중간 단계의 메카니즘을 정의한 것이다. 일부 거래소들(Exchanges)은 Native SegWit 주소를 아직 지원하지 않는 경우도 있는데, 이 경우 (P2SH 안에 SegWit을 넣은) P2WSH를 사용한다. BIP49은 Purpose 이외에 나머지 메카니즘은 BIP44와 같으며, m/49'/coin_type'/account'/change/index 포맷을 사용한다. |
BIP84 | 비트코인 SegWit 트랜잭션을 처리하기 위한 것으로, Purpose 필드를 84' (84h)로 설정하여 다른 트랜잭션 Serialization 메서드를 사용하도록 하였다. Purpose 이외에 나머지 메카니즘은 BIP44, BIP49와 같다. BIP84은 m/84'/coin_type'/account'/change/index 포맷을 사용한다. |
HD 월렛 관련 master key 주소
주소 종류 | mainnet 주소 | testnet 주소 | 주소 예 |
---|---|---|---|
P2PKH (BIP44) | xprv / xpub | tprv / tpub | xpub6CSF29iSzGHBYEzQs1uohtBpuviMdq8EPPKHYD4Y4D8uBF9TY5pB9bbDAyJATrRHiVwZQj4fZWAMoA8CsHAtzBmEa51zAn7B6xrHCpdxdBv |
P2WSH (BIP49) | yprv / ypub | uprv / upub | ypub6Y7HcL8SBefuvKWqh7i9uwowF7x1HN1hmt7riCDQF8XZELnFfYuGr5HhsQofrcknAvMi4fPtkhwX3oGKRWZMJdFxsZAYwh6kYSJBu7QXSm5 |
P2WPKH (BIP84) | zprv / zpub | vprv / vpub | zpub6rwFmFgEYwmwvzQTYCS3B5kWGqV5BSHPaYLQeLbb63pzAna77GV5mzETu9ETBibPYUuYwXmp9k8JSnkHQJt2nEixicbrsw3SrMP8QGsjdsj |