Vai al contenuto
buybitcoinsmart

Glossario / Indirizzi e chiavi

Percorso di derivazione

Che cos'è un percorso di derivazione?
Un percorso di derivazione è il tragitto nell'albero delle chiavi di un wallet HD, scritto come m/84h/0h/0h/0/0, che indica al software esattamente quale chiave, tra miliardi di chiavi, ricostruire dalla tua frase di recupero.

Specificato nel BIP-44.

Un percorso è una coordinata, non un segreto. Due numeri vicino all'inizio decidono se le tue parole ricostruiscono indirizzi che iniziano con 1, 3, bc1q o bc1p, perché BIP-44, BIP-49, BIP-84 e BIP-86 leggono ciascuno la stessa frase in modo diverso. Annotare il percorso accanto al tuo backup è la differenza tra un ripristino che trova i tuoi bitcoin e uno che segnala zero.

Come funziona

Un percorso si legge da sinistra a destra, un livello per ogni barra, e ogni livello restringe la ricerca. La m all'inizio è la chiave master generata dalla tua frase di recupero. Tutto ciò che segue è un indice, e un apostrofo o una h contrassegna quell'indice come hardened.

Il primo livello è il purpose, ed è il livello che decide che aspetto hanno i tuoi indirizzi.

StandardPercorso dell'accountIndirizzi che produce
BIP-44m/44h/0h/0hlegacy, che iniziano con 1
BIP-49m/49h/0h/0hSegWit annidato, che iniziano con 3
BIP-84m/84h/0h/0hSegWit nativo, che iniziano con bc1q
BIP-86m/86h/0h/0hTaproot, che iniziano con bc1p

Il secondo livello è il tipo di moneta, preso dal registro SLIP-0044, dove bitcoin è 0 e ogni testnet è 1. Il terzo è il numero dell'account, ed è ciò che permette a una sola frase di recupero di contenere un wallet personale a 0h e un wallet aziendale a 1h senza cronologia condivisa. Dopo, l'hardening finisce: il quarto livello è la chain, 0 per gli indirizzi che dai e 1 per il resto, e il quinto è l'indice dell'indirizzo, che sale man mano che ricevi pagamenti.

Quella separazione tra livelli hardened e normali è voluta. Poiché il livello dell'account è hardened, la chiave pubblica estesa per m/84h/0h/0h può essere esportata su uno smartphone o a un commercialista, che poi può derivare ogni indirizzo di ricezione e di resto sotto di essa, ma non può spostarsi lateralmente in un altro account né risalire verso la chiave master.

Il multisig usa un proprio ramo. BIP-48 colloca le chiavi dei cosignatari a m/48h/0h/0h/2h per il SegWit nativo, con il livello hardened finale che indica il tipo di script, così un dispositivo può distinguere un account a firma singola da uno multisig prima di firmare qualsiasi cosa.

Perché questo conta quando compri bitcoin

Il percorso non tocca mai la tua sicurezza. Non cambia nulla su quanto è difficile rubare i tuoi bitcoin, e cambia tutto su se il software che hai davanti riesce a trovarli.

Il guasto che ne deriva è comune e puntualmente terrificante. Compri su un exchange, prelevi verso un dispositivo e i bitcoin arrivano a indirizzi bc1q sotto m/84h/0h/0h. Un anno dopo ripristini le stesse 24 parole in un'altra app che usa il legacy come impostazione predefinita, e il saldo segna 0,00000000 mentre un block explorer mostra ancora il tuo denaro intatto al vecchio indirizzo. Nulla è andato perso. L'app sta cercando nel ramo sbagliato di un albero con quattro miliardi di figli per livello.

Le impostazioni predefinite cambiano tra i wallet che questo sito recensisce. Trezor Suite e Ledger Live presentano ciascuno gli account per tipo di indirizzo e scelgono in silenzio un purpose per te. Electrum chiede quale tipo di script vuoi al momento del ripristino e nasconde un campo di testo libero per il percorso dietro un'opzione avanzata. Sparrow scansiona più percorsi standard contemporaneamente e ti mostra quale ha una cronologia. Nessuno di loro è sbagliato, e nessuno può indovinare cosa ha fatto l'altro.

