Glossário / Endereços e chaves
Impressão digital de chave
- O que é uma impressão digital de chave?
- Uma impressão digital de chave são os primeiros 32 bits do Hash160 de uma chave pública, impressos como oito caracteres hexadecimais, e as carteiras a usam para rotular de qual chave um caminho de derivação parte.
Especificação no BIP-32.
Uma impressão digital é um rótulo de largura fixa para uma chave, e sua largura faz parte do formato, não é uma escolha de exibição. O BIP-380 exige exatamente 8 caracteres hexadecimais dentro dos colchetes de um descritor, e seus próprios vetores de teste rejeitam uma impressão digital de sete caracteres, uma de nove caracteres e uma que carrega uma letra fora do hexadecimal. Quando uma carteira se recusa a importar seu descritor, conte primeiro esse campo.
Como funciona
O BIP-32 dá a uma chave estendida duas identidades de comprimentos diferentes, e a impressão digital é a curta. O identificador é o Hash160 da chave pública serializada, RIPEMD-160 sobre SHA-256, com o código da cadeia ignorado, e apenas os primeiros 32 bits desse identificador são chamados de impressão digital. Os outros 128 bits não são descartados: o BIP-32 diz que o identificador completo de 160 bits poderia ser usado internamente, enquanto a forma curta serve apenas como uma maneira rápida de detectar nós pais e filhos, então o software deve estar disposto a lidar com colisões.
A consistência entre um campo de impressão digital e a chave ao seu redor é uma regra de validade, não uma convenção. Uma chave mestra não tem pai e escreve 0x00000000 em seu campo de impressão digital do pai, e o quinto vetor de teste do BIP-32, o conjunto que abrange as chaves que devem ser reconhecidas como inválidas, lista tanto uma xprv quanto uma xpub com profundidade zero e uma impressão digital do pai diferente de zero. O software que importa qualquer uma das duas strings sem reclamar não segue a especificação, o que vale saber antes de entregar a ele uma restauração.
Onde você a vê
As impressões digitais de chave vivem sobretudo em dois formatos legíveis por máquina, descritores de script de saída e transações de bitcoin parcialmente assinadas, e em ambos ficam imediatamente à frente de um caminho de derivação.
O BIP-380 coloca as informações de origem da chave entre colchetes antes da chave e é estrito quanto à largura: exatamente 8 caracteres hexadecimais, depois os passos endurecidos e não endurecidos. Sua lista de expressões inválidas nomeia três falhas desse único campo: deadbef com sete caracteres, deadbeeef com nove e gaaaaaaa começando com uma letra que não é um dígito hexadecimal. As três são rejeitadas de imediato, então uma impressão digital digitada errado custa a você um erro de importação, e não uma carteira que observa em silêncio a ramificação errada.
O BIP-174 emparelha uma impressão digital de 4 bytes com um caminho escrito como inteiros little endian de 32 bits, e para a entrada de chave pública estendida global a contagem desses inteiros deve coincidir com a profundidade que a própria xpub declara. Essa contagem é o que permite a um assinante alinhar um caminho informado com a chave que recebeu, em vez de aceitar o rótulo pela confiança.
Na tela de um dispositivo, os mesmos oito caracteres respondem a uma pergunta: qual frase de recuperação é esta. Eles não revelam nada que possa ser gasto, porque um hash truncado não pode ser transformado de volta em uma chave ou um endereço. Ainda assim, são um identificador, então dois descritores que carregam os mesmos oito caracteres são um vínculo visível entre essas duas ramificações.
Impressão digital de chave vs endereço de bitcoin
Uma impressão digital de chave e um endereço de bitcoin começam no mesmo hash e deixam de ser comparáveis imediatamente depois. O BIP-32 observa que o identificador de uma chave estendida corresponde exatamente aos dados usados nos endereços de bitcoin tradicionais, e então desaconselha escrever esse identificador em base58, porque ele seria lido como um endereço e o software de carteira não é obrigado a aceitar pagamento para a própria chave da cadeia. Uma impressão digital guarda 4 dos 20 bytes do identificador e é escrita em hexadecimal simples, então é curta demais para ser confundida com um destino de pagamento, nem por acidente. Oito caracteres hexadecimais em um descritor dizem em qual chave um caminho começou; um endereço diz para onde os bitcoins podem ir.