Una delle tecnologie più promettenti all'interno dell'ecosistema Ethereum è zkEVM o Zero-Knowledge EVM, un progetto che cerca non solo di migliorare le prestazioni della Ethereum Virtual Machine, ma anche di fare un enorme salto tecnologico che si tradurrà, non solo in una maggiore velocità di funzionamento ma anche nell'aggiungere miglioramenti che proteggeranno la nostra privacy quando interagiamo con i contratti intelligenti che vengono eseguiti utilizzando questo nuovo EVM.
EQuesto progetto è promosso dagli sviluppatori di zkSync, una società denominata Matter Labs che dal 2018 ha cercato di costruire una soluzione di scalabilità e privacy unica nel suo genere. Inoltre, trattandosi di una soluzione di tipo software libero, può essere adattata a tutti i progetti derivati da Ethereum, favorendo così lo sviluppo di questo ecosistema alla ricerca di nuovi orizzonti.
zkEVM, la potenza di ZKP raggiunge gli smart contract
Per capire cos'è zkEVM, dobbiamo conoscere le due tecnologie che questo progetto cerca di unire. Innanzitutto, l'acronimo zk sta per il fatto che questo progetto utilizza il ben noto Zero prove di conoscenza o zero prove di conoscenza per la sua funzionalità. Questa funzionalità consente di aggiungere funzioni uniche incentrate sull'offerta di un ambiente più privato all'esecuzione di contratti intelligenti che si verificano sull'EVM e che sono archiviati sulla blockchain.
Ricordiamoci che in ogni interazione che svolgiamo con uno smart contract (ad esempio quando facciamo uno scambio in Uniswap), questo processo genera una serie di dati che vengono archiviati nella blockchain di Ethereum (o nella rete che stiamo utilizzando).
Tutte queste informazioni sono pubbliche e pseudo-anonime e possono essere verificate e tracciate in ogni momento. Lo pseudo-anonimato in ogni caso protegge la nostra privacy in modo abbastanza efficace, ma lascia sempre tracce che altri possono utilizzare per tracciare la nostra attività e identificarci nella vita reale. Con ZKP è possibile, non solo evitare questa debolezza, ma allo stesso tempo fare in modo che le operazioni crittografiche occupino meno spazio, siano ugualmente verificabili e verificabili, oltre ad aprire la possibilità di gestire gli stati di calcolo in modo molto più efficace ed efficiente modo.
Ora, se uniamo gli ZKP e li integriamo nell'EVM, abbiamo la capacità di trasformare reti come Etheruem e derivati in spazi molto più sicuri, potenti e scalabili, proprio gli obiettivi che zkEVM cerca di raggiungere:
- Ridurre le commissioni sulle operazioni, grazie alla riduzione del costo computazionale delle operazioni.
- Mantieni il funzionamento affidabile delle reti che implementano zkEVM.
- Migliora la privacy e la sicurezza della rete in cui è distribuito zkEVM.
- Abilita le nuove tecnologie che possono essere applicate agli smart contract. Ad esempio, la possibilità di migliorare l'esperienza di utilizzo di token NFT o altre funzioni avanzate per altri standard.
zk, una tecnologia che cambia tutto
Ora, spieghiamo alcuni concetti in modo un po' più approfondito prima di continuare:
Cos'è zk?
Quando vediamo zk nel nome di zkEVM, dovremmo pensare come abbiamo già menzionato in ZKP o Zero Knowledge Proofs.
Uno Zero Knowledge Protocol, o ZKP, è un protocollo crittografico avanzato utilizzato per creare sistemi distribuiti altamente sicuri e anonimi. I protocolli ZKP consentono di condividere e verificare le informazioni senza rivelare dati non necessari, mantenendo così un livello di sicurezza molto elevato.
Fondamentalmente, questo meccanismo di crittografia cerca di creare un modo per mostrare al mondo che esiste un segreto, qualcosa di così segreto che solo la persona che ha il segreto in suo possesso sa esattamente di cosa si tratta.
Ma come fai a dimostrare di avere un segreto senza rivelarlo? Ebbene, per questo ZKP utilizza una serie di dati matematici che consentono ad altre persone di verificare che il segreto esista effettivamente ed è in possesso di chi afferma di averlo, ma in nessun momento viene rivelata alcuna informazione su detto segreto o sul suo contenuto. , né nulla che consenta di mettere in relazione le informazioni fornite per la verifica con la natura del segreto stesso.
Pertanto, ZKP ti consente di rivelare un segreto senza rivelarlo effettivamente, semplicemente offrendo una prova matematica che il segreto esiste e che puoi fidarti della sua realtà. La cosa buona di questo tipo di crittografia è che non è solo sicura contro gli attacchi attuali, ma anche contro quelli futuri (es: ZKP è resistente all'informatica quantistica), oltre ad essere computazionalmente più efficiente in termini di esecuzione e spazio utilizzato da loro prove crittografiche. Per questo motivo, molti progetti sono interessati a questo tipo di tecnologia per migliorare l'efficienza, la sicurezza e la scalabilità delle reti blockchain.
zk-Rollup, l'evoluzione dei Rollup
Sebbene gli ZKP siano estremamente potenti, se combiniamo questo potere con i Rollup, le cose cambiano radicalmente in meglio. I rollup sono una tecnologia di scalabilità sidechain che ha un'operazione abbastanza semplice. L'idea è quella di raggruppare una serie di transazioni (es: tutte le operazioni di un blocco) e da esse generare un'unica transazione che viene pubblicata sulla mainnet della rete a cui è collegata detta sidechain.
Pertanto, un rollup funziona come un riepilogo della transazione delle operazioni che viene pubblicato su una mainnet, mentre è collegato a un insieme di operazioni su una sidechain e dove può essere verificato in modo chiaro e sicuro. Non si tratta di una nuova tecnologia, infatti, il Lightning Network utilizza un sistema molto simile, poiché le operazioni dei canali LN finiscono per essere sintetizzate in un'unica operazione all'interno di Bitcoin.
I rollup sono molto utili, ma c'è un problema: la crittografia attualmente utilizzata in blockchain (crittografia asimmetrica) genera grandi prove che sono computazionalmente inefficienti e con alcuni problemi di fungibilità (es: nei rollup ottimistici, è possibile manipolare economicamente le operazioni).
Così, con l'obiettivo di migliorare questa tecnologia, sono nati gli zk-Rollup, che non solo hanno tutti i vantaggi dei Rollup e ZKP, ma risolvono anche i problemi di sicurezza di alcune implementazioni di Rollup.
Architettura e funzionamento di zkEVM
Ora, realizzare il processo che consente a zkEVM di funzionare è piuttosto complesso, su cui gli sviluppatori di Matter Labs stanno lavorando dal 2018.
Capire come funziona EVM
Innanzitutto, esaminiamo come funziona il normale EVM: tAbbiamo gli smart contract che sono tutti questi programmi scritti in Solidity che possiamo vedere nei repository blockchain e software dei progetti DApps che conosciamo. Si può dire che questo codice sia ciò che fa funzionare Dapps, anche se non è del tutto corretto. L'EVM non esegue direttamente il linguaggio Solidity, perché l'EVM non interpreta direttamente il linguaggio.
Veniamo così al secondo punto, la compilazione degli smart contract. Ogni smart contract scritto in Solidity (o compatibile) viene compilato e da questo viene generato un bytecode, un codice macchina che l'EVM è in grado di gestire. Questo bytecode è noto come Smart Contract Bytecode ed è il preludio all'esecuzione di smart contract sulla rete.
Naturalmente, questo bytecode è composto da una serie di OP_CODE o codici operazione, che sono istruzioni precise che l'EVM ha implementato e può eseguire per far funzionare effettivamente gli smart contract. Questo OP_CODE generato fornisce le istruzioni precise che l'EVM deve eseguire per svolgere il suo lavoro: permetterci di utilizzare le Dapp o qualsiasi operazione all'interno della rete. Questo OP_CODE può essere esaminato in dettaglio all'interno della specifica trovata in Carta gialla di Ethereum.
Infine, i nodi della rete, tutti con EVM, eseguono quel codice, verificano che tutto sia corretto e aggiungono le transazioni e gli stati alla blockchain, lasciando un chiaro consenso di loro e una prova verificabile di tali operazioni.
Miglioramento dell'EVM con zkEVM
L'operazione di cui sopra è ciò che possiamo vedere nell'EVM e nei suoi derivati, e questo include zkEVM. La differenza più fondamentale tra EVM e zkEVM è che quest'ultimo genera un ambiente di esecuzione sicuro schermato contro agenti esterni, anche se appartengono alla stessa rete.
Ad esempio, nell'EVM un operatore del nodo può vedere le operazioni eseguite. Si possono “vedere” nel senso che è possibile tracciare i dati di ingresso e uscita di queste operazioni, compresi i loro stati intermedi. Ciò è possibile perché l'EVM ha un ambiente di runtime aperto, la crittografia utilizzata nel processo serve solo a proteggere alcune sezioni del codice (come gli indirizzi e l'autorizzazione alla gestione dei token).
Ma in zkEVM questo cambia radicalmente. In un ambiente ZKP, possiamo vedere i dati di input, ma questi non sono in realtà i dati effettivi, ma una serie di dati generati dalla crittografia ZKP. Quindi, in sostanza, l'input dei dati è una serie di dati che consente allo zkEVM di verificare che ciò che diciamo sia vero, ma senza mai rivelare le informazioni reali che hanno dato origine a quei dati.
Questi dati di input sono accompagnati da dati di esecuzione e una serie di dati token, che zkEVM aggrega. Dopo averli raggruppati, lo zkEVM ha tutto il necessario per applicare il processo che gli consentirà di sapere se i dati di input sono corretti e, in tal caso, lo zkEVM genera le modifiche di stato che indicano alla rete che lo smart contract è stato eseguito e, Inoltre, vengono generati test che indicano che tali dati e l'esecuzione sono corretti.
Alla fine, a seconda dell'implementazione di zkEVM (es: è nativa – L1, o è all'interno di una sidechain – L2), questi dati possono essere inviati ai nodi di rete in modo che vengano eseguiti ulteriori passaggi di verifica, terminando così con il processo .
Facilitare lo sviluppo
Ora, perché preoccuparsi di complicare il design dell'EVM? Ebbene, prima di tutto, zkEVM non solo consente di rendere più privata l'esecuzione di contratti intelligenti, ma ci dà anche la possibilità di utilizzare le risorse computazionali dei nodi in modo più efficace.
zkEVM è stato appositamente progettato per essere una soluzione sidechain, in particolare su zkSync e sui suoi famosi zk-Rollup. Questo ha tre obiettivi:
- Essendo sidechain, alcuni processi di consenso possono essere allentati per aumentare la scalabilità. Tuttavia, la connessione sidechain è diretta a L1, ogni transazione in zkEVM genera prove uniche e verificabili che vengono registrate non solo nella sidechain ma anche in L1 come rollup. Questo cerca di mantenere un alto livello di sicurezza aumentando la scalabilità, non solo con le sidechain, ma anche nello sharding.
- Il linguaggio di programmazione con zkEVM può evolversi. Mentre Solidity può essere utilizzato per convenzione e compatibilità, zkEVM può utilizzare altri linguaggi compatibili con LLVM, inclusi linguaggi come C/C++, Zinc (un linguaggio di sviluppo e un framework ispirato e costruito su Rust). Ciò significa che zkEVM può essere eseguito in modo più efficiente dal punto di vista computazionale utilizzando le risorse del nodo in modo più diretto, anche con la possibilità di ottenere il parallelismo.
3. Facilita lo sviluppo di applicazioni ZKP, poiché il framework Zinc aiuta a generare in modo sicuro applicazioni ZKP per questa VM.
Altri progetti all'orizzonte
zkEVM di Matter Labs è il progetto che ha avviato tutto questo sviluppo di ZKP oltre a EVM, ma altri progetti hanno già aderito a questa iniziativa. Ad esempio, Polygon (MATIC) ha anche annunciato la propria soluzione zkEVM, nota anche come Polygon Hermez, un progetto che è stato presentato a marzo 2021. Naturalmente, Polygon zkEVM funziona in modo completamente diverso rispetto a zkEVM di Matter Labs.
Allo stesso modo, abbiamo progetti come Scroll o StarkNet, due progetti incentrati sull'offerta di soluzioni zk-Rollups uniche e potenti che cercano di diventare soluzioni di scalabilità di prim'ordine per Ethereum e altre reti compatibili.
Questi sono attualmente i progetti più grandi e sviluppati, ma sicuramente vedremo altri progetti di questa natura uscire e essere presentati al mondo. Alla fine, lo sviluppo della blockchain sembra inarrestabile e progetti come zkEVM lo dimostrano molto chiaramente.