02-01-2019 5 minuti

MimbleWimble: il protocollo di Lord Voldemort che risolve i problemi di privacy e scalabilità di Bitcoin

scavolize Scritto da Andrea Scavolini

Introduzione

 

Il 2 agosto del 2016 un anonimo utente, conosciuto con lo pseudonimo di "Tom Elvis Jedusor" (ovvero il nome di “Voldemort” nella serie francese di libri di Harry Potter), pubblica in un forum di sviluppo di Bitcoin un file.txt, originariamente raggiungibile tramite un link.onion, in cui si può leggere la prima bozza del whitepaper di MimbleWimble. La proposta era quella di trovare soluzione a due problemi della blockchain di Bitcoin: la scalabilità e la privacy.


 

Questa idea è stata nominata dall’utente “MimbleWimble”, proprio come la maledizione linguistica “che attorciglia la lingua” insegnata da Gilderoy Lockhart ai suoi studenti, probabilmente in onore della privacy. Ma i riferimenti con Harry Potter non finiscono qua: il 20 ottobre 2016 un altro sviluppatore anonimo, sotto lo pseudonimo di “Ignotus Peverell” (ovvero il mago che chiese in dono alla Morte il mantello dell’invisibilità, lo stesso che riceverà in seguito Harry Potter), annuncia sullo stesso forum che ha iniziato a lavorare ad un'implementazione del protocollo MimbleWimble, Grin, che si richiama chiaramente Gringotts Wizarding Bank di Harry Potter.

 

 

Nel marzo 2018, è infine apparsa Beam, una startup con sede in Israele che offre un'interpretazione leggermente diversa di questo protocollo: hanno ricevuto finanziamenti, hanno lanciato la ICO e hanno avuto un team di sviluppo dedicato. Ambiente molto diverso da quello di Grin, animato da valori cypherpunk, dall’associazione volontaria al progetto e dalle donazioni libere. La mainnet di Beam partirà il 3 Gennaio 2019, mentre quella di Grin sarà lanciata il 15/01.

 

 

Il protocollo è stato pubblicato dall’anonimo autore con la speranza di risolvere gli attuali problemi di Bitcoin. Inoltre, l’anonimo Ignotus Peverell che ha avviato il progetto Github chiamato Grin , riuscendo finalmente a trasformare il white paper di MimbleWimble in qualcosa di reale., ha lasciato intendere come questa implementazione possa davvero permettere la “satoshi vision” di denaro puramente peer-to-peer, scambiato da persona a persona e non solamente detenuto per anni in ‘cold storage’.

 

 

Alcune nozioni fondamentali

 

Innanzitutto, per comprendere accuratamente i vantaggi che introduce questo protocollo, occorre comprendere l’esatto funzionamento di Bitcoin. Dobbiamo considerare che gli indirizzi Bitcoin non sono analoghi ai conti bancari, in cui possiedi un importo totale e puoi trasferirne una parte. Quello che realmente possediamo sono proposizioni che ci attestano il possesso di una determinata quantità di criptovaluta, spesso indicata come "output di transazione non speso” (UTXO). Questa determinata quantità rappresentata dalla relativa chiave pubblica, ad esempio 0.35 BTC, può essere riscattata con una chiave privata specifica (o in altri casi tramite uno script più complesso, come uno “smart contract”): non sarà mai possibile riscattare solo una parte di quella quantità: quindi, se vorrai effettuare una transazione per 0,15 BTC, dovrai necessariamente dividere quella quantità in due, una parte del valore di 0.15 BTC, che accrediterai all'indirizzo “recieving” del ricevente e la restante parte che andrà al tuo indirizzo di “change”, e risulterà come output non speso. La maggior parte dei software wallet compie queste operazioni in automatico.

 

 

Ma non è finita qui. Quei 0,15 BTC che voglio inviare non si registreranno sulla blockchain come – 0,15 BTC ad un utente e + 0,15 BTC all’altro. Ogni transazione è composta da un insieme di input e output che vanno da una persona all'altra: quindi, per effettuare la transazione da Andrea (0,15 BTC) a Vlad, il wallet raggrupperà tutti gli UTXO che costituiscono quella cifra. A volte ci possono essere centinaia di input in questa transazione, e ogni transazione deve essere firmata individualmente dal wallet: come puoi immaginare, questa operazione aggiunge molti dati sulla blockchain e diventa molto ingombrante. Questo meccanismo, associato alla Proof-of-Work, si è dimostrato estremamente sicuro, ma presenta problemi a livello di privacy e scalabilità.

 

 

Come funziona MimbleWimble?

 

