Mina Protocol - Una Blockchain sintetica

From Mina Wiki
Jump to navigation Jump to search

Puoi considerare Mina come “Un portafoglio che sta nella tua tasca »

  • La prima criptovaluta con una blockchain sintetica.
  • Una blockchain compressa da centinaia di GB (come nei protocolli esistenti) fino a qualche kB di dimensione.

  • Scalabile, sicura e decentralizzata.
  • Permette di verificare la blockchain su un téléphone mobile.

La blockchain di Mina rimane sempre di una dimensione costante – la dimensione di pochi tweet, indipendentemente dal numero di transazioni effettuate sulla rete.

hack.summit(“blockchain”) 2018 — Izaak Meckler — co-fondatore e CTO, Mina Protocol

Nella 'criptosfera', siamo spesso incoraggiati a seguire il motto "Non fidarti, verifica" e, sebbene consci della necessità di essere utenti attivi della rete, gli utenti finali delle blockchain oggi sono meno propensi a gestire nodi completi a causa dei requisiti tecnici in costante crescita.

[ https://miro.medium.com/max/2000/1*cELjxQwXYMqroQ0TgoSd1A.jpeg ]

Il tasso di crescita della blockchain Bitcoin in megabyte dal '09-'18. (https://www.blockchain.com/en/charts/blocks-size?timespan=all)

Prefazione

Perché non possono essere tutti un nodo completo ?

Prima di immergerci, dovremmo prima comprendere come funziona una tipica configurazione di un protocollo di criptovaluta: un elaboratore, altrimenti noto come minatore o staker (PoW vs. PoS rispettivamente), applica una transazione al database. Un nodo completo osserva queste transazioni, per assicurarsi che stiano agendo onestamente. Gli utenti finali di solito non devono effettuare controlli indipendenti, ma delegano la fiducia ai partecipanti alla rete che effettuano questi controlli.

Perché ?

  • I requisiti di risorse e la complessità della gestione di un nodo completo scoraggiano i normali utilizzatori.
  • È computazionalmente intensivo far funzionare un nodo completo su un computer, impossibile su un cellulare.
  • È più semplice fidarsi di terzi per questa convalida.

[ https://miro.medium.com/max/1400/0*3Nod-k_4sVhkqz13 ]

Nelle prime fasi di una qualsiasi criptovaluta è relativamente facile operare un nodo completo, dato che la blockchain è piccola, forse qualche megabyte. Con il passare del tempo e l'aumentare delle transazioni registrate, questa cresce fino a raggiungere centinaia di gigabyte (come si vede nel grafico qui sopra). Diventa quindi sempre meno realistica la possibilità di far funzionare un nodo completo senza un computer designato a tale scopo, tanto meno su uno smartphone.


Come possiamo essere convinti dello stato attuale della blockchain, senza vedere l'intera storia ?

Introduzione a Mina

“Mina è un nuovo protocollo di criptovaluta che permette a chiunque di sincronizzarsi con la rete [da qualsiasi dispositivo] con il livello di sicurezza di un nodo completo, scaricando solo pochi kilobyte di dati e completando pochi millisecondi di calcolo, rispetto ai gigabyte dei protocolli di criptovaluta tradizionali.”

[ https://www.youtube.com/watch?v=4AJKUGNwzZ0 Izaak Meckler & Evan Shapiro: Mina — Una Blockchain Sintetica — Epicenter ]

O(1) Labs dsta sviluppando il Mina Protocol per affrontare il problema della dimensione della blockchain creando la prima blockchain sintetica ("succinct blockchain" in inglese, NdT) o compressa — della dimensione di pochi tweet.. Questo fornisce agli utenti finali un ridotto ostacolo alla possibilità di convalidare le transazioni.

Cosa lo rende possibile ?

  • L’utilizzo di zk-SNARKs — di fatto comprimendo i blocchi in un'unica prova o certificato.

  • Gli utenti verificano questa prova invece di verificare l'intera cronologia delle transazioni di un blocco.
  • Composizione ricorsiva di questi SNARKs/certificati, che consente di ottenere una blockchain di dimensioni costanti.

zk-SNARKs sono una iterazione di dimostrazioni a conoscenza zero (“zero-knowledge proofs” in inglese, NdT) — un protocollo crittografico col quale un soggetto verificante dimostra ad un soggetto verificatore la veridicità di un’affermazione (generalmente la prova di un calcolo), senza rivelare nulla oltre al fatto che questa sia vera.

Come funziona Mina

zk-SNARKs in Mina

Al centro del Mina Protocol ci sono zk-SNARKS che possono essere utilizzate per certificare qualsiasi calcolo.

zk-SNARKs funzionano come certificati che non si possono contraffare utilizzati per dimostrare che un calcolo sia stato eseguito correttamente, senza fornire l'intero calcolo. Come accennato, possiamo prendere qualsiasi calcolo, come la verifica delle transazioni in un blocco, e crearne uno SNARK. Questo SNARK dimostra la correttezza della storia delle transazioni di un blocco, senza dover mostrare tutte le transazioni. Questo riduce effettivamente la dimensione di un blocco ad un singolo SNARK (~1kB)..

Lo SNARK verifica TUTTE le regole per il consenso.

Garantisce:

  • Che le transazioni siano firmate.
  • Che siano valide.
  • Le regole di consenso (potenza totale di hashing + robustezza della catena per PoW, e la funzione casuale variabile/altre regole per PoS).

Se lo SNARK non viene generato onestamente, non è valido. Chiunque sulla rete sarebbe in grado di riconoscerlo quasi istantaneamente anche su qualcosa di "light" come un Raspberry Pi o uno smartphone.

Mantenere una bassa richiesta di risorse per la verifica delle transazioni in un blocco, senza delegare la fiducia, è il primo passo per creare una soluzione sostenibile e scalabile al problema in questione.

[ https://miro.medium.com/max/1400/0*Y5qiN4mQ3dWolofS.png un elaboratore SNARK che crea uno SNARK/certifìcato di validità per un blocco che potrebbe essere trasmesso come prova, senza includere tutte le transazioni.]


Una vera conversazione tra un elaboratore Mina e un utente finale:

"Ciao verificatore/utente finale! Ho creato un certificato in modo che tu possa verificare facilmente la cronologia delle transazioni di un blocco. Questo processo ha richiesto molta potenza di calcolo, quindi sono ricompensato per averlo fatto. Puoi verificare l'accuratezza di questa prova controllando lo SNARK, operazione che impiegherà solo pochi millisecondi e pochi kilobyte di spazio libero. In questo modo non dovrete scaricare centinaia di gigabyte per verificare la blockchain!" — Elaboratore SNARK.

"Grazie MILLE, elaboratore. Verificherò questo certificato! Dato che è così piccolo non devo fidarmi di qualcun altro per verificare la blockchain per me e posso finalmente eseguire un nodo (e portafoglio) validatore su qualcosa come il mio smartphone. Grazie! La vita è così bella adesso." — Utente finale.


La sostituzione di ogni blocco con uno SNARK non è una soluzione completa.

Inizialmente si pensava che avremmo potuto semplicemente creare uno SNARK per ogni blocco, restringendo ogni blocco a circa un kilobyte, e fermarci qua. Tuttavia, ciò porterebbe comunque ad una crescita lineare nel tempo, poiché gli SNARK si accumulano, anche se in misura molto minore rispetto alle blockchain esistenti.

Come possiamo rimediare?

Beh, sappiamo che uno SNARK può essere usato per certificare qualsiasi calcolo. La creazione di uno SNARK è anch’essa un calcolo - e se creassimo uno SNARK di più SNARK?

[ https://miro.medium.com/max/1400/0*oPqhLi91z1V_H2pJ.png Molteplici certificati/SNARK, ciascuno verificato da un utente finale. ]


Una composizione ricorsiva di SNARK in Mina

Come già detto, possiamo concatenare questi certificati in una composizione ricorsiva e ottenere che la blockchain rimanga una dimensione costante di ~20kB (SNARK + finale del Merkle tree).

Ogni volta che viene prodotto un nuovo blocco, viene creato un nuovo SNARK/certificato. Creando un singolo SNARK composto dai certificati precedenti, si è in grado, in un certo senso, di creare un singolo "mega" SNARK, che certifica l'intera storia delle transazioni della blockchain permettendo di saltare dal blocco della genesi allo stato attuale, rimanendo della dimensione di un singolo certificato.

[ https://miro.medium.com/max/1400/0*yzdwtbQurT-RKsSa.png Più certificati/SNARK inseriti in un unico certificato/SNARK ].


Per semplificare, diciamo che ci sia:

  • Un certificato che attesta la possibilità di passare al blocco 0 al blocco 2.
  • Un certificato aggiuntivo che attesta la possibilità di passare blocco 2 al blocco 4.

Si possono poi combinare questi SNARK in un unico SNARK che attesta che si può andare dal blocco 0 al blocco 4.

Il nuovo SNARK/certificato rimane ~1kB. Su scala più ampia, è possibile creare un certificato per l'intera storia delle transazioni della blockchain, che rimane di dimensioni costanti, nonostante il numero di certificati "infilati" nello SNARK più recente.

In Mina un nodo validatore comprenderà: Uno zk-SNARK composto ricorsivamente (1kB) che prova la validità dell'intera storia passata della blockchain, e la radice del Merkle tree dello stato attuale (20kB); insieme provano la validità del bilancio di un utente. Tutto questo richiede solo millisecondi per la sincronizzazione.

[ https://miro.medium.com/max/1400/0*Par2LpIhHQPmO0oo L'utente finale verifica uno SNARK dello stato attuale che comprende tutte le certificazioni passate e il percorso Merkle. Tutto ciò consente all'utente di convalidare il proprio saldo. ]

Applicazioni, decentralizzazione e scalabilità

Applicazioni

La costruzione del Mina protocol permette di rendere la blockchain facilmente accessibile agli utenti finali attraverso il browser e nelle applicazioni senza scaricare centinaia di gigabyte e senza delegare la fiducia..

Immaginate un'applicazione un portefeuille portafoglio “iper leggero” in cui non siete tenuti a fidarvi che lo sviluppatore stia eseguendo correttamente la verifica dello stato. Questo processo di convalida potrebbe essere completato dagli utenti finali senza richiedere loro di avere un hardware dedicato a questo scopo.

Qualsiasi dispositivo sarebbe in grado di eseguire un nodo validatore,compresi, ma non solo, gli smartphone, nel browser, o sui telefoni cellulare basici (sì, il tuo vecchio indistruttibile Nokia).

Decentralizzazione

Come già detto, gli utenti nei protocolli di criptovaluta esistenti oggi finiscono per delegare la fiducia a servizi come i portafogli online o i client leggeri nel caso dei miner. Ciò potrebbe diventare problematico in caso di un attacco tipo 51%, poiché il compito di verificare le transazioni è spesso concentrato nelle mani di questi fornitori di servizi.

Fornendo ai partecipanti alla rete un modo semplice per ospitare i nodi validatori, la decentralizzazione viene incrementata in quanto le transazioni verrebbero convalidate da un numero più ampio di partecipanti della rete: gli utenti finali.

Scalabilità

In termini di aumento della scalabilità, l'aumento della velocità di elaborazione a migliaia di transazioni al secondo, nei protocolli esistenti, produrrebbe una maggiore quantità di dati necessari per la verifica. Si finirebbe inevitabilmente per avere una blockchain che cresce più velocemente di quanto possa essere verificata.

Poiché Mina mantiene la sua blockchain ad una dimensione costante, si ha a disposizione un modo per ridurre i dati necessari per verificare le transazioni, che permette anche di ottenere un’elevata velocità in quanto i dati di verifica sono compressi di molti ordini di grandezza.

Conclusioni

Creando una blockchain che si mantiene a dimensioni costanti, Mina presenta agli utenti finali una ridotta soglia d’ingresso alla verifica delle transazioni per conto proprio.

  • Non c'è bisogno di delegare la fiducia a chi è disposto a tenere il passo con i requisiti per gestire un nodo completo come avviene nelle blockchain tradizionali.
  • Ottenere il livello di sicurezza di un nodo completo su praticamente qualsiasi dispositivo scaricando un singolo SNARK, che funge da certificato per l'intera blockchain, e il finale del Merkle tree.
  • Utilizzando una composizione ricorsiva di SNARKs, la dimensione della blockchain è in grado di rimanere a circa 20kB.
  • Avere un'ampia rete di nodi di convalida aumenta la decentralizzazione in quanto un numero maggiore di utenti finali è attrezzato per partecipare alla verifica della rete.

Pensiero Bonus:

Puoi pensare a Mina come a una blockchain compressa in una PokéBall. Invece di stipare uno Snorlax in una Pokéball, Mina comprime la blockchain in uno SNARK.