Protocollo · Avanzato
Tapscript: Script Bitcoin con Taproot
Tapscript (BIP342) è il nuovo linguaggio di scripting di Bitcoin introdotto con Taproot nel 2021. Non è un linguaggio completamente nuovo — estende Bitcoin Script con nuovi opcode, corregge inefficienze storiche e si integra profondamente con il Merkelized Abstract Syntax Tree (MAST) per rendere i contratti Bitcoin più efficienti, privati e flessibili.
Differenze da Bitcoin Script legacy
| Caratteristica | Legacy Script | Tapscript |
|---|---|---|
| Firma richiesta | ECDSA (secp256k1) | Schnorr (BIP340) |
| Multisig n-di-m | OP_CHECKMULTISIG: O(n) verifiche | OP_CHECKSIGADD: O(n) ma senza bug NULLDUMMY |
| Complessità contratti | Tutti i rami esposti nella spend transaction | Solo il ramo usato rivelato — altri nascosti nel MAST |
| Opcode futuri | Opcode sconosciuti = FAIL (rigido) | OP_SUCCESS: opcode sconosciuti = SUCCESS (upgrade friendly) |
| Limite dimensione stack | 1.000 elementi, 520 byte/elemento | Stessi limiti ma con Schnorr più efficiente |
| Script leaves | Non esiste concept | Ogni leaf è uno script separato nel MAST tree |
OP_CHECKSIGADD: multisig efficiente
Il vecchio OP_CHECKMULTISIG aveva un bug: consumava un elemento in più dallo stack (il famoso 'extra null'). Questo era un bug noto ma non correggibile senza hard fork.
OP_CHECKSIGADD risolve elegantemente: invece di verificare tutte le firme in una volta, aggiunge 1 al counter se la firma è valida. Permette script n-di-m senza il bug.
Esempio 2-di-3: '<sig_A> <sig_B> <pubkey_A> OP_CHECKSIGADD <pubkey_B> OP_CHECKSIGADD <pubkey_C> OP_CHECKSIGADD OP_2 OP_EQUAL'
Vantaggio combinato con Schnorr: per il caso cooperativo (tutti i firmatari disponibili), MuSig2 aggregato con Schnorr produce una singola firma — size e fee identici a un singolo firmatario. OP_CHECKSIGADD è usato solo per il caso non cooperativo.
MAST e Tapscript: privacy dei contratti
Problema legacy: in un contratto P2SH con multiple condizioni di spesa (es. dopo 1 anno può spendere con 1 chiave; oppure con 2 di 3 chiavi sempre; oppure con preimage hash), tutta la struttura del contratto viene rivelata quando si spende.
Soluzione MAST: ogni condizione è una leaf in un Merkle tree. Quando spendi, riveli solo la leaf usata + il Merkle proof che quella leaf è nel tree. Le altre condizioni rimangono nascoste.
Esempio: un vault con 3 condizioni di recovery → rivela solo quella usata. Un osservatore esterno non sa quante altre condizioni esistevano.
Footprint on-chain minore: paghi solo per la leaf usata, non per tutto il contratto. Contratti complessi diventano economicamente accessibili.
OP_SUCCESS: preparare Bitcoin per il futuro
Come funziona OP_SUCCESS
In Tapscript, alcuni opcode sono designati come OP_SUCCESS (80+ valori riservati).
Un nodo che incontra OP_SUCCESS valida lo script come TRUE immediatamente — senza eseguire il resto.
I vecchi nodi (pre-upgrade) vedono OP_SUCCESS e approvano. I nuovi nodi (post-upgrade) implementano la logica reale dell'opcode.
Risultato: futuri opcode possono essere aggiunti come soft fork senza richiedere che tutti i nodi aggiornino immediatamente.
Questo è il meccanismo proposto per future aggiunte come OP_CAT (concatenazione), OP_CHECKTEMPLATEVERIFY (covenant), e altri opcode che permetterebbero contratti ancora più sofisticati su Bitcoin.
Use case di Tapscript
Vault con timelock
Spesa normale: chiave singola. Se compromessa: dopo 1 settimana, chiave di recovery può spostare i fondi. Solo la condizione usata viene rivelata.
HTLC ottimizzati (Lightning)
Hash Time-Locked Contracts usati in Lightning possono essere scritti in Tapscript con il caso cooperativo come key path (Schnorr) — fee minime per chiusure collaborative.
Multisig istituzionale
5-di-7 per approvazione normale, con 2-di-7 se timeout. Ogni condizione in una leaf separata. On-chain visibile solo il path usato.
Eredità / Dead man's switch
Spesa normale: chiave primaria. Se non si spende entro 1 anno: chiave erede può accedere. Script con OP_CHECKSEQUENCEVERIFY come timelock relativo.
Protocollo e contratti ogni settimana
Il Report Fides Bitcoin analizza il protocollo, gli upgrade e l'ecosistema di sviluppo di Bitcoin — in italiano, ogni luned��.
Iscriviti gratis →