Vai al contenuto
buybitcoinsmart

Glossario / Indirizzi e chiavi

Descrittore di output

Noto anche come Descrittore, Descrittore di script, Output descriptor.

Che cos'è un descrittore di output?
Un descrittore di output è una singola riga di testo che indica quale tipo di script, quali chiavi e quale ramo di derivazione deve usare un wallet, con un checksum in fondo.

Specificato nel BIP-380.

I descrittori esistono perché una chiave estesa da sola è ambigua. La stessa xpub può generare indirizzi legacy, SegWit annidati, SegWit nativi o Taproot, e solo la funzione che la racchiude risolve la questione. Bitcoin Core crea wallet di descrittori per impostazione predefinita dalla versione 23.0, pubblicata ad aprile 2022, e un backup multisig senza il suo descrittore spesso è irrecuperabile.

Come funziona

Un descrittore è una funzione applicata a un'espressione di chiave, seguita da un cancelletto e da otto caratteri di checksum. La funzione indica lo script: pkh per legacy, sh(wpkh(...)) per SegWit annidato, wpkh per SegWit nativo, tr per Taproot e wsh(sortedmulti(2,...)) per un vault 2-di-3.

L'espressione di chiave porta il resto. Le parentesi quadre contengono l'origine, cioè l'impronta digitale della chiave master e il percorso usato per raggiungere quella chiave, come in [1a2b3c4d/84h/0h/0h]. Segue la chiave estesa, poi un suffisso come /0/* dove l'asterisco è un carattere jolly che rappresenta a turno ogni indice di indirizzo. Un descrittore con un carattere jolly si dice con intervallo, e chiedergli gli indirizzi da 0 a 999 è una sola chiamata RPC invece di mille importazioni.

Ricezione e resto sono due descrittori, non uno, ed è per questo che i wallet li importano in coppie che terminano in /0/* e /1/. Il BIP-389 ha messo ordine con la notazione multipath, scrivendo la coppia come /<0;1>/ in un'unica stringa.

Il checksum è piccolo e cruciale. Il BIP-380 definisce un codice di otto caratteri sul testo del descrittore, pensato per intercettare il tipo di danno che capita davvero a una stringa lunga: un carattere scambiato, un incollaggio troncato, un a capo inserito da un client di posta. Bitcoin Core rifiuta qualsiasi descrittore il cui checksum non corrisponda, e getdescriptorinfo calcola quello corretto per una stringa che hai digitato tu.

Dove lo vedi

I descrittori sono il formato di backup per tutto ciò che è più complesso di un singolo seed. Sparrow, Nunchuk e Specter ne esportano uno per ogni wallet che creano, e un Coldcard scrive il descrittore su una microSD durante la configurazione del multisig, così che la disposizione possa essere ricostruita senza il software coordinatore originale.

Bitcoin Core è dove sono diventati standard. La versione 0.17.0, pubblicata a ottobre 2018, li ha introdotti per la scansione e la generazione di indirizzi; importdescriptors e listdescriptors li hanno resi la lingua nativa del wallet; e il wallet di descrittori è ora l'unico tipo che il software crea. Ripristinare un wallet Core da un descrittore più una nuova scansione è un percorso supportato, e uno che sopravvive alla reinstallazione del software da zero.

Con un semplice wallet a firma singola di solito puoi fare a meno di vederne mai uno, perché la tua frase di recupero e il percorso standard bastano. Con il multisig, il descrittore è la metà mancante del backup: tre frasi di recupero senza alcuna registrazione del tipo di script, dell'ordine delle chiavi o dell'origine di ciascun cofirmatario possono lasciarti incapace di ricostruire gli indirizzi in cui si trovano i tuoi bitcoin.

Descrittore di output vs chiave estesa

Una chiave estesa è un ingrediente e un descrittore è la ricetta. La xpub dice al software quali chiavi esistono; il descrittore gli dice cosa costruire con esse e da dove iniziare a contare. È per questo che importare una xpub in due app diverse può produrre due elenchi di indirizzi diversi, mentre importare lo stesso descrittore non può. Entrambi espongono la stessa privacy: chi detiene l'uno o l'altro può enumerare il tuo ramo, quindi un descrittore merita la stessa cura della chiave che contiene.

Da non confondere con

Domande frequenti

Devo fare il backup di un descrittore oltre che della mia frase di recupero?

Per un normale wallet a firma singola su un percorso standard, la frase di recupero basta. Per il multisig, o per qualsiasi configurazione personalizzata, fai il backup anche del descrittore, perché le frasi da sole non registrano il tipo di script, le chiavi dei cofirmatari né l'ordine delle chiavi.

È sicuro condividere un descrittore?

Solo con qualcuno a cui affideresti l'intera cronologia delle tue transazioni. Un descrittore che contiene una chiave pubblica estesa permette a chi lo detiene di derivare ogni indirizzo di quel ramo e di osservarlo per sempre, anche se non gli consente mai di spendere.

Termini correlati

Altro in Indirizzi e chiavi

Leggi questa pagina in inglese