Accedi

Zk Rollup: transazioni “impacchettate” fuori dalla blockchainTempo di lettura: 6 min.

menu categorie articoli

Nel lungo cammino delle cripto verso l'utilizzo di massa, su Ethereum si continuano a provare svariate soluzioni di scalabilità a piu livelli. Vediamo cosa è Zk Rollup, una soluzione che sta riscuotendo un buon successo negli ultimi mesi.

Zk Rollup è una soluzione di scaling che di recente sta riscuotendo un discreto successo, compiendo buoni passi in avanti sul piano implementativo.

La Fondazione Ethereum è impegnata principalmente nella ricerca e lo sviluppo di Ethereum 2.0, ossia sulla scalabilità on chain. Altri team, intanto, stanno lavorando a interessanti soluzioni volte a limitare il carico di lavoro sulla blockchain.

Zk Rollup è una soluzione di scaling di tipo off chain.

Tutte le costruzioni di tipo rollup (Zk Rollup non è l’unica) rientrano nella categoria delle soluzioni di scalabilità off chain. Hanno pertanto l’obiettivo di snellire il carico sulla blockchain.

Le idee alla base delle costruzioni rollup già esistevano da anni. Ma la progettazione delle attuali iterazioni trova le sue fondamenta in un post del settembre 2018 di Vitalik Buterin sul forum Eth Research.

In questo post Vitalik descrive il seguente schema:

  1. i cosiddetti “relayers” raccolgono le transazioni inviate dagli utenti e generano una prova “zero knowledge” a garanzia della loro validità;
  2. i relayers inviano ad uno smart contract sulla blockchain di Ethereum la prova, insieme alle transazioni raggruppate;
  3. lo smart contract verifica la prova e aggiorna un singolo hash che rappresenta lo stato;
  4. tutte le transazioni sono disponibili nella cronologia dei blocchi della rete, ma i dati della firma restano off chain, così come il calcolo necessario per verificarli.

Lo schema di Zk Rollup

L’essenza di Zk Rollup consiste nel comprimere e archiviare lo stato dell’utente in un Merkle tree e trasferire il cambio di stato alla blockchain. La correttezza del processo di modifica dello stato dell’utente è garantita dalla prova ZK Snark (vedi sotto).

Nel modello di Zk Rollup si distinguono due attori:

  • Utente: crea la transazione di trasferimento e la firma con la chiave privata, successivamente invia la transazione al relayer.
  • Relayer: provvede alla raccolta e alla verifica delle transazioni dell’utente, all’aggregazione in “lotti”, alla generazione della prova Zk Snark e, infine, all’invio allo smart contract sulla blockchain dei dati semplificati delle transazioni, della prova e del Merkle tree del nuovo stato. Il Relayer percepisce una fee dall’utente.

Quando il relayer riceve la transazione, deve “eseguirla”. L’esecuzione della transazione consiste essenzialmente nel modificare lo stato degli account coinvolti.

Prendiamo come esempio una semplice transazione di invio di fondi da un utente a un altro.

Il relayer esegue la transazione di trasferimento, modifica nella struttura del Merkle tree il nodo foglia dell’account di invio e di quello che riceve, infine ricalcola la radice del nuovo Merkle tree.

Ma se viene inoltrata solo la radice dello stato globale, come ci si può assicurare che il relayer si sia comportato in maniera corretta, senza manomettere qualche dato?

A prima vista verrebbe da dire che il relayer deve inviare allo smart contract non solo la radice del Merkle tree, ma anche tutte le transazioni, in modo che chiunque possa verificare se il relayer abbia barato nel calcolare il nuovo stato risultante dalle suddette transazioni.

Ma se fosse questa la soluzione, equivarrebbe a spostare di nuovo tutti i dati sulla blockchain, vanificando l’obiettivo di trasferirne il carico su un altro livello.

Allora è qui che entra in gioco la tecnologia Zero Knowledge.

Detto in maniera molto semplificata, nella crittografia le prove zero knowledge consentono di provare di sapere qualcosa o di aver fatto qualcosa, senza rivelare quale sia la cosa segreta.

Nello schema di Zk Rollup, il relayer, dopo aver raccolto una serie di transazioni, deve generare una prova con dei circuiti ZK predefiniti:

  • assicurarsi che siano corretti il nonce, il valore e le fee delle transazioni che si sono susseguite, e che la firma sia corretta;
  • assicurarsi che il processo di migrazione dello stato precedente a quello successivo sia corretto;

La prova viene presentata allo smart contract sulla blockchain, insieme allo stato aggiornato e a informazioni semplificate riguardanti le tranzazioni, esclusi il nonce e la firma.

A questo punto lo smart contract deve solo verificare che la prova sia corretta. In caso affermativo, il nuovo stato verrà registrato nello smart contract con sostituzione dello stato originale.

Sviluppi e limiti

Ci sono dei team che già si avvalgono di Zk Rollup per sfruttarne la scalabilità per alcuni casi d’uso specifici.

Uno dei team maggiormente attivo sul fronte di Zk Rollup è Loopring.

Stanno lavorando alla realizzazione di un DEX (exchange decentralizzato) con order book, che consenta scambi ad elevata frequenza.

Si tratta di un progetto che vale la pena di essere seguito. Sappiamo infatti che uno dei principali limiti dei DEX sulla blockchain risiede nella lentezza delle transazioni e nel rischio di congestionamento della rete.

Zk Rollup è una soluzione ancora bel lontana dall’essere perfetta.

La creazione di prove di Zero Knowledge richiede una notevole quantità di potenza di calcolo. La latenza per le conferme dei blocchi aumenta perché la prova ZK viene ritardata di un numero di blocchi.

È proibitivo generare prove ZK per calcoli arbitrari, rendendo impossibile il supporto per gli smart contract general purpose, prima di rilevanti progressi nelle tecniche crittografiche alla base.

In conclusione possiamo affermare che Zk Rollup è un nuovo schema di espansione del layer 2.

L’idea principale alla base di questa soluzione è di usare la blockchain come livello di archiviazione, piuttosto che motore del consenso.

Non perdere le ultime notizie

Se questo articolo ti è piaciuto e vuoi rimanere sempre aggiornato sul mondo cripto e blockchain iscriviti alla nostra Newsletter

Picture of Guest

Guest

Picture of Guest

Guest

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *