Vai al contenuto
buybitcoinsmart

Glossario / Indirizzi e chiavi

Impronta della chiave

Che cos'è un'impronta della chiave?
Un'impronta della chiave è costituita dai primi 32 bit dell'Hash160 di una chiave pubblica, scritti come otto caratteri esadecimali, e i wallet la usano per indicare da quale chiave parte un percorso di derivazione.

Specificato nel BIP-32.

Un'impronta è un'etichetta a larghezza fissa per una chiave, e la sua larghezza fa parte del formato, non è una scelta di visualizzazione. BIP-380 richiede esattamente 8 caratteri esadecimali tra le parentesi di un descriptor, e i suoi stessi vettori di prova rifiutano un'impronta di sette caratteri, una di nove e una che contiene una lettera fuori dall'esadecimale. Quando un wallet rifiuta di importare il tuo descriptor, conta prima quel campo.

Come funziona

BIP-32 dà a una chiave estesa due identità di lunghezza diversa, e l'impronta è quella corta. L'identificatore è l'Hash160 della chiave pubblica serializzata, RIPEMD-160 su SHA-256, con il chain code ignorato, e solo i primi 32 bit di quell'identificatore prendono il nome di impronta. Gli altri 128 bit non vengono buttati via: BIP-32 afferma che l'identificatore completo di 160 bit potrebbe essere usato internamente, mentre la forma corta serve solo come modo rapido per individuare i nodi padre e figlio, quindi il software deve essere disposto a gestire le collisioni.

La coerenza tra un campo di impronta e la chiave che lo circonda è una regola di validità, non una convenzione. Una chiave master non ha padre e scrive 0x00000000 nel suo campo impronta del padre, e il quinto vettore di prova di BIP-32, l'insieme che copre le chiavi che devono essere riconosciute come non valide, elenca sia una xprv sia una xpub con profondità zero e un'impronta del padre diversa da zero. Il software che importa l'una o l'altra stringa senza obiezioni non segue la specifica, cosa che vale la pena sapere prima di affidargli un ripristino.

Dove la vedi

Le impronte delle chiavi vivono soprattutto in due formati leggibili dalla macchina, i descriptor degli script di output e le transazioni bitcoin parzialmente firmate, e in entrambi stanno subito davanti a un percorso di derivazione.

BIP-380 mette le informazioni sull'origine della chiave tra parentesi quadre davanti alla chiave ed è rigoroso sulla larghezza: esattamente 8 caratteri esadecimali, poi i passaggi hardened e non hardened. Il suo elenco di espressioni non valide nomina tre errori di quel solo campo: deadbef con sette caratteri, deadbeeef con nove e gaaaaaaa che inizia con una lettera che non è una cifra esadecimale. Tutti e tre vengono respinti senza appello, quindi un'impronta scritta male ti costa un errore di importazione e non un wallet che osserva in silenzio il ramo sbagliato.

BIP-174 abbina un'impronta di 4 byte a un percorso scritto come interi little endian di 32 bit e, per la voce globale della chiave pubblica estesa, il numero di quegli interi deve corrispondere alla profondità che la xpub stessa dichiara. È quel numero che permette a un firmatario di confrontare il percorso indicato con la chiave che ha ricevuto, invece di fidarsi dell'etichetta.

Sullo schermo di un dispositivo quegli stessi otto caratteri rispondono a una domanda: quale seed è questo. Non rivelano nulla di spendibile, perché un hash troncato non può essere riconvertito in una chiave o in un indirizzo. Restano comunque un identificatore, quindi due descriptor che portano gli stessi otto caratteri sono un legame visibile tra quei due rami.

Impronta della chiave vs indirizzo bitcoin

Un'impronta della chiave e un indirizzo bitcoin partono dallo stesso hash e smettono di essere confrontabili subito dopo. BIP-32 osserva che l'identificatore di una chiave estesa corrisponde esattamente ai dati usati negli indirizzi bitcoin tradizionali, poi sconsiglia di scrivere quell'identificatore in base58, perché verrebbe letto come un indirizzo e il software del wallet non è tenuto ad accettare pagamenti alla chiave della catena stessa. Un'impronta conserva 4 dei 20 byte dell'identificatore ed è scritta in semplice esadecimale, quindi è troppo corta per essere scambiata per una destinazione di pagamento, nemmeno per errore. Otto caratteri esadecimali in un descriptor dicono da quale chiave è partito un percorso; un indirizzo dice dove è consentito che vadano i bitcoin.

Da non confondere con

Domande frequenti

L'impronta del mio wallet è un segreto?

No, è derivata da una chiave pubblica e non dà a nessuno la possibilità di spendere né di derivare un indirizzo. Resta comunque un identificatore, quindi chi vede gli stessi otto caratteri in due descriptor vede un legame tra quei due rami.

Due chiavi diverse possono avere la stessa impronta?

Sì. Un'impronta è solo di 32 bit, quindi BIP-32 afferma che il software deve essere disposto a gestire le collisioni e che l'identificatore completo di 160 bit è disponibile dove conta l'unicità. Confronta un indirizzo di ricezione, non solo un'impronta, prima di inviare fondi.

Leggi anche

Termini correlati

Altro in Indirizzi e chiavi

Leggi questa pagina in inglese