Tempo di lettura: 7 minuti

La natura trasparente della blockchain è ciò che consente a Bitcoin di esistere e di funzionare senza la necessità che una terza parte attendibile faccia da intermediario di fiducia. C’è un libro mastro pubblico dove possiamo controllare la validità delle transazioni che si sono verificate nella rete semplicemente consultandolo. Questa stessa trasparenza tuttavia, porta con sé alcuni problemi. La mancanza di privacy può spaventare per esempio le aziende che non vogliono che le loro finanze siano disponibili e pubbliche.

Nonostante gli strumenti disponibili, come i mixer bitcoin, gli scambi p2p e la possibilità di usare la rete TOR, questi metodi non garantiscono al 100% l’anonimato. Altre crittovalute stanno testando diversi metodi che cercano di risolvere questo problema, compresa l’implementazione di masternodes (Dash), ring signatures (Monero) e, più recentemente, zk-snarks (Zcash).Queste soluzioni però, portano l’utente a dover rinunciare alla sicurezza della blockchain di Bitcoin e questo può essere un problema.

Per questo motivo si sta lavorando a diversi progetti per portare un maggior livello di privacy all’interno del protocollo BTC. Uno di questi progetti è chiamato MimbleWimble e oggi andremo ad analizzarlo da vicino. In questo articolo cercherò di semplificare al massimo uno dei progetti più complessi ed interessanti dell’intero panorama. 

Dove nasce Mimblewimble e quando?

Il protocollo mimblewimble (nome di un incantesimo utilizzato da Voldemort nei doni della morte) fa la sua prima apparizione all’interno del canale IRC #bitcoin-wizards (un canale per discutere di idee teoriche riguardo a Bitcoin). Nel cuore della notte, una notte di agosto, un utente è comparso sul canale utilizzando come nickname “Tom Elvis Jedusor” (il nome di Voldemort nella versione francese dei libri di Harry Potter). “Hey ragazzi, pensavo di inviarvi questo file; potreste essere interessati a dare un’occhiata.” Era un collegamento casuale con estensione .onion.

Qualcuno l’ha scaricato, e si è scoperto che si trattava di un file .txt (un documento di testo in chiaro). Il documento, rappresentava il White Paper originale di MimbleWimble. È trapelato anche su reddit, dove diverse persone hanno ripubblicato il link che riportava al documento di testo. In quella stessa settimana ci sono state molte discussioni su reddit per cercare di capire di cosa parlava il documento originale, anche perchè quest’ultimo era scritto in francese e non era molto preciso e dettagliato. Una volta tradotto, gli utenti del canale bitcoin-wizard e la community di sviluppatori che l’avevano scaricato e letto hanno iniziato a capire cosa stesse succedendo e il valore di quella proposta. Tre settimane dopo Scaling Bitcoin (evento tenutosi a Milano in cui si è parlato di Mimblewimble), un’altra persona si è presentata nel canale  #bitcoin-wizards con lo pseudonimo di “Ignotus Peverell” (anche questa volta un personaggio di Harry Potter, precisamente colui che ha inventato il mantello dell’invisibilità.). Peverell ha detto che stava lavorando ad un’implementazione di mimblewimble. E ha pubblicato un link Github al progetto. Nel corso delle settimane successive, altri sviluppatori, tutti con pseudonimi che riprendevano personaggi famosi di Harry Potter (come Grendel o Merope Riddle per esempio) si sono uniti al progetto e all’idea proposta da Peverell.

Che cos’è Mimblewimble?

E’ una proposta bitcoin-like per gestire in modo diverso le transazioni e il modo in cui vengono salvate all’interno di un blocco. Non è una moneta né una blockchain (non ancora per lo meno) , ma semplicemente un paper. 

Le transazioni, all’interno del protocollo Mimblewimble sono crittografate mediante la crittografia omomorfa, un tipo di crittografia che ti permette di andare a svolgere delle operazioni matematiche senza decifrare il contenuto dell’operazione. 

Crittografia Omomorfa

Le privacy Coin attualmente disponibili (Monero, Zcash, Nav ecc ecc) non sono anonime per natura, ma utilizzano dei metodi per cifrare i risultati delle operazioni e quindi le transazioni. Prendiamo come esempio un wallet nel quale è presente una quantità di Coin. Questo valore, nel caso delle privacy coin, è criptato per garantire appunto la privacy del proprietario e fare in modo che nessun altro a parte lui conosca la quantità di coin al suo interno.

Prendiamo come esempio due wallet, uno contenente 2 coin e l’altro 5 coin. Una volta criptati questi valori, ovvero le quantità di coin, verranno sostituiti da stringhe casuali (in questo esempio per semplificare utilizzeremo le lettere A e B). Quando ho la necessità di compiere un operazione matematica e quindi una transazioni non posso mantenerli cifrati poichè Il cifrato di 2 (che sarebbe A) + il cifrato di 5 (che sarebbe B) se sommati, non danno il cifrato di 7. Questo perchè 2 + 5 = 7 ma A + B  da come risultato una stringa casuale (una lettera nel nostro caso) che non corrisponde, se decriptato al valore 7. Quindi, se qualcuno ha la necessità di sommare questi due valori senza rendere pubblico il risultato è obbligato a:

  1. decrittografare i due valori: A = 2 e B = 5 
  2. Sommarli: 5 + 2 = 7
  3. Crittografare il valore risultante 7 = C

