Bitcoin è una soluzione in continua evoluzione. Sono decine, se non centinaia, gli sviluppatori, matematici ed esperti di crittografia al lavoro da ormai un decennio sul codice sorgente della regina delle criptovalute.
Read this article in the English version here.
Negli ultimi anni sono state implementate diverse migliorie nel protocollo Bitcoin. Fra esse c’è SegWit, che ha poi permesso la creazione di Lightning Network. Tra le altre migliorie che dovrebbero venir implementate in futuro troviamo anche le firme di Schnorr e MAST. Seguiranno poi le Confidential Transaction sfruttando le BulletProofs, già attive su monero e Taproot.
Il protocollo Taproot, proposto da Gregory Maxwell, permette di espandere le funzionalità e flessibilità degli smart contract (chiamati script) sulla blockchain di bitcoin. Non solo, Taproot permette anche di migliorare la privacy degli utenti ed in generale di tutte le transazioni, dal momento che il protocollo permette di rendere indistinguibili anche i più complessi smart contract dalle comuni transazioni sulla rete. E’ un’evoluzione nonché possibile implementazione del protocollo MAST.
Summary
Taproot: l’evoluzione di MAST
Ma cos’è MAST? E qual è la problematica attuale legata agli script di bitcoin? Sulla blockchain di bitcoin è possibile eseguire degli script creati dagli utenti per spendere bitcoin secondo determinati vincoli. Tuttavia ad oggi gli script sono piuttosto limitati rispetto ai classici smart contract.
Quando infatti viene creato uno script complesso (con molti vincoli) su Bitcoin occorre che tutti i dati e vincoli dello script vengano inseriti sulla blockchain, sia le parti effettivamente utilizzate (una certa condizione di spesa ad esempio) che tutte quelle inutilizzate, oltre alle relative chiavi pubbliche, address ecc… Tutti questi dati inutilizzati aumentano le dimensioni delle transazioni.
Non solo, riducono anche la privacy divulgando pubblicamente più informazioni del necessario. Inoltre, limitano gli smart contract in funzione della loro dimensione piuttosto che dei costi di convalida delle transazioni.
Il protocollo MAST consente la creazione di smart contract complessi sulla blockchain di BTC sfruttando gli Abstract Syntax Tree e gli Alberi di Merkle.
Gli AST consentono di dividere uno script complesso nelle sue singole parti, mentre gli alberi di Merkle consentono di verificare che le singole parti appartengono ad uno script completo senza dover possedere l’intero codice, che quindi non dovrà essere incluso per intero sui blocchi di bitcoin.
Tramite questo approccio, dunque, è possibile creare script complessi ed ottimizzare l’uso della memoria sulla blockchain, dal momento che vengono pubblicati sulla blockchain di bitcoin solo i vincoli dello script effettivamente utilizzati, tralasciando tutto il resto. Ciò indirettamente comporta benefici anche sulla privacy. Il motivo è piuttosto semplice: vengono inseriti nella blockchain solo i dati essenziali e non quelli superflui. Ma si può fare di meglio ed è qui che interviene Taproot.
Taproot necessita di Schnorr
Taproot è una particolare implementazione del protocollo MAST abbinata alle firme di Schnorr. Proprio per questo motivo Taproot per funzionare correttamente necessita delle firme di Schnorr.
Schnorr mira ad ottimizzare lo spazio occupato dalle firme nei blocchi. Ciò si ripercuote anche sulla privacy. Infatti, tramite Schonorr, è possibile comprimere le firme di tutti i partecipanti in una sola firma. Per i multi-signatures che coinvolgono diversi partecipanti, è possibile aggregare le chiavi pubbliche e le firme in una sola chiave pubblica (Threshold public Key) e firma (Threshold Signature). Essa è indistinguibile da una classica chiave pubblica. Così diventa impossibile stabilire se la spesa di un determinato bitcoin è stata autorizzata da una sola persona o da più persone. Questa nuova modalità può consentire a più firmatari di unire le proprie firme in una sola. Ne consegue un notevole risparmio di spazio e una maggiore confidenzialità.
Ma c’è di più. Le firme di Schnorr possono essere usate in un modo ancor più interessante. E’ possibile infatti “tweakcare” (ritoccare) sia una chiave privata che la corrispettiva chiave pubblica. Per esempio, una chiave privata e la relativa chiave pubblica potrebbero essere moltiplicate per due. Pur essendo moltiplicate entrambe per due, continuerebbero a corrispondere. Quindi la chiave privata ritoccata potrebbe venir utilizzata per firmare messaggi in grado di venir verificati dalla chiave pubblica ritoccata nello stesso modo.
Ovviamente solo i diretti interessati nell’operazione sono a conoscenza del tweak, facendo dunque risultare la chiave pubblica indifferente dalle altre.
Dal momento che attualmente Schnorr non è attivo su Bitcoin, è altamente probabile che Taproot e Schnorr possano debuttare insieme sulla blockchain di bitcoin in un futuro fork. Ad oggi non è noto quando ciò accadrà.
L’idea di Taproot
L’idea alla base di Taproot si basa su una necessità degli script di bitcoin. Qualsiasi script deve infatti includere una particolare condizione che permetta a tutti i partecipanti coinvolti in un contratto di esser d’accordo in maniera comune sull’esito dello script e spendere dunque i propri fondi: la “cooperative close“.
La cooperative close sfrutta Schnorr per apparire come una comune transazione fra due parti. Tutte le chiavi pubbliche dei partecipanti allo script vengono sommate, creando la Threshold Public Key. La stessa cosa avviene per le firme, che creano la Threshold Signature, in grado di far effettivamente spendere i propri bitcoin ai partecipanti dello script chiudendo il contratto.
A questo punto, entrano in gioco tutte le altre condizioni in cui i bitcoin possono venir spesi, ovvero le non cooperative close. Tutte queste condizioni/vincoli alternative alla cooperative close sono presenti nello script. L’hash di questo script viene dunque utilizzato per eseguire l’operazione di ritocco/tweak delle chiavi vista in precedenza. Tuttavia, invece che moltiplicare la chiave pubblica per un numero casuale, la Threshold Public Key viene moltiplicata per l’hash dello script. Ovviamente a tale chiave pubblica corrisponde la relativa Threshold Signature ritoccata nello stesso modo.
Quindi, se i bitcoin dello script vengono spesi in modo cooperativo, tutti i partecipanti uniscono le loro firme per ottenere la Threshold Signature da ritoccare con lo script. Ciò dunque consentirà loro di spendere i fondi. Tutto ciò all’esterno (dunque on-chain) apparirà come una transazione regolare con una chiave pubblica e firma classica.
Nel caso invece in cui venisse eseguita una non cooperative close, dunque una delle possibili altre condizioni nello script, verrebbe mostrata la Threshold Public Key Tweakata. In questo caso, vengono rivelate sia la chiave pubblica originale di Threshold che lo script con lo scopo di dimostrare che la Threshold Public Key Tweakata è stata ottenuta con tale specifico script. Il meccanismo del tweak dunque, serve a dimostrare al mondo che i fondi dello script possono venir spesi se le condizioni – specificate nello script – sono soddisfatte.
Applicando tutti questi concetti a MAST, invece che utilizzare gli hash degli script per ritoccare le Threshold Public Key, è possibile utilizzare la radice dell’albero di Merkle che include tutte le diverse condizioni in cui i fondi possono essere spesi. In questo modo quindi, per spendere i fondi deve essere rivelata solo la condizione soddisfatta, migliorando la privacy ed ottimizzando l’uso delle risorse on-chain.
Ed è questo il potenziale di Taproot: combina la flessibilità di MAST per gli script con la privacy di Schnorr.