2. Portofel determinist ierarhic | Portofel HD
Pentru a rezolva defectele portofelului aleator, comunitatea dezvoltatorilor Bitcoin a stabilit în 2012, 2013 și 2014 trei protocoale standard, și anume BIP32, BIP39, BIP44 (BIP, Propunere de Îmbunătățire Bitcoin), formând astfel baza arhitecturală a portofelelor populare de astăzi.


3. Logica de bază a portofelului HD
Inițial, portofelul HD a fost construit pe baza acestor trei protocoale, iar apoi a evoluat treptat pe această bază. Mai jos vom explica pe scurt cum funcționează împreună aceste trei protocoale.
1. Generați sămânța [BIP39]
1) Mai întâi, generați un număr aleator binar, de obicei 128/160/192/224/256 de biți, cele mai folosite sunt 128 de biți și 256 de biți, acesta este de fapt „sursa sămânței”, iar restul sunt derivate din această „sursă a sămânței”.

Număr aleator de 128 de biți:
00001100000111100010010011100101100100010111011101111001110100101001011111100001010011010100010111110001010011100001101000011010
Folosiți instrumenteGenerați corespunzător 32 de caractere hexazecimale
0x0C1E24E5917779D297E14D45F14E1A1A
2) Folosiți un instrument online pentru a calcula SHA-256 și luați primele 4 caractere ca cod de verificare 0x7
3) Concatenarea numărului aleator cu codul de verificare pentru a obține un număr binar de 132 de biți
33 caractere hexazecimale:
0x0C1E24E5917779D297E14D45F14E1A1A7
Numărul aleator de 132 de biți:
000011000001111000100100111001011001000101110111011110011101001010010111111000010100110101000101111100010100111000011010000110100111
4) Împărțiți cei 132 de biți în grupuri de câte 11, formând 12 grupuri. De ce 11 biți pe grup? Pentru că lista de cuvinte BIP39 conține 2048 de cuvinte (2^11 = 2048), apoi asociați aceste 12 grupuri cu 12 cuvinte cheie

5) Folosiți funcția algoritmică PBKDF2-HMAC-SHA512 pentru a transforma „cuvintele cheie” în numere binare de 512 biți ca sămânță
sămânță (seed) = PBKDF2_HMAC_SHA512(parola=cuvinte cheie, slat="mnemonic"+parolă suplimentară, iterații=2048, outputLen=64 bytes)
Notă:
A. Parametrul „parola” = un șir format din 12 cuvinte cheie separate prin „spații”
B. Funcția algoritmică va codifica cele 12 cuvinte cheie separate prin spații în numere binare corespunzătoare folosind codificarea UTF-8, nu folosind numărul binar de 132 de biți corespunzător cuvintelor cheie
C. Valoarea slat = "mnemonic"+parolă suplimentară, fără spații între ele
D. Numărul de iterații este 2048
E. Rezultatul de ieșire este de 64 de bytes, adică 128 de caractere hexazecimale
Cuvinte cheie (separat prin spații):
armată furgon apărare purta invidios adevărat gunoi revendicare ecou media face crunch
slat (fără parolă suplimentară):
mnemonic
Folosind un instrument online pentru a calcula sămânța:
5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570