Vai al contenuto
buybitcoinsmart

Glossario / Protocollo e aggiornamenti

Covenant

Che cos'è un covenant?
Un covenant è una regola di spesa che limita dove possono andare i bitcoin in seguito, non solo chi può spostarli, e oggi nessun opcode di Bitcoin Script può imporne uno.

Ogni script sulla catena risponde a una domanda: questa spesa è autorizzata? Un covenant permetterebbe allo script di porre una seconda domanda sulla transazione che lo spende, e le proposte per consentirlo (BIP-119, BIP-118, BIP-345, BIP-347) sono tutte rimaste inattive per anni. Nulla di ciò che possiedi oggi è toccato, ma i prodotti di vault e di eredità che la gente continua a chiedere aspettano proprio questo.

Come funziona

Stato: nessun opcode covenant è attivo sulla mainnet di Bitcoin. Ogni progetto qui sotto è una proposta, e nessuno ha parametri di attivazione integrati in Bitcoin Core.

La capacità che manca ha un nome preciso: introspezione. Quando un nodo esegue uno script, lo script può esaminare firme, hash, timelock e la pila, ma non può leggere gli output della transazione che spende il bitcoin. Questo unico punto cieco è il motivo per cui bitcoin può esprimere «due di queste tre persone devono essere d'accordo» e non può esprimere «questo denaro può andare solo a quell'indirizzo».

Le proposte colmano questa lacuna in due modi diversi, e la differenza tra loro è il cuore del dibattito.

L'approccio a template fissa in anticipo un hash dell'intera transazione di spesa. OP_CHECKTEMPLATEVERIFY funziona così: l'output contiene un hash di 32 byte, e la spesa fallisce a meno che l'hash della transazione coincida con quel valore. È ristretto, è economico da verificare e, poiché l'impegno non può descrivere un altro impegno, la restrizione non può ripetersi all'infinito.

L'approccio a introspezione dà allo script i pezzi e lo lascia fare aritmetica. Combinare OP_CAT con un controllo di firma, o aggiungere OP_CHECKSIGFROMSTACK, permette a uno script di ricostruire dalle parti sulla pila l'hash di firma della transazione e di verificarlo, e a quel punto lo script può pretendere qualsiasi cosa sugli output. È generale ed è ricorsivo: un covenant può pretendere che l'output successivo porti lo stesso covenant.

La ricorsione è l'obiezione che ha rallentato tutto. Dei bitcoin bloccati in una regola che si perpetua da sé potrebbero in linea di principio restare vincolati per sempre, il che solleva domande sulla fungibilità e sugli emittenti che potrebbero rendere obbligatoria quella regola. La controobiezione è che un gruppo di persone può già simulare un covenant prefirmando l'unica spesa consentita e distruggendo la chiave, quindi la capacità esiste in pratica e l'imposizione da parte del consenso toglie soprattutto la necessità di fidarsi del fatto che la chiave sia stata davvero distrutta.

Dove lo vedi all'opera

I covenant sono già in uso su catene che copiano il motore di script di bitcoin, che è il modo più economico per vedere cosa fanno.

Liquid, la sidechain basata su Elements, esegue un tapscript con opcode di introspezione che leggono direttamente gli output della transazione di spesa, e la sua federazione li usa per il suo peg. Chiunque può anche provare gli opcode bitcoin proposti su signet personalizzate prima di decidere se li vorrebbe sulla mainnet.

Sulla mainnet il sostituto è una transazione prefirmata con una chiave eliminata. Un fornitore di vault genera la chiave di deposito, firma l'unico prelievo che concederà mai, poi distrugge la chiave perché non possa essere creata nessun'altra spesa. È un covenant imposto da una promessa invece che dalla rete, e la promessa è esattamente ciò che un vero opcode covenant renderebbe superfluo. Vale la pena saperlo se un servizio ti vende un vault: chiedi quale delle due cose è.

Covenant vs contratto di deposito a garanzia

Un covenant limita la destinazione; un contratto di deposito a garanzia limita i firmatari. Risolvono metà diverse della stessa preoccupazione e solo una delle due è disponibile.

Un contratto di deposito a garanzia è un normale multisig con una terza parte nel quorum, di solito due su tre, e su bitcoin funziona già oggi: un marketplace detiene una chiave, e compratore e venditore possono regolare senza di essa o chiamarla in causa per risolvere una disputa. Ciò che il deposito a garanzia non può fare è vincolare il risultato. Nel momento in cui si forma un quorum di spesa, i bitcoin possono andare ovunque, anche all'arbitro. Un covenant fisserebbe in anticipo la destinazione e toglierebbe del tutto la discrezionalità dell'arbitro dal progetto.

Da non confondere con

Domande frequenti

Posso usare un covenant su bitcoin oggi?

No. Nessun opcode covenant è attivo sulla mainnet. I prodotti che oggi pubblicizzano un comportamento da vault si basano su transazioni prefirmate e su una chiave eliminata, il che è una promessa e non una regola imposta dalla rete.

Perché i covenant sono controversi?

Perché le versioni generali sono ricorsive, cioè un bitcoin potrebbe portare con sé una restrizione che si riattacca a ogni spesa futura. I critici temono bitcoin vincolati in modo permanente; i sostenitori fanno notare che le transazioni prefirmate ne imitano già l'effetto.

Leggi anche

Termini correlati

Altro in Protocollo e aggiornamenti

Leggi questa pagina in inglese