BIP-32
- BIP32는 Bitcoin Improvement Proposal의 약자로, Bitcoin 지갑 소프트웨어가 계층적 결정론적 지갑(Hierarchical Deterministic Wallet)을 구현하는 데 사용하는 기술적 표준
- 계층적 결정론적 지갑(Hierarchical Deterministic Wallet)은 마스터 비밀키(master private key)를 가지고 여러 개의 자식 비밀키(child private key)를 생성하는 방식으로 작동
- 이 방식으로 생성된 지갑은 계층 구조를 가지며, 하나의 마스터 비밀키로 여러 개의 지갑 주소를 생성할 수 있음
- 마스터 키 생성
BIP32는 마스터 키를 생성하는 데 사용하는 표준 방식을 제공합니다. 마스터 키는 무작위 엔트로피(entropy)를 사용하여 생성됩니다. 마스터 키는 256비트의 엔트로피를 입력으로 사용하여 생성되며, 이는 24개의 단어로 이루어진 니모닉(mnemonic) 문구로 표시될 수 있습니다.
- 계층 구조
BIP32는 하나의 마스터 키로부터 생성된 자식 키를 위한 계층 구조를 제공합니다. 각 계층은 인덱스(index) 값을 가지며, 하나의 마스터 키에서 무한히 많은 계층을 생성할 수 있습니다.
- 확장 키(Extended Key)
BIP32는 확장 키(Extended Key)라는 개념을 도입합니다. 확장 키는 계층 구조를 포함하는 키로, 이전 계층의 상태를 보존하면서 다음 계층을 계산하는 데 사용됩니다.
- 계층 결정론적 지갑(Hierarchical Deterministic Wallet)
BIP32는 계층 결정론적 지갑(Hierarchical Deterministic Wallet)을 지원합니다. 계층 결정론적 지갑은 하나의 마스터 키를 사용하여 무수히 많은 지갑 주소를 생성할 수 있습니다. 이 방식으로 생성된 지갑은 백업이 간편하고 보안성이 높습니다.
BIP-39
- 지갑 소프트웨어가 사용자가 기억하기 쉬운 니모닉(mnemonic) 문구를 사용하여 마스터 키(master key)를 생성하는 데 사용하는 기술적 표준
- BIP39는 다음과 같은 핵심 요소를 정의
- 니모닉(mnemonic) 생성
BIP39는 무작위 엔트로피(entropy)를 입력으로 사용하여 12~24개의 단어로 이루어진 니모닉 문구를 생성하는 표준 방식을 제공합니다. 니모닉 문구는 비밀번호와 같은 역할을 합니다. 이 문구를 사용하여 지갑을 복원할 수 있습니다.
- 엔트로피(entropy)
BIP39는 무작위 엔트로피를 사용하여 니모닉 문구를 생성합니다. 엔트로피는 안전하게 무작위로 생성해야 하며, 이를 위해 컴퓨터의 난수 생성기를 사용하거나 하드웨어 장비를 사용할 수 있습니다.
- 체크섬(checksum)
BIP39는 니모닉 문구에 대한 체크섬을 생성합니다. 체크섬은 니모닉 문구에 대한 오류 검사를 수행합니다.
- 니모닉 문구의 이용
BIP39는 니모닉 문구를 사용하여 마스터 키를 생성하는 방식을 제공합니다. 니모닉 문구를 사용하여 마스터 키를 생성하면, 계층 결정론적 지갑(Hierarchical Deterministic Wallet)을 생성할 수 있습니다.
- 따라서, BIP39는 사용자가 기억하기 쉬운 니모닉 문구를 사용하여 안전하고 쉽게 마스터 키를 생성하는 표준
- BIP39는 Bitcoin 지갑 소프트웨어에서 많이 사용되며, 사용자의 편의성을 높이는 데 기여
- 니모닉 문구를 사용하면, 사용자는 마스터 키를 안전하게 백업하고 복원할 수 있음
BIP-44
- BIP44는 비트코인과 비트코인 기반의 알트코인에서 사용되는 계층 결정 지갑(Hierarchical Deterministic Wallet, HD Wallet) 구조의 표준을 정의한 비트코인 개선 제안서(BIP-32의 개선버전)
- BIP44는 지갑 소유자가 하나의 시드 문구(seed phrase)를 생성하여 다수의 지갑 주소를 생성할 수 있도록 하는 HD 지갑 구조를 정의
- 이 구조에서는 마스터 키(Master Key)에서 파생된 계정(Account), 각 계정에서 파생된 외부(External) 및 내부(Internal) 체인, 그리고 각 체인에서 파생된 주소(Address)를 사용하여 지갑 주소를 생성
- BIP44에서는파생 경로(derivation path)를 사용하여 지갑 주소를 생성
m / purpose' / coin_type' / account' / change / address_index
m: 마스터 키(Master Key)
purpose': 고정값 44로 설정
coin_type': 코인 타입(예: 비트코인, 이더리움 등)에 해당하는 고유한 값으로 설정
account': 계정(Account) 번호
change: 외부(External) 및 내부(Internal) 체인 중 하나를 선택(0:외부 체인, 1:내부 체인)
address_index: 체인에서 파생된 지갑 주소의 인덱스
다수의 코인 타입을 지원하므로, 다양한 종류의 암호화폐를 지원하는 지갑을 구현하기에 용이
BIP-49
BIP49는 P2WPKH-nested-in-P2SH(Pay-to-Witness-Public-Key-Hash nested in Pay-to-Script-Hash) 출력 스크립트를 사용하여 Segregated Witness(SegWit)를 사용하는 계층 결정 지갑(Hierarchical Deterministic Wallet, HD Wallet)을 위한 파생 경로(Derivation Path)를 정의
P2WPKH-nested-in-P2SH 출력 스크립트는 SegWit과 레거시(Legacy) 주소를 모두 지원하면서, SegWit의 장점인 트랜잭션 크기 감소와 수수료 절감을 제공
BIP49에서는 이러한 P2WPKH-nested-in-P2SH 출력 스크립트를 사용하여 SegWit 주소를 생성하는 파생 경로를 정의
BIP49에서 정의된 파생 경로는 m / 49' / coin_type' / account' / change / address_index
여기서 49는 P2WPKH-nested-in-P2SH 출력 스크립트에 사용되는 데 사용되는 BIP49의 버전 번호
coin_type은 코인의 유형을 식별하는 데 사용되는 값, 각 코인에 대해 고유한 값을 갖습니다.
account는 지갑 내에서 계정을 식별하는 데 사용되는 값
change는 내부(Internal) 및 외부(External) 체인을 식별하는 데 사용되는 값이며, 각각 0과 1 값
address_index는 파생된 SegWit 주소의 인덱스를 나타내는 값
BIP49를 사용하면 지갑 소유자는 SegWit을 사용하는 지갑을 더 쉽게 관리할 수 있음
또한, SegWit을 사용하는 것으로 인해 트랜잭션 크기가 작아지기 때문에, 수수료를 절감
따라서 BIP49는 비트코인 네트워크에서 보다 효율적이고 안전한 거래를 위한 방법
BIP-32, BIP-44 차이점
- BIP32와 BIP44 모두 비트코인 및 비트코인 기반의 알트코인에서 사용되는 계층 결정 지갑(Hierarchical Deterministic Wallet, HD Wallet) 구조의 표준을 정의한 비트코인 개선 제안서(BIP)
- 하지만 BIP32는 마스터 키(Master Key)와 파생된 키(Derived Key)를 생성하는 계층 구조를 정의
- BIP44는 계정(Account), 체인(Chain), 주소(Address)를 생성하는 파생 경로(Derivation Path)를 정의
BIP32에서는 마스터 키를 생성하고, 이를 사용하여 다수의 파생된 키를 생성할 수 있습니다. 마스터 키는 시드 문구(seed phrase)에서 생성되며, 이를 기반으로 파생된 키들을 생성할 수 있습니다. BIP32에서는 파생된 키를 사용하여 지갑 주소를 생성하는 방식을 사용합니다.
반면, BIP44에서는 파생 경로를 사용하여 지갑 주소를 생성합니다. BIP44에서는 계정(Account), 체인(Chain), 주소(Address)를 생성하는 파생 경로를 정의합니다. 계정(Account)은 마스터 키에서 파생된 첫 번째 레벨의 파생 경로이며, 각 계정에서는 내부(Internal) 및 외부(External) 체인을 생성할 수 있습니다. 내부 체인은 해당 계정에서만 사용되는 주소를 생성하는 데 사용되며, 외부 체인은 해당 계정의 주소를 공유하는 데 사용됩니다. 각 체인에서는 파생된 지갑 주소를 생성하는 데 사용되는 파생 경로가 정의됩니다.
- 결론적으로 BIP44는 BIP32의 확장된 버전으로, 다양한 코인 타입을 지원하는 지갑을 쉽게 구현할 수 있습니다.