Output Descriptor

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Gli Output Descriptor, o Output script descriptors, sono stringhe che contengono tutte le informazioni necessarie per consentire a un wallet o a un altro programma di tracciare i pagamenti effettuati o spesi da un particolare script o da un insieme di script correlati (cioè un indirizzo o un insieme di indirizzi correlati, come in un wallet HD).

I Descriptor si combinano bene con miniscript, consentendo a un wallet di gestire il tracciamento e la firma per una maggiore varietà di script. Si combinano bene anche con i PSBT per consentire al wallet di determinare quali chiavi controlla in uno script multisig.

Un Output Descriptor è una stringa di testo che descrive un indirizzo bitcoin e le relative chiavi private. Viene utilizzato principalmente per la gestione dei wallet bitcoin e per facilitare il trasferimento di fondi. Un Output Descriptor può essere utilizzato per rappresentare un singolo indirizzo bitcoin o per rappresentare un intero wallet contenente più indirizzi. In genere, un Output Descriptor è una stringa di testo codificata che può essere facilmente utilizzata dai software per gestire i wallet bitcoin.

Nascono come proposta per rendere più leggibili dall'uomo gli insiemi di scriptPubKeys, insieme a informazioni su come spenderli ("solving"), e opzionalmente anche di chiavi private.

L'obiettivo è quello di risolvere il problema che le chiavi pubbliche, le xpub e le loro versioni a chiave segreta non contengono alcuna informazione sul tipo di script da utilizzare. Storicamente, questo problema è stato affrontato implicando alcuni tipi di script con le chiavi (P2PKH e P2PK, in particolare, e successivamente esteso con P2WPKH e P2SH-P2WPKH).

Tuttavia, questo approccio è:

  • Ambiguo: l'importazione delle chiavi tra le varie versioni del software può non tenere conto di alcuni script.
  • Non scala bene: ogni nuovo tipo di script deve essere preso in considerazione per tutte le chiavi, il che influisce negativamente su approcci di filtraggio come BIP37 e BIP157.
  • Non è flessibile: non c'è un modo semplice per estendere questo sistema alle firme multiple o ad altri script, nonostante questi siano una caratteristica standard in molti software.

L'intento è quello di eliminare del tutto la necessità di importare script e chiavi e di fare in modo che il wallet sia solo un elenco di questi descrittori e dei metadati associati. L'obiettivo è coprire tutti gli script che Bitcoin Core può firmare, essere compatibile con i wallet hardware e BIP174, ed essere facilmente estensibile a nuovi script (comprese le costruzioni multisig più grandi, HTLC, ...) e anche ai futuri soft fork che estendono il linguaggio di scripting.

Non è stato progettato per la massima compattezza o per il recupero degli errori. Tuttavia, le proposte per questi ultimi potrebbero essere descritte in termini di syntactic sugar che si traduce nel linguaggio di questa proposta. Inoltre, non include metadati relativi all'uso di uno script, come la data di nascita o il fatto che sia trattato come una modifica o meno.


aggiornato il 2022-12-11