Con la crittografia omomorfa invece, puoi fare la somma del cifrato di 2 + il cifrato di 5 (nel nostro caso A+B) e ottenere il cifrato di 7 (C). Questa è una cosa pazzesca perchè ti permette di compiere delle operazioni matematiche mantenendo in sicurezza il dato e quindi senza doverlo decrittare. Utilizzando questa tipologia di crittografia Mimblewimble garantirebbe ad una blockchain che  di diventare nativamente anonima poiché garantirebbe la convalida della transazione e la sua validazione senza essere a conoscenza del quantitativo di Coin inviate e ricevute.

Come funziona Mimblewimble?

Per comprendere al meglio Mimblewimble è necessario capire il funzionamento di due sviluppi precedenti che hanno ispirato quest’ultimo: Le Confidential Transactions (CT), sviluppate principalmente da Bitcoin Core e dallo sviluppatore di Blockstream Gregory Maxwell (protocollo attualmente distribuito sulla sidechain Elements Alpha di Blockstream) e CoinJoin , proposto per la prima volta da (di nuovo) Maxwell. Entrambe le tecnologie sono state riprese in Mimblewimble e rese più efficienti e meno dispendiose in termini di spazio occupato on-chain.

sidechain bitcoin guida
Infografica sul funzionamento delle sidechain

Confidential Transaction (CT) in Mimblewimble

Utilizzando le CT e la crittografia omomorfa è possibile crittografare il numero di Bitcoin che si vogliono inviare permettendo (come abbiamo spiegato sopra) l’esecuzione della matematica. Per verificare che una transazione sia valida, pur non sapendo il numero di Bitcoin inviati basta semplicemente comparare i segnali di uscita (input, ovvero la parte “da” di una transazione) e i valori di entrata (output, la parte “a”) e verificare che la somma di questi dia come risultato 0 (10 input – 10 output = 0). Se questa condizione viene soddisfatta, la transazione viene contrassegnata come valida, pur non sapendo il quantitativo di Bitcoin spostato. Le CT in Mimblewimble funzionano in modo molto simile fatta eccezione che la somma degli input più la somma degli output non da come risultato 0 ma un valore in eccesso che viene utilizzato come chiave privata dal destinatario per spendere le proprie Coin. Questo passaggio è molto tecnico quindi eviterò di spiegarlo in questo articolo, tuttavia è un dettaglio importantissimo per comprendere la parte successiva.

Coinjoin

CoinJoin è un meccanismo che consente di raggruppare tante transazioni in una sola transazione più grande, mescolando così tutti gli input, assieme a tutti gli output. Questa “tecnologia” è utilizzata da MimbleWimble per garantire, oltre che l’occultamento della quantità di Coin inviate, l’impossibilità di riconoscere il wallet del mittente; spiegata in parole brutte, ma semplici: chi ha inviato cosa a chi. Proviamo a fare un esempio: Immaginiamo che Luca, Andrea e Marco debbano dare 2 euro a testa a Giulia Marta e Alice. Per fare questo, i tre ragazzi, mettono due euro a testa in un salvadanaio e lo inviano a Giulia Marta e Alice che, una volta ricevuto lo rompono prendono da quest’ultimo 2 Euro a testa. In questo modo, tutte e tre le tre ragazze hanno ricevuto i soldi che spettavano loro, senza che una persona esterna alla transazione possa venire a conoscenza di chi abbia preso i soldi di luca, e chi invece quelli di Andrea e di Marco.

Torniamo a Mimblewimble.

Per garantire la scalabilità della blockchain ed una privacy nativa mai vista fino ad oggi, Mimblewimble porta all’estremo il concetto espresso da Coinjoin. In che modo? Semplificando la “vita” di una moneta in: dov’è nata e dove si trova ora. Mi spiego meglio.

