Carteiras HD: BIP32/39/44/84/86

Como uma frase-semente se torna bilhões de chaves.

Carteiras modernas fazem backup de uma única frase-semente e derivam cada chave dela. Vários BIPs definem como.

BIP39: palavras para semente

A carteira gera de 128 a 256 bits de entropia aleatória e adiciona um checksum. O resultado é dividido em pedaços de 11 bits, cada um mapeado a uma de 2.048 palavras, dando de 12 a 24 palavras. As palavras, mais uma frase-senha opcional, passam por PBKDF2-HMAC-SHA512 com 2.048 iterações e sal "mnemonic"+passphrase, produzindo uma semente de 512 bits. Uma frase-senha diferente dá uma carteira completamente diferente.

BIP32: a árvore de chaves

HMAC-SHA512 da semente dá uma chave privada mestre e um chain code de 32 bytes. De qualquer chave, um filho pode ser derivado por índice:

  • Filhos normais (índice abaixo de 231) podem ser derivados da chave pública pai, então uma chave pública estendida (xpub) pode gerar todos os endereços de recebimento sem nenhuma chave privada. Ideal para carteiras só-leitura e lojas.
  • Filhos endurecidos (índice 231 e acima, escritos com ' ou h) precisam da chave privada pai. Impedem que uma chave privada filha vazada mais a xpub exponham o pai.

BIP44/49/84/86: caminhos padrão

Caminhos têm a forma m / purpose' / coin' / account' / change / index.

  • m/44'/0'/0'/0/0: primeiro endereço legacy (1…).
  • m/49'/…: SegWit embrulhado (3…).
  • m/84'/…: SegWit nativo (bc1q…).
  • m/86'/…: Taproot de chave única (bc1p…).

O tipo de moeda 0' é Bitcoin e 1' é testnet. Change 0 é para receber e 1 para o troco. BIP44 também define um limite de lacuna de 20: carteiras param de varrer após 20 endereços não usados seguidos.

Onde falha

Uma frase-semente não diz quais caminhos ou tipos de script foram usados. Restaurar noutra carteira pode mostrar saldo zero até ela varrer o caminho certo. Descritores de saída resolvem isso escrevendo a receita completa.

Nota de segurança

Qualquer um com suas palavras-semente, e a frase-senha se usada, tem suas moedas. Nunca as digite num site.