₿itcoinItaliaNetwork 

OP_CAT

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

OP_CAT è uno degli opcode del linguaggio Bitcoin Script.

Il nome fa riferimento a CAT, abbreviazione di "concatenate" (concatenare in italiano), poiché questo operatore consente di unire due elementi all'interno di uno script.

Vulnerabilità e disabilitazione

Inizialmente introdotto nelle prime versioni, Satoshi Nakamoto lo ha disabilitato nel 2010 a causa di potenziali vulnerabilità sfruttabili presenti nelle implementazioni originali che minacciavano la sicurezza della rete Bitcoin.
Ad esempio, OP_CAT, se combinato con OP_DUP (duplicato) e utilizzato ripetutamente per duplicare un valore anche inizialmente di 1 solo byte nello stack, poteva causare un'eccessiva utilizzazione della memoria del nodo, consentendo un potenziale attacco Denial of Service.

Dato che OP_CAT è stato disabilitato, qualsiasi script che lo includa renderà la transazione non valida indipendentemente dal contesto.

Rinnovato interesse

Recentemente c'è stato un rinnovato interesse per l'operatore OP_CAT e una sua possibile riabilitazione, per diversi motivi:

  • Il problema relativo alla vulnerabilità è stato mitigato imponendo un limite di 520 byte sugli elementi dello stack
  • la combinazione di OP_CAT con le firme di Schnorr, introdotte in Bitcoin con il softfork taproot, consentono di implementare negli script bitcoin diversi casi d'uso.

OP_CAT potrebbe aprire la strada a interessanti applicazioni basate sugli script Bitcoin, come:

  • Covenant più complessi e introspettivi: op_checksig consente di simulare la firma di un pezzo di dati nello stack. Ciò significa che con OP_CAT e SHA256 possiamo aggiungere elementi di testo chiaro allo stack, unirli in un hash e confrontarli con una firma predefinita che contiene un covenant. Ad esempio, la firma e il risultato dell'hash corrispondono solo se la transazione costruita rispetta le restrizioni di spesa. Questo permette di aggiungere molte funzionalità espressive alle transazioni Bitcoin.
  • Verifica delle Merkle proof (prove di Merkle). Poiché le Merkle proof richiedono la concatenazione dell'hash di due nodi foglia, che vengono quindi nuovamente hashati, per verificare una prova di Merkle data un percorso di Merkle, dobbiamo avere OP_CAT. Con la verifica delle Merkle proof possiamo creare cose come ponti di client leggeri senza fiducia da e verso Bitcoin, migliorando la sicurezza L2 per sidechain multisig esistenti e opzioni custodial.
  • Vault (Casseforti). OP_CAT facilita la creazione di covenant ricorsivi attraverso meccanismi come lo switch di valore e il preimage della transazione, utili per implementare funzionalità di tipo vault.

Un argomento contro OP_CAT è che da solo non è sufficiente per realizzare appieno molte delle funzioni di calcolo generico che si potrebbero desiderare da Bitcoin.

Alcuni altri op_codes che sono stati discussi sono op_ctv (che confronta gli output di una transazione con un hash dato e richiede che siano uguali), op_csfs (che consente la verifica di qualsiasi firma su qualsiasi messaggio).
La presenza di questi op_codes potrebbe notevolmente agevolare lo sviluppo e la complessità dei covenant e delle applicazioni costruibili su Bitcoin; tuttavia, sono significativamente più complessi e devono affrontare metodologie di approvazione politica più rigorose rispetto a OP_CAT.


aggiornato il 2024-05-02