Con il protocollo MimbleWimble si tenta di cambiare questo modello di bitcoin creando una “chiave multi-firma” (multi-signature key) per tutti gli input e output. Le parti coinvolte in una transazione avranno una chiave pubblica multi-firma, tramite la quale saranno in grado di verificare la transazione. In una transazione riservata, solo le due parti coinvolte sono consapevoli della quantità oggetto di transazione, al pubblico non è dato sapere.

 

Non ci sono indirizzi nel sistema, poiché non servono: le due parti coinvolte condividono quello che viene chiamato "fattore accecante" (blinding factor), in cui solo quelle due parti sanno di essere coinvolte in una transazione; ciò consente una “blind signature” (firma cieca), una tipologia di firma digitale in cui il contenuto di un messaggio viene mascherato (“accecato”) prima ancora di essere firmato. Grazie alla crittografia omomorfica, che permette di effettuare operazioni su dati cifrati senza aver la necessità doverli decifrare, è possibile ottenere un altissimo livello di privacy nella rete. Diversamente, le privacy Coin attualmente presenti come Dash, Monero e Zcash, ecc... non sono anonime per natura, ma utilizzano dei metodi per cifrare e decifrare i risultati delle operazioni.

 

 

Privacy e anonimato

 

Il più grande cambiamento rispetto a Bitcoin è l’alto livello di privacy nativa che l’applicazione di questo protocollo consente di ottenere: tutti gli importi saranno oscurati. MimbleWimble adotta uno schema in cui i nodi completi sottraggono gli importi crittografati primo dell’invio delle transazioni (input) dagli importi crittografati nell’output della transazione verso il destinatario. L’unico dato pubblico visibile sarà la certezza che nessuna moneta sia stata creata dal nulla, ma i nodi non registreranno mai l’importo reale delle transazioni: ogni singolo valore verrà moltiplicato per un fattore X segreto, oscurando così gli importi originali ma permettendo di provare che non sono state create delle nuove monete.

 

 

Inoltre sono oscurate anche le chiavi pubbliche multi-firma e qualsiasi indirizzo non sarà riutilizzabile o identificabile. L’unico controllo che verrà effettuato sarà che non vengano create nuove monete e che le parti coinvolte siano in possesso delle “chiavi” che attestano la proprietà di quei fondi (mascherati). Il destinatario di una transazione seleziona in modo casuale una serie di “fattori accecanti” forniti dal mittente, questo fattore accecante viene quindi utilizzato come prova di proprietà da parte del ricevente: solamente con quell’unica equazione sarà possibile dimostrare che non siano state create nuove monete e chi sia il legittimo proprietario di quei fondi.

 

 

Scalabilità

 

Completata la transazione, l’unico dato registrato sarà l’intestazione “multi-filma” di quest’ultima: come puoi intuire questo sistema è molto più leggero di uno che mantiene pubblicamente tutti gli input e gli output su un nodo completo per l'intera blockchain: con MW i dati in eccesso vengono semplicemente eliminati. Questo porta a risolvere il problema, ad esempio, della blockchain di Bitcoin ed Ethereum: quest’ultimo vede un numero sempre inferiore di unita che eseguono nodi completi, poiché la blockchain diventa ogni giorno più intensiva e ha già superato da tempo la dimensione di 1 TB.

 

 

Questo problema, anche se in misura inferiore, è presente anche in Bitcoin poiché per eseguire un nodo completo occorre effettuare i download di tutti gli input e output di tutte le transazioni avvenute a partire dal ‘blocco genesi’. Ciò diventa esponenzialmente più grande col passare del tempo e potrebbe compromettere la sicurezza della rete: avere meno nodi completi, rende la blockchain meno decentralizzata e più esposta alla manipolazione.

 

 

Con MimbleWimble, invece, è possibile eliminare tutte le transazioni intermedie. Inoltre, sfruttando anche un'altra innovazione crittografica nota come CoinJoin, tutti le transazioni vengono combinate in una unica, offuscando gli input e gli output dei mittenti e dei destinatari e rendendo così difficile per una parte esterna determinare quale pagamento è legato a quale destinatario. Eliminando dalla blockchain dati sulle transazioni non necessari, la scalabilità diventa meno problematica, potendo includere tutte le transazioni di un ipotetico blocco di Bitcoin in una transazione unica.

 

 

Per concludere, oltre a risolvere i problemi di scalabilità, grazie all’offuscamento degli imput, degli output e di tutti gli indirizzi pubblici delle transazioni, MW consente di raggiungere il vero anonimato, diversamente dal sistema di “pseudonimi” adottato da Bitcoin. Ricordiamo agli utenti che MimbleWimble sta per essere lanciato, non in una, ma in ben due implementazioni distinte: il 3 e il 15 gennaio, si prevede il lancio di due reti basate su questo protocollo, chiamate rispettivamente, come accennato prima, Beam e Grin. Vi terremo aggiornati!