Che cos'è e come funziona Mimblewimble. Il protocollo che piace a Bitcoin.

in #steempress6 years ago (edited)


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.

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 criptovalute stanno testando diversi metodi che cercano di risolvere questo problema, compresa l'implementazione di masternodes (Dash), firme anulari (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 ed 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. E’ 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 stava succedendo e il valore di quella proposta. Tre settimane dopo lo 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 salvate all’interno di un blocco. Non è una moneta (non ancora per lo meno) o una blockchain, ma semplicemente un paper.

Le transazioni, all’interno del protocollo Mimblewimble sono crittografate mediante la crittografia omomorfba, 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. 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. Decriptografare i due valori: A = 2 e B = 5
  2. Sommarli: 5 + 2 = 7
  3. Criptografare 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 decriptare. 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.

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 fà 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 pro 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 Cryptovalute 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 è 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.

Sort:  

Congratulations @crypters! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

The Steem blockchain survived its first virus plague!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!