2. Portfel hierarchicznie deterministyczny | Portfel HD

Aby rozwiązać problemy losowych portfeli, społeczność deweloperów Bitcoin w 2012, 2013 i 2014 roku ustanowiła trzy standardowe protokoły: BIP32, BIP39, BIP44 (BIP, Bitcoin Improvement Proposal), które ostatecznie stały się podstawą architektury obecnych portfeli.

Rysunek 1, BIP32,39,44

Rysunek 2, zalety portfela HD

Trzy. Podstawowa logika portfela HD

Początkowo portfel HD został stworzony na podstawie tych trzech protokołów, a następnie stopniowo rozwijał się i ewoluował. Poniżej krótko opiszemy, jak te trzy protokoły współpracują ze sobą.

1. Generowanie sekwencji [BIP39]

1) Najpierw wygeneruj losową liczbę binarną, zazwyczaj 128/160/192/224/256 bitów, powszechnie używaną jest 128 bitów i 256 bitów, to właściwie jest „źródło sekwencji”, a wszystkie kolejne są wyprowadzane na podstawie tego „źródła sekwencji”.

128-bitowa liczba losowa w postaci binarnej:
00001100000111100010010011100101100100010111011101111001110100101001011111100001010011010100010111110001010011100001101000011010
Użyj narzędziWygeneruj odpowiadające 32 bity szesnastkowe
0x0C1E24E5917779D297E14D45F14E1A1A

2) Użyj narzędzi online do obliczenia jego SHA-256 i weź pierwsze 4 znaki jako kod kontrolny 0x7

3) Połącz liczbę losową z kodem kontrolnym, aby uzyskać 132-bitową liczbę binarną

33 znaki szesnastkowe:
0x0C1E24E5917779D297E14D45F14E1A1A7
132-bitowa liczba losowa w postaci binarnej:
000011000001111000100100111001011001000101110111011110011101001010010111111000010100110101000101111100010100111000011010000110100111

4) Podziel te 132 bity na grupy po 11, razem 12 grup. Dlaczego po 11 bitów? Ponieważ słownik BIP39 zawiera 2048 słów (2^11 = 2048), a następnie przypisz te 12 grup do 12 fraz pamięci.

5) Użyj funkcji algorytmu PBKDF2-HMAC-SHA512, aby przekształcić „frazy pamięci” w 512-bitową liczbę binarną jako sekwencję

sekwencja (seed) = PBKDF2_HMAC_SHA512(hasło=fraza pamięci, sól="fraza pamięci"+dodatkowe hasło, iteracje=2048, outputLen=64 bajty)
Uwaga:
A. Parametr „hasło” = ciąg 12 fraz pamięci połączonych spacjami
B. Funkcja algorytmu zamieni 12 fraz pamięci połączonych spacjami na odpowiadające im liczby binarne w kodowaniu UTF-8, a nie użyje mapy fraz pamięci 132-bitowej
C. Wartość soli = "fraza pamięci"+dodatkowe hasło, bez spacji między nimi
D. Liczba iteracji wynosi 2048
E. Wynik wyjściowy to 64 bajty, czyli 128 znaków szesnastkowych


Fraza pamięci (połączona spacjami):

armia furgonetka obrona nosić zazdrości prawda śmieci roszczenie echo media robić chrupanie

sól (bez dodatkowego hasła):

fraza pamięci

Użyj narzędzi online, aby obliczyć sekwencję:

5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570

#比特币技术 #BIP39