Nella blockchain di Bitcoin vengono salvati in modo permanente tutti gli spostamenti di ogni singolo bitcoin. Consultando la blockchain infatti, possiamo vedere che il Bitcoin che ora è nel wallet di Marco, due giorni fa era nel wallet di Giulia e 1 anno fa in quello di Marta. La cronistoria di tutte le monete occupa tanto spazio all’interno della blockchain di Bitcoin. All’interno di una blockchain in cui viene utilizzato Mimblewimble invece, se Marco manda una moneta a Giulia, e poi quest’ultima la invia a Marta, la transazione di Giulia viene eliminata. Questo meccanismo prende il nome di taglio della transazione. Nonostante la transazione intermedia venga eliminata dalla blockchain questo non accade per il valore in eccesso che abbiamo visto prima parlando delle CT su mimblewimble. Questo valore, che abbiamo detto è l’equivalente di una chiave privata, è la prova che Giulia poteva spendere quelle monete e quindi, invece che salvare l’intera transazione in blockchain, possiamo salvare esclusivamente  la “prova” detenuta da Giulia. Questo trucchetto, moltiplicato per milioni di transazioni ci permette di risparmiare una mole enorme di spazio aumentando così la scalabilità della blockchain stessa. Portando al massimo questo concetto, è possibile semplificare tutte le transazioni all’interno di un blocco, raggruppandole in un unica transazione. In questo modo, all’interno del blocco troveremmo solo 3 infomrazioni: Le monete presenti nel blocco quando è stata fatta la prima transazione, le monete presenti nel blocco dopo l’ultima transazione effettuata all’interno di esso e le prove delle varie transazioni non salvate. Eliminando tutte le CT intermedie (del peso di 2,5 Kilobyte l’una) e salvando semplicemente la “prova” costituita dal valore in eccesso della transazione (del peso di circa 32 Byte) otteniamo una blockchain leggerissima e privacy like nella quale, un nodo che si connette nel 2018, non deve scaricarsi 90 Gigabyte come avviene oggi se vuoi aprire un nodo su Bitcoin. Questo perchè grazie a questo schema, non abbiamo bisogno di tutte le transazioni per verificare lo stato corrente corretto della catena.

Perchè non viene implementato in Bitcoin sin da subito?

Nonostante ci siano tanti vantaggi derivanti dall’utilizzo di Mimblewimble, c’è anche un grosso svantaggio in quanto quest’ultimo rimuove la possibilità di eseguire gli script limitando di molto le funzionalità delle transazioni di Bitcoin. Eliminerebbe per esempio le transazioni ritardate, o le transazioni multisig, o ancora la possibilità di eseguire atomic swap e smart contract. 

Grin e l’implementazione di Mimblewimble

Esattamente come Bitcoin è un protocollo e Bitcoin Core ne è un’implementazione, Mimblewimble può essere visto come un protocollo, e la crittovaluta  Grin ne è la sua implementazione. Il fondatore è sconosciuto e attualmente opera sotto lo pseudonimo Ignotus Peverell (un altro personaggio immaginario della serie di Harry Potter).

Grin sta aprendo la strada all’implementazione del protocollo Mimblewimble e si spera che quanto sperimentato e appreso da questo esperimento possa essere applicato a Bitcoin. Attualmente, Mimblewimble può essere integrato nella rete Bitcoin solo attraverso un softfork o come una sidechain (più probabile). Su questa ipotetica sidechain, gli utenti sarebbero in grado di spostare Bitcoin per effettuare transazioni con un maggiore livello di privacy per poi ritornare sulla blockchain di Bitcoin una volta che la transazione sarà completa.

Conclusione

Concludendo, attraverso queste innovazioni crittografiche come le CT e CoinJoin, Mimblewimble offre una soluzione di scaling molto forte oltre ad una privacy nativa che prima d’ora non si era mai vista. Spero tanto che questa tecnologia possa essere implementata in Bitcoin senza dover rinunciare alle funzionalità sopra citate, tuttavia, questo dipenderà da come si comporterà il protocollo Mimblewimble una volta che la blockchain di Grin sarà funzionante e la Coin verrà listata.

Se sei interessato a ricevere nuove notizie su Bitcoin e tanto altro entra nel nostro gruppo Telegram!

Luca Colombo
Autore

Freelance ed imprenditore digitale (adesso va di moda no? Lol). Sostenitore di Bitcoin e della proprietà patrimoniale. Mi piacciono tante cose, troppe per elencarle in poche righe, ma se fossi costretto a dirne solo tre, sceglierei sicuramente: l’Informatica, la tecnologia e i Manga. La mia passione per le crittovalute e la filosofia alla base di Bitcoin mi ha portato ad aprire dapprima un blog tutto mio e in un secondo momento ad entrare a far parte del team di Coiners per cercare di far conoscere, a sempre più persone, questa grande rivoluzione. In Math we trust.

2 Comments

  1. Queste novità mi appassionano ma non son un giovane con fresca e aperta memoria per raccogliere questi esperimenti monetari e finanziari.
    Mi chiedo: lo scopo riguarda solo l’individuazione di modalità per contrastare lo strapotere economico delle banche e la protezione dei dati dei singoli operatori o ci sono ( ci potrebbero essere) anche obiettivi di politica economico-finanziaria da perseguire?
    Grazie se avrete modo di dedicare qualche minuto a queste curiosità.

    • Riccardo Masutti

      Ciao Fred,
      Bitcoin è stato inventato e sviluppato per permettere lo scambio di valore tramite Internet e senza intermediari, con conseguente perdita di potere per banche, governi e tutte quelle entità che, attraverso il controllo finanziario, controllano le persone stesse.

      Grazie alla natura di Bitcoin siamo finalmente in grado di gestire le nostre finanze senza far affidamento a nessuno se non al codice stesso e alla decentralizzazione del protocollo.

      Ti consiglio caldamente di leggere questo articolo.

Scrivi un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.