2. Portefeuille déterministe hiérarchique | Portefeuille HD

Pour remédier aux défauts des portefeuilles aléatoires, la communauté des développeurs de Bitcoin a établi en 2012, 2013 et 2014 trois protocoles standard, à savoir BIP32, BIP39 et BIP44 (BIP, Bitcoin Improvement Proposal), formant ainsi la base de l'architecture des portefeuilles actuels.

Figure 1, BIP32,39,44

Figure 2, Avantages des portefeuilles HD

Trois. Logique sous-jacente des portefeuilles HD

À l'origine, le portefeuille HD a été établi selon ces trois protocoles, puis a progressivement évolué sur cette base. Nous allons maintenant expliquer brièvement comment ces trois protocoles travaillent ensemble.

1. Générer une graine [BIP39]

1) Tout d'abord, générez un nombre aléatoire binaire, généralement de 128/160/192/224/256 bits, les plus courants étant 128 bits et 256 bits, cela constitue en fait la "source de graine", et tout le reste sera dérivé de cette "source de graine".

Nombre aléatoire binaire de 128 bits :
00001100000111100010010011100101100100010111011101111001110100101001011111100001010011010100010111110001010011100001101000011010
Utiliser l'outilGénérer le correspondant 32 bits hexadécimal
0x0C1E24E5917779D297E14D45F14E1A1A

2) Utilisez un outil en ligne pour calculer son SHA-256 et prenez les 4 premiers chiffres du résultat comme code de vérification 0x7

3) Concaténez le nombre aléatoire avec le code de vérification pour obtenir un nombre binaire de 132 bits

33 caractères hexadécimaux :
0x0C1E24E5917779D297E14D45F14E1A1A7
Nombre aléatoire binaire de 132 bits :
000011000001111000100100111001011001000101110111011110011101001010010111111000010100110101000101111100010100111000011010000110100111

4) Divisez ces 132 bits en groupes de 11, soit 12 groupes. Pourquoi 11 bits par groupe ? Parce que le vocabulaire BIP39 contient 2048 mots (2^11 = 2048), puis mappez ces 12 groupes aux 12 mots de passe correspondants

5) Utilisez la fonction algorithmique PBKDF2-HMAC-SHA512 pour convertir les "mots de passe" en un nombre binaire de 512 bits comme graine

Graine (seed) = PBKDF2_HMAC_SHA512(mot de passe=Mots de passe, salt="mnémotechnique"+mot de passe supplémentaire, itérations=2048, outputLen=64 octets)
Remarque :
A. Paramètre "mot de passe" = chaîne de 12 mots de passe reliés par des "espaces"
B. La fonction algorithmique encode les 12 mots de passe séparés par des espaces en un nombre binaire correspondant en UTF-8, et non en utilisant le nombre binaire de 132 bits associé aux mots de passe
C. La valeur de salt = "mnémotechnique" + mot de passe supplémentaire, sans espaces entre les deux
D. Le nombre d'itérations est de 2048
E. Le résultat de sortie est de 64 octets, soit 128 caractères hexadécimaux


Mots de passe (séparés par des espaces) :

armée fourgon défense porter jaloux vrai ordures revendication écho médias faire croquer

slat (sans mot de passe supplémentaire) :

mnémotechnique

Utilisez un outil en ligne pour calculer la graine :

5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570

#比特币技术 #BIP39