O fingerprint do BIP32 são os primeiros 4 bytes do HASH160 de uma chave pública comprimida. HASH160 significa aplicar SHA-256 e depois RIPEMD-160, duas funções que geram resumos numéricos de dados. Os 32 bits resultantes costumam aparecer como 8 caracteres hexadecimais, com números e letras. O chain code, dado adicional usado para derivar outras chaves, não entra nesse identificador curto.
Imagine ter registros de várias carteiras e precisar diferenciá-las. O fingerprint funciona como uma etiqueta calculada a partir da chave pública em uma codificação precisamente definida. Não é um hash direto das palavras de backup nem da chave privada. A etiqueta sozinha não é um endereço de recebimento, não assina pagamentos e não permite recuperar as chaves. Anotá-la não substitui um backup que realmente possa restaurar a carteira. [1]
O BIP32 cria uma árvore de chaves: outras chaves são derivadas da chave mestra, como galhos de um tronco comum. O registro de uma chave pública estendida, xpub, ou privada, xprv, contém o fingerprint de sua chave pai, um nível acima. A chave mestra não tem uma chave pai, então esse campo contém 00000000. Isso não é seu próprio fingerprint. Um aplicativo pode mostrar o identificador da própria chave mestra; antes de comparar, descubra qual valor você está lendo. [1]
A chave mestra do vetor de teste público BIP32 número 1 tem o fingerprint próprio 3442193e. Mesmo assim, o campo da chave pai em seu xpub mestre contém 00000000. Não há contradição: um valor descreve a própria chave, o outro seu pai inexistente. Um vetor de teste é um conjunto publicado de entradas e resultados esperados para verificar programas. Nunca use esses dados públicos como base de uma carteira com seu dinheiro. [1]
PSBT é um pacote de dados de uma transação que pode ser passado a um dispositivo para assinatura. Segundo o BIP174, ele associa o fingerprint mestre a um caminho de derivação: as instruções para chegar a uma chave pública específica. Um Output Descriptor, descrição textual das chaves e regras de gasto, também pode registrar a origem de uma chave. Ao conferir o troco de um pagamento, o dispositivo não pode se contentar com um identificador igual. Precisa derivar e comparar a chave real e as regras correspondentes, para não confundir uma saída alheia com uma própria. [2] [3]
Um identificador curto economiza espaço, mas tem um intervalo limitado: 32 bits permitem apenas 4294967296 valores. Chaves diferentes podem, portanto, ter o mesmo fingerprint. Isso se chama colisão, e o BIP32 exige explicitamente que os programas saibam lidar com ela. A coincidência não verifica todas as contas, caminhos de derivação ou tipos de script, isto é, as regras de gasto. Também não prova que você tem as chaves privadas necessárias. [1] [3]
Primeiro confirme que compara o mesmo tipo de identificador no mesmo nível da árvore. Uma diferença pode indicar outra seed, a base secreta das chaves, ou outra passphrase, uma senha adicional. Antes de concluir isso, descarte uma confusão entre os campos mestre e pai. Complemente uma coincidência verificando endereços conhecidos, caminhos de derivação e regras de gasto. O fingerprint é uma conferência parcial útil, mas não substitui um backup bem guardado nem um procedimento de recuperação verificado. [1] [3]
Para ter uma visão mais completa, leia este verbete junto com HD Wallet, PSBT, BIP39 passphrase, Output Descriptor. Também há referências a este verbete em SeedQR.