Il codice di operazione CheckSequenceVerify è un'interessante funzionalità Bitcoin che apre le porte a script avanzati che ci consentono di effettuare pagamenti sicuri controllati da valori temporali programmabili.
UUna delle funzioni più utili che ha Bitcoin Script Sono la blocchi temporali o TimeLock, codice operativo (OP_CODE) CheckSequenceVerify (CSV). Questo, insieme ad altri codici di blocco, lo rende possibile Bitcoin può essere utilizzato come moneta digitale programmabile.
El CheckSequenceVerify è un blocco temporale relativo che opera a livello di script. Questo ci consente di essere in grado di definire il momento esatto in cui terminerà un blocco su una determinata transazione. E sebbene questa sia una caratteristica che faceva parte di soft fork del BIP 68, non è stato fino a quando BIP 112 dove è stato veramente aggiunto al sistema Bitcoin.
L'utilità CheckSequenceVerify abilita funzionalità avanzate per sistemi di costruzione come canali di pagamento de Rete Lightning (LN). Inoltre apre le porte alla creazione di funzionalità avanzate per la gestione decentralizzata dei fondi, utili per scambi decentralizzati (DEX) o servizi di scambio P2P assicurazione.
Allo stesso modo, anche se il modo di operare CheckSequenceVerify (CSV) è abbastanza simile a quello di CheckLockTimeVerify (CLTV), in CSV lo stack superiore viene controllato con il campo di input, invece di controllare l'ora come nel caso di CLTV. In questo modo possiamo calcolare il tempo in base al numero di blocchi che sono stati generati dopo la conferma della transazione. Cioè, i blocchi temporali relativi come CheckSequenceVerify possono contrassegnare una transazione come non valida. E per questo monitorano che sia trascorso l'intervallo di tempo stabilito da quando sono state confermate le precedenti uscite della transazione.
In parole più semplici, i relativi blocchi temporali ci consentono di definire esattamente il tempo che deve trascorrere prima che una transazione possa essere confermata. A differenza dei blocchi temporali assoluti che definiscono il momento esatto (numero di blocco o data e ora) in cui terminerà il blocco sulla transazione.
Come funziona CheckSequenceVerify (CSV)?
Blocchi temporali a livello di script come CheckSequenceVerify (CSV) operano insieme ai blocchi a livello di transazione, quindi questi ultimi sono importanti quando si applica un blocco CSV. Questo perché nei blocchi CSV gli script controllano il blocco della transazione. Per fare ciò, verificano che detta transazione sia bloccata e utilizzano questi blocchi sulle transazioni come garanzia dell'età che indica che è trascorso il tempo stabilito.
Nel BIP 112 di Bitcoin, CheckSequenceVerify è descritto come un codice operativo che fornisce una nuova definizione al comando OP_NOP3 esistente. Questo aggiornamento consente di bloccare una transazione a livello di script in base all'età o all'età dell'output speso. Questa funzionalità viene eseguita insieme a BIP 68. In questo modo, può anche impedire che una transazione venga inclusa in un blocco. Questo fino alla scadenza del tempo o dell'anzianità stabilita.
Quando il blocco CSV è controllato con il valore nSequence stabilito, viene verificato se l'età minima della produzione che si spende è già stata raggiunta. Se non ancora soddisfatti, i percorsi di esecuzione dello script che includono il blocco CSV possono essere convalidati. Pertanto la transazione non può essere inclusa in un blocco finché la condizione non viene soddisfatta.
Pertanto, quando viene chiamato il codice operativo CSV, lo script fallisce a meno che il numero di sequenza nella transazione non indichi che è già trascorso un intervallo di tempo nel blocco temporale relativo, che è maggiore o uguale a l'indicatore del codice operativo CSV. Garantendo così che la transazione possa essere inclusa in un blocco valido solo una volta scaduto o scaduto il tempo di blocco.
Quando questo codice operativo è implementato, CheckSequenceVerify consente di impostare blocchi sulle transazioni con un file fino a un massimo di 65.535 blocchi. Ma puoi anche impostare questo blocco su un file massimo fino a 65.535 * 512 secondi. D'altra parte, questi blocchi sono molto utili quando si stabiliscono blocchi temporali relativi su transazioni che non sono state confermate o trasmesse alla rete. Poiché CSV consente la creazione di transazioni intelligenti definendo e stabilendo in anticipo tutte le istruzioni necessarie per la loro esecuzione. In questo modo abbiamo la garanzia e la sicurezza che detto contratto o transazione avverrà solo secondo l'ordine stabilito. Tutto questo indipendentemente da quando inizia a funzionare.
Implementazioni di CheckSequenceVerify (CSV)
L'implementazione del codice operativo OP_CSV consente alle transazioni sulla blockchain di avere una data di scadenza relativa. Una proprietà che a sua volta consente di archiviare le transazioni a tempo indeterminato. Finché rimangono le condizioni di blocco temporale inizialmente stabilite. Al contrario accadrebbe se si utilizzasse il codice di operazione OP_CLTV, con il quale l'intera catena di transazioni avrebbe una scadenza per l'esecuzione e la scadenza.
Quindi, quando OP_CSV viene utilizzato per concatenare le transazioni attraverso i tempi di blocco relativi, è possibile creare un percorso del codice accessibile solo dopo che è trascorso l'intervallo di tempo impostato. Cioè, dopo che gli output che vengono spesi sono stati confermati. Consentire la creazione e l'applicazione di funzioni aggiuntive che rendono la rete molto più attraente. Ad esempio, l'implementazione di contratti con scadenza o la possibilità di avere praticamente la caratteristica di riorganizzazione della filiera o invalidazione retroattiva. Sebbene sia quasi impossibile eseguire su una blockchain, altre applicazioni simili come protocolli di custodia o contratti a tempo determinato, canali di pagamento a due vie y rete di illuminazione.
Quanto sai, Cryptonuta?
L'esistenza di CheckSequenceVerify è fondamentale per la rete Lightning?Certo!
Uno dei requisiti necessari per il funzionamento di Lightning Network è la funzione CheckSequenceVerify, un'esigenza descritta nel white paper di Lightning Network, soprattutto per evitare situazioni in cui una delle parti possa sottrarre fondi dal sistema.
Casi d'uso CheckSequenceVerify (CSV)
Esaminiamo ora alcuni casi d'uso che CSV ci consente all'interno di Bitcoin grazie alla sua creazione:
Creazione di contratti con scadenza
Con CSV è possibile stipulare contratti a tempo determinato o scadenza. In questi contratti è possibile definire varie condizioni che inizieranno quando una transazione inizia e diventa effettiva. Ad esempio: per effettuare un deposito cauzionale tra 2 o più persone, che scade automaticamente dopo 30 giorni dalla sua esecuzione, le parti coinvolte (María, Pedro e Juan) possono creare un indirizzo multi-firma con le seguenti condizioni:
- I fondi possono essere recuperati ogni volta che vuoi, utilizzando 2 delle 3 firme autorizzate. Questi possono essere combinati in qualsiasi modo (María e Pedro, Pedro e Juan, María e Juan).
- Maria può firmare da sola e utilizzare i fondi solo dopo 30 giorni dalla transazione.
Questo blocco temporale relativo inizierà fino alla conferma della transazione all'indirizzo di deposito.
Crea protezioni di annullamento retroattivo
Mentre per motivi di sicurezza e protezione, la blockchain è immutabile una volta che sono stati aggiunti dati e informazioni. Ma ci sono molti casi in cui l'ideale è poter modificare o annullare un contratto una volta stabilito. Tuttavia, sebbene non sia possibile eseguire direttamente un file invalidazione retroattiva una volta che i dati sono stati confermati all'interno della blockchain, a riorganizzazione della catena. Sebbene questa funzione sia anche particolarmente difficile da fare e piuttosto costosa.
Tuttavia, tramite il codice di operazione CSV è possibile costruire script con più rami per l'esecuzione delle operazioni. Laddove, se uno o più di questi sportelli sono ritardati o non adempiuti, viene creato uno spazio in cui è possibile aggiungere una condizione per l'annullamento del contratto originario, che consente la spesa delle uscite. Annullamento della filiale in cui viene stabilita la condizione non soddisfatta. Impedendo così la trasmissione della transazione alla rete. In caso contrario, il contratto seguirà il corso originariamente stabilito.
Creazione di contratti HTLC (Hash Time Locked Contracts)
Una delle funzioni più importanti del CSV è la creazione del file Contratti Hash Time Locked o HTLC (Hash Time Locked Contracts). È grazie a questi contratti che è possibile realizzare un sistema che permette a due utenti di creare un canale di pagamento. Uno in cui la parte ricevente deve creare una prova crittografica valida per rilasciare il pagamento trattenuto dal contratto.
Questa funzione è ciò che consente, ad esempio, di creare canali di pagamento sicuri tra due utenti. Questi canali sono in grado di eseguire operazioni on-chain (nella stessa catena) e cross-chain (tra due catene diverse). In questo modo, gli HTLC consentono l'esecuzione di un meccanismo sicuro Swap atomici.
Ma non solo, gli HTLC sono anche ciò che rende possibile il funzionamento sicuro della rete Lightning. Dimostrando così l'impatto e l'utilità dei CSV in tutto l'ecosistema Bitcoin.