Glossário / Endereços e chaves
Chave pai
Outros nomes: Chave pública pai, Chave privada pai, Parent key, Parent public key.
- O que é a chave pai?
- A chave pai fica um nível diretamente acima de outra chave na árvore de uma carteira HD, e cada chave estendida carrega quatro bytes que identificam sua própria chave pai por meio de uma impressão digital.
Especificação no BIP-32.
O parentesco no BIP-32 é uma relação, não uma posição hierárquica. A chave mestra é a única chave sem pai, e registra esse fato com uma impressão digital do pai de quatro bytes zero e uma profundidade de 0. Todas as outras nomeiam seu pai nos bytes iniciais de sua própria serialização, e é assim que o software descobre a qual árvore uma chave solta pertence.
Como funciona
Uma chave pai é identificada por uma impressão digital, não pela própria chave. Pegue a chave pública comprimida do pai, aplique o hash com SHA-256 e depois RIPEMD-160, e guarde os quatro primeiros bytes do resultado. Esses quatro bytes ficam na chave estendida de 78 bytes da filha, em uma posição fixa, logo depois do byte de profundidade e antes do índice da filha.
Quatro bytes são 4.294.967.296 valores possíveis, o que faz de uma impressão digital um rótulo, não uma prova. O BIP-32 é explícito ao afirmar que as impressões digitais podem colidir e que as implementações não devem depender delas para segurança. Elas existem para que uma carteira possa ordenar as chaves na árvore correta rapidamente, e qualquer verificação real envolve derivar a chave e comparar o resultado.
O pai também fornece os dois ingredientes que uma derivação precisa: seu código de cadeia e seu material de chave. É por isso que as chaves estendidas viajam em par. Entregue a alguém uma chave pública pai sem o código de cadeia e nenhuma chave filha poderá ser calculada a partir dela.
Onde você vê isso
A impressão digital da chave mestra é o identificador que você encontra com mais frequência, porque tanto os descritores quanto os dispositivos de assinatura a citam.
Um descritor de script de saída a escreve entre colchetes, antes da chave estendida, como em wpkh([1a2b3c4d/84h/0h/0h]xpub.../0/*). A parte entre colchetes informa de qual carteira a chave veio e por qual caminho, para que um assinante que leia o descritor possa saber se está sendo solicitado a assinar com uma chave que realmente possui. As transações de bitcoin parcialmente assinadas do BIP-174 carregam o mesmo par para cada entrada e cada saída, e é isso que permite a uma carteira de hardware decidir offline que uma saída é seu próprio troco e não o endereço de um desconhecido.
É na multiassinatura que isso deixa de ser curiosidade. Uma configuração de dois de três na Sparrow exibe uma impressão digital da chave mestra para cada cosignatário, e reconstruir essa carteira depois exige as três chaves públicas estendidas, além das frases de recuperação. Anotar a impressão digital de cada dispositivo em seu cartão de backup é a forma mais barata de distinguir, anos depois, três cartões de frase de recuperação que de outra forma seriam idênticos, e quem não fez isso passou fins de semana derivando chaves para descobrir qual cartão pertence a qual dispositivo.
Uma última observação prática. Uma carteira restaurada que mostra uma impressão digital desconhecida normalmente não é um backup corrompido, e sim uma frase secreta digitada errado. Uma frase secreta do BIP-39 produz uma chave mestra diferente e, portanto, uma impressão digital diferente, então comparar esse valor curto é uma forma rápida e segura de confirmar que você digitou a frase secreta corretamente antes de ir olhar um saldo.