Due abitudini eliminano del tutto il problema. Scrivi il percorso dell'account e il tipo di indirizzo sulla stessa nota del nome del wallet, e conserva quella nota in un posto raggiungibile senza la frase di recupero, come un gestore di password, dato che da sola non rivela nulla. Poi, prima di fidarti di un ripristino, confronta il primo indirizzo di ricezione che mostra con quello che mostra il tuo dispositivo originale. Se quelle due stringhe coincidono, coincideranno anche tutti gli indirizzi sotto di esse.

Ripristinare 24 parole in Electrum e vedere zero

Un ripristino sul percorso sbagliato si svolge così. Un Trezor Model T è stato configurato con 24 parole, un prelievo dall'exchange è andato al suo primo indirizzo SegWit nativo e il dispositivo ora sta in un cassetto. Mesi dopo la frase viene digitata in Electrum su un portatile.

Electrum chiede il tipo di script prima di scansionare. Scegli legacy p2pkh e il programma deriva m/44h/0h/0h, mostra indirizzi che iniziano con 1, non trova nulla e segnala un wallet vuoto. I bitcoin sono ancora all'indirizzo bc1q, ancora confermati, ancora visibili a chiunque abbia il txid.

La soluzione richiede un minuto. Ripristina di nuovo, scegli SegWit nativo oppure apri il campo avanzato della derivazione e inserisci a mano m/84'/0'/0'. Electrum riscansiona, il saldo compare e l'elenco degli indirizzi inizia con la stessa stringa che il Trezor mostra nella sua scheda di ricezione. Se segna ancora zero e sai che i pagamenti sono andati più avanti nel ramo, alza il gap limit dal valore predefinito 20 prima di supporre che manchi qualcosa.

Nulla in quella sequenza ha messo a rischio i bitcoin, perché un ripristino è un'operazione di lettura. Puoi provare ogni purpose uno dopo l'altro, e l'unico costo è il tempo di ogni nuova scansione.

Percorso di derivazione vs output descriptor

Un percorso dice dove; un descriptor dice dove, cosa e a partire da quale chiave. Il descriptor wpkh([fingerprint/84h/0h/0h]xpub/0/*) contiene lo stesso percorso, più il tipo di script come funzione wrapper, più la chiave estesa stessa, più un checksum che intercetta un carattere digitato male. Consegnare a qualcuno un percorso non gli dice nulla del tuo wallet. Consegnargli un descriptor gli consegna tutta la tua cronologia di indirizzi e ogni indirizzo futuro di quel ramo, ed è per questo che uno è sicuro da inviare per email e l'altro no.

Da non confondere con

Domande frequenti

Come trovo il percorso di derivazione del mio wallet?

Controlla nei dettagli dell'account o del keystore del wallet, dove di solito compare accanto alla chiave pubblica estesa. Se non è indicato, lo dice il formato degli indirizzi: gli indirizzi che iniziano con 1 sono BIP-44, quelli con 3 sono BIP-49, quelli con bc1q sono BIP-84 e quelli con bc1p sono BIP-86.

Il wallet ripristinato mostra un saldo pari a zero. I miei bitcoin sono spariti?

Quasi certamente no. La causa abituale è un ripristino sul percorso sbagliato, per cui il software genera un insieme diverso di indirizzi. Controlla il vecchio indirizzo su un block explorer, poi ripristina di nuovo scegliendo il tipo di indirizzo che vi corrisponde.

Il percorso di derivazione influisce sulla sicurezza dei miei bitcoin?

No. Ogni percorso porta a chiavi di identica robustezza, e la scelta influisce solo sul formato degli indirizzi, sulla dimensione delle transazioni e su quale software può trovare i tuoi fondi. I percorsi SegWit nativo e Taproot producono transazioni di spesa meno costose, il che è una questione di commissioni e non di sicurezza.

Leggi anche

Termini correlati

Altro in Indirizzi e chiavi

Leggi questa pagina in inglese