BIP for HD Wallet
BIPλ 무μμΈκ°
BIPλ Bitcoin Improvement Proposalsμ μ½μλ‘μ, λΉνΈμ½μΈ κΈ°λ₯ κ°μ μ μν μ μμ λ΄μ λ¬Έμμ΄λ€.
BIPλ λΉνΈμ½μΈμ κ°μ νκ³ μ μ μνλ κ°μ μ μμ λ° κ°μ μ΄ νμν λΉνΈμ½μΈμ μ¬νμ λνμ¬ λ¬Έμ λ₯Ό μ κΈ°νκ³ ν΄λΉ μμ μ΄ νμΈλ€λ‘λΆν° μΌμ ν κ·λͺ¨ μ΄μμ μ§μ§λ₯Ό μ»κ² λλ©΄ 곡μμ μΈ μ μ°¨λ₯Ό ν΅νμ¬ BIP νλ‘μΈμ€μ νλΆλλ κ²μ΄λ€.
BIPμλ μ¬λ¬ κ°μ§ μ’ λ₯κ° μλ€. μ΄ κΈμμλ HD walletμ ꡬμΆνκΈ° μν΄ κΌ μμμΌ νλ λͺ κ°μ§λ§ μ§κ³ λμ΄κ°κ² λ€.
BIP32: HD μ§κ°μ μΌλ°μ μΈ νμκ³Ό HD μ§κ°μ ꡬμΆνλ λ°©λ²μ μ€λͺ ν λ¬Έμ.
BIP39: κ²°μ μ± μ΄μ λ₯Ό νμνκΈ° μν λλͺ¨λ μ½λμ μ ν λ° BIP32 μλλ‘ μ ννλ νλ‘μΈμ€
BIP44: BIP32 μ§κ°μ νΉμ νμ, λͺ©μ μ 44λ‘ μ€μ ν΄μ λνλλ λ€μ€ νν λ€ κ³μ μ£Όμλ₯Ό μ μ
BIP84: P2WPKH κΈ°λ° κ³μ μ μ λ μ€ν€λ§
BIP32μ HD Wallet
BIP32κ° νμνκ² λ λ°°κ²½μ νλμ λΉνΈμ½μΈ μ£Όμλ³΄λ€ μ¬λ¬ κ°μ λΉνΈμ½μΈ μ£Όμλ₯Ό κ°μ§κ³ μ μΆκΈμ νλ©΄ ν¨μ¬ λ μμ νλ€λ κ²μμ λΆν° μΆλ°νμ¬ νμ¬λ λ€μν μ©λλ‘ μ¬μ© κ°λ₯νλ€.
BIP32λ μ²μμΌλ‘ HD μ§κ°μ λν ꡬ쑰λ₯Ό μ μνλλ°, HD μ§κ°μ κ²°μ μ κ³μΈ΅ ꡬ쑰 μ§κ°μΌλ‘ 2μ§ νΈλ¦¬μ²λΌ, λΆλͺ¨ μμ κ΄κ³λ₯Ό μ΄μ©ν΄ λμμ΄ νμμν¬ μ μλ μ§κ°μΌλ‘ BIP32 μ΄μΈμλ BIP39, BIP44λ± μ¬λ¬ λ²μ μ΄ μμΌλ©° BIP39λ‘ λ§λ€μ΄μ§ νλ‘κ·Έλ¨μ λ€λ₯Έ λΈλ‘체μΈμμλ νν μ¬μ©λλ€.
μλ κ·Έλ¦Όκ³Ό κ°μ΄ HD μ§κ°μ νλμ μλμμ νμλλ€.

BIP39μ HD Wallet
μ°λ¦¬κ° νν μλ λλͺ¨λμ BIP39μ μν΄ νμ€ν λμ΄μλ€.
λλͺ¨λμ΄λ λ¨μ΄ μνμ€λ₯Ό μ¬μ©ν λ°©λ²μΌλ‘ λͺ κ°μ λ¨μ΄λ€μ λμ΄μ μ¬μ©μμκ² κΈ°μ΅νκ² ν¨μΌλ‘μ¨ μ΄ λ¨μ΄λ€μ λμ΄μ λμ€μ μ§κ° 볡ꡬμ μ¬μ©λλ€.
λλͺ¨λκ³Ό μλμ μμ±κ³Όμ μ λν΄μ μ μ μμ보μ.
128~256 λΉνΈμ 무μμ μνΈν μνμ€ Sλ₯Ό μμ±νλ€.
128λΉνΈλ₯Ό 32λ‘ λλμ΄μ 4λΌλ κ°μ μ»λλ€. (256λΉνΈλΌλ©΄ 256/32 => 8)
μνμ€ Sλ₯Ό
SHA-256λ₯Ό λ£μ΄ κ²°κ³Ό κ°μ μ»λλ€. (e.g. 011100011001010β¦)μ΄μ μ°λ¦¬λ μ΄ κ²°κ³Όκ°μ 첫 4λΉνΈλ§ μ¬μ©νλ€. (256λΉνΈμλ€λ©΄ 8λΉνΈ)
Sμ λ§μ§λ§μ 3λ²μ 첫 4λΉνΈλ₯Ό μΆκ°νλ€. (e.g. 0111β¦.0111)
μ¬κΈ°μ ν·κ°λ¦¬μ§ λ§μμΌ ν κ²μ μ°λ¦¬λ μ§κΈ μλ³Έ Sμ ν΄μν¨μμ λ£μ Sμ μΌλΆ λ λ€ μ¬μ©νκ³ μλ€λ μ μ΄λ€.
4λ²μ κ²°κ³Όκ°μ SβλΌκ³ νμ. Sβμ11λΉνΈ λ¨μλ‘ λλλ€.
2048 λ¨μ΄λ‘ ꡬμ±λ BIP-39 μμ΄ λ¨μ΄ λͺ©λ‘μμ κ° 11λΉνΈλ§λ€ λ§€μΉλλ λ¨μ΄λ₯Ό λμ΄νμ¬ λλͺ¨λ μ½λλ₯Ό μμ±νλ€.
μλ₯Ό λ€λ©΄ 첫 11λΉνΈκ°
01110000111λΌλ©΄ μμ΄ λ¨μ΄ λͺ©λ‘μ01110000111: 'lion'μ΄λ° μμΌλ‘ κ° λ¨μ΄κ° λ§€μΉλμ΄ μλ€.μ¦, S`μ 128 + 4 = 132λΉνΈμ΄κ³ 132λΉνΈλ₯Ό 11λΉνΈ λ¨μλ‘ λλμμΌλ μ΄ 12κ°μ λ¨μ΄λ₯Ό μ»μ μ μλ€.
μ΄μ λλͺ¨λμ λ§λ€μλ€. κ·Έλ¬λ©΄ λλͺ¨λμ κΈ°λ°μΌλ‘ μλλ₯Ό λ§λλ λ²μ 보μ.
μλλ PBKDF2λΌλ ν¨μλ₯Ό μ¬μ©νμ¬ λ§λ€κ² λλλ° μ΄ ν¨μλ 2κ°μ§ parameterλ₯Ό νμλ‘ νλ€.
ν κ°μ§λ μμμ ꡬν λλͺ¨λ λ¨μ΄λ€μ΄κ³ λλ¨Έμ§ νλλ saltμ΄λ€.
saltλ μ¬μ©μκ° μΆκ°λ‘ μ νλ μνΈλ‘ λ§μ½ μ ννμ§ μλλ€λ©΄ κΈ°λ³Έκ°μΈ mnemonic μΌλ‘ μ€μ λκ³ , λ§μ½ μ¬μ©μκ° μ§μ νλ€λ©΄ κΈ°λ³Έκ°μΈ "mnemonic"μ μΆκ°λμ΄μ§λ€.
μλ₯Ό λ€μ΄ μ¬μ©μκ° "secretkey123"μ΄λ μνΈλ₯Ό μΆκ°νλ€λ©΄ saltλ "mnemonicsecretkey123"μ΄ λλ μμ΄λ€.
PBKDF2λ HMAC-SHA512 μκ³ λ¦¬μ¦μΌλ‘ μ°λ¦¬μ λλͺ¨λ λ¨μ΄λ€κ³Ό saltλ₯Ό μΈμλ‘ μ§μ΄λ£μΌλ©΄
λ΄λΆμ μΌλ‘ 2048 ν΄μ λΌμ΄λλ₯Ό μ¬μ©νμ¬ μ΅μ’ κ²°κ³Ό κ°μΌλ‘ 512λΉνΈ κ°μ μΆλ ₯νκ² λλλ°, μ΄κ² λ°λ‘ μλλ€.
2048λΌμ΄λλ μλ₯Ό λ€μ΄ ν΄μ¬ν¨μ f(x)κ° μκ³ f(1)μ κ²°κ³Όκ°μ΄ 2λΌλ©΄ μ΄ κ²°κ³Όκ°μ λ€μ f(x)μ λ£λλ€.
κ·ΈλΌ 2λΌμ΄λλ₯Ό λλ¦° κ²μ΄κ³ , μ΄κ±Έ 2048 λΌμ΄λλ₯Ό νκ² λ€λ κ²μ΄λ€.
λΉμ°ν μ΄μΌκΈ°μ§λ§ κ°μ λλͺ¨λ λ¨μ΄λ€μ΄μ¬λ saltκ°μ΄ λ€λ₯΄λ€λ©΄ μλ κ°μ λ¬λΌμ§λ€.
BIP44
볡μνν(multicurrency) λ° λ³΅μκ³μ (multiaccount) μ§κ°μ μ€λͺ νλ μΌλ°μ μΈ μ°μ νμ€μ΄λ€.
BIP44λ BIP43μ μ€νμ νμ₯νμ¬ λͺ©μ λ²νΈλ₯Ό 44'λ‘ μ€μ νμ¬ λ³΅μ νν 볡μ κ³μ ꡬ쑰λ₯Ό μ μνλ€.
BIP44μ ꡬ쑰λ₯Ό λ°λ₯΄λ λͺ¨λ HD μ§κ° ꡬ쑰λ νλμ νΈλ¦¬ λΆκΈ°(m/44'/*)λ§ μ¬μ©νμ¬ μλ³λλ€.
BIP44λ 미리 μ μλ λ€μ― κ°μ§ νΈλ¦¬ λ λ²¨λ‘ κ΅¬μ±λ ꡬ쑰λ₯Ό μ§μ νλ€.
λͺ©μ (purpose)
첫 λ²μ§Έ λ λ²¨μΈ λͺ©μ μ νμ 44λ‘ μ€μ λλ€.
μ½μΈ μ’
λ₯ (coin_type) :
μ½μΈ μ’ λ₯λ μνΈννμ μ νμ μ§μ νλ€.
μ΄λ리μμ m/44β/60β, λΉνΈμ½μΈμ m/44β/0β, λͺ¨λ ν
μ€νΈλ·μ m/44β/1βμ΄λ€.
κ³μ (account)
μ¬μ©μλ μ§κ°μ m/44β/0β/0β, m/44β/0β/1β μ²λΌ HD μ§κ°μλ 2κ°μ λΉνΈμ½μΈ κ³μ μ ν¬ν¨ν μ μλ€.
μκ³ (change)
BIP44λ μλ λΉνΈμ½μΈμ μν΄ μ μλμκΈ° λλ¬Έμ μ΄λ리μ μΈκ³μ κ΄λ ¨μ΄ μλ 'νΉμ΄μ '(quirk)μ΄ ν¬ν¨λμλ€.
HD μ§κ°μλ 2κ°μ νμ νΈλ¦¬κ° μλλ° νλλ μ κΈ μ£Όμ μμ±μ©μ΄κ³ λ€λ₯Έ νλλ μμ‘ μ£Όμ μμ±μ©μ΄λ€.
μ΄λ리μμ λΉνΈμ½μΈμ μλ μμ‘ μ£Όμκ° νμ μμΌλ―λ‘ λ¨μ§ 'μ κΈ' κ²½λ‘λ§ μ¬μ©νμ¬ νμ 0μ΄λ€.
μ΄μ λ 벨μ κ°ννμλ§ μ¬μ©νμ§λ§ μ΄ λ 벨μ λΉλ³΄μ νκ²½μμ μ¬μ©ν μ μλλ‘ νμ₯λ 곡κ°ν€λ₯Ό νΈλ¦¬μ κ³μ μμ€μμ λ΄λ³΄λΌ μ μκ² νκΈ° μν΄μ μΌλ° νμμ μ¬μ©νλ€.
μ¬μ©κ°λ₯ν μ£Όμ μΈλ±μ€ (address_index)
νΈλ¦¬μ λ€μ―λ²μ§Έ λ 벨μ μ¬μ© κ°λ₯ν μ£Όμ μΈλ±μ€λ‘ λ§λλ κ²μ΄λ€. μλ₯Ό λ€μ΄ μ£Ό λ©μΈ κ³μ μμ μ΄λ리μ μ§κΈμ μν μΈ λ²μ§Έ μ
κΈ μ£Όμλ m/44'/60'/0'/0/2κ° λ κ²μ΄λ€. μ΄κ²μ HD μ§κ°μμ νμλ level-4μ μμμ΄λ€.
BIP84
BIP84λ κΈ°λ³Έ Segwit P2WPKH μ£Όμμ λν HD μ§κ°μ ꡬνμ μ μνλ€.
μ£Όμ μ νμ μ μΈνλ©΄ BIP44μ μ μ¬νλ€.
Segwitκ³Ό P2WPKH κ°λ μ΄ μ‘°κΈ μ΄λ €μ΄λ°, κ΄λ ¨ κΈμ λ°λ‘ μμ±ν μ μ΄ μμΌλ μλ λ§ν¬μμ μ°Έκ³ νλ©΄ μ’μ κ² κ°λ€.
Last updated