2. Carteira Hierárquica Determinística | HD Wallet

Para resolver as falhas das carteiras aleatórias, a comunidade de desenvolvedores do Bitcoin estabeleceu três protocolos padrão em 2012, 2013 e 2014, que são BIP32, BIP39 e BIP44 (BIP, Proposta de Melhoria do Bitcoin), formando a base da arquitetura das carteiras modernas.

Figura 1, BIP32,39,44

Figura 2, Vantagens da HD Wallet

Três. A lógica subjacente da HD Wallet

Inicialmente, a HD Wallet foi criada sob esses três protocolos e, a partir daí, desenvolveu-se e evoluiu gradualmente. Abaixo, descreveremos brevemente como esses três protocolos trabalham juntos.

1. Gerar semente [BIP39]

1) Primeiro, gere um número binário aleatório, geralmente de 128/160/192/224/256 dígitos, os mais comuns são 128 e 256 dígitos, que na verdade é a "fonte da semente", e todo o resto é derivado dessa "fonte da semente".

Número binário aleatório de 128 dígitos:
00001100000111100010010011100101100100010111011101111001110100101001011111100001010011010100010111110001010011100001101000011010
Usar ferramentaGerar o correspondente 32 dígitos hexadecimais
0x0C1E24E5917779D297E14D45F14E1A1A

2) Calcule seu SHA-256 usando ferramentas online e pegue os primeiros 4 dígitos do resultado como código de verificação 0x7

3) Combine o número aleatório com o código de verificação para obter um número binário de 132 dígitos

33 dígitos hexadecimais:
0x0C1E24E5917779D297E14D45F14E1A1A7
132 dígitos binários aleatórios:
000011000001111000100100111001011001000101110111011110011101001010010111111000010100110101000101111100010100111000011010000110100111

4) Divida esses 132 dígitos em grupos de 11, totalizando 12 grupos. Por que 11 dígitos por grupo? Porque o vocabulário BIP39 tem 2048 palavras (2^11 = 2048), depois mapeie esses 12 grupos para 12 mnemonics

5) Use a função do algoritmo PBKDF2-HMAC-SHA512 para converter o "mnemonic" em um número binário de 512 dígitos como semente

Semente (seed) = PBKDF2_HMAC_SHA512(password=Mnemonic, salt="mnemonic"+senha adicional, iterations=2048, outputLen=64 bytes)
Nota:
A. Parâmetro "password" = string de 12 mnemonics conectados por "espaços"
B. A função do algoritmo codificará os 12 mnemonics conectados por espaços em um número binário correspondente em UTF-8, em vez de usar o mapeamento de 132 dígitos binários dos mnemonics
C. O valor do salt = "mnemonic"+senha adicional, sem espaços entre eles
D. O número de iterações é 2048
E. O resultado da saída é 64 bytes, ou seja, 128 caracteres hexadecimais


Mnemonic (separado por espaços):

exército van defesa carregar ciumento verdadeiro lixo reivindicar eco mídia fazer moagem

slat (sem senha adicional):

mnemonic

Use ferramentas online para calcular a semente:

5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570

#比特币技术 #BIP39