Cos'è uno zkEVM?
Fondamenti
Abilitando la compatibilità con la tecnologia delle prove a conoscenza zero (ZKP), la zero-knowledge Ethereum Virtual Machine (zkEVM) funziona come una macchina di stato di Ethereum, facilitando l'esecuzione di smart contract. L'integrazione degli zkEVM amplia lo spettro dei rollup a conoscenza zero (zk-rollup) sulla rete Ethereum per includere applicazioni decentralizzate (DApp). Questo progresso semplifica il dispiegamento di progetti Ethereum, sia esistenti che nuovi, sfruttando le ZKP per potenziare le capacità dell'ecosistema Ethereum.
Quando la rete Ethereum fu proposta per la prima volta nel 2014, il concetto di tecnologia delle prove a conoscenza zero non fu preso in considerazione dagli sviluppatori originali. Tuttavia, negli ultimi anni le ZKP hanno attirato una notevole attenzione e si prevede che giocheranno un ruolo più consistente nel dominio blockchain. Di conseguenza, c'è stato un aumento degli sforzi per integrare la tecnologia ZKP con la macchina virtuale di Ethereum.
Per comprendere l'essenza di uno zkEVM, è necessario fornire una panoramica concisa dei suoi due principi fondamentali: zk-rollup ed EVM.
Cosa sono gli Zk-Rollup?
I rollup, compilando più esecuzioni di transazioni fuori dalla chain principale e trasmettendo i dati come un'unica transazione alla rete principale, servono come soluzione di scaling che aumenta la capacità e riduce i costi delle transazioni.
Nell'ecosistema Ethereum, le transazioni aggregate nei rollup vengono compresse e successivamente inviate alla mainnet di Ethereum per la verifica al costo di una singola transazione. La mainnet di Ethereum funge da livello di regolamento e verifica i dati delle transazioni inclusi nel rollup.
Una variante specifica dei rollup, nota come zk-rollup, sfrutta la tecnologia delle prove a conoscenza zero. Le ZKP permettono di verificare la validità di informazioni senza rivelare le informazioni stesse. Nel caso degli zk-rollup non è necessario pubblicare tutti i dati delle transazioni sulla mainnet di Ethereum; invece sono sufficienti le differenze di stato, come le variazioni nello stato degli account utente, insieme alle prove di validità. Questo approccio riduce sostanzialmente le commissioni del gas.
La sicurezza degli zk-rollup si basa sulla crittografia delle ZKP, che utilizza meccanismi crittografici per verificare le prove e garantire trustlessness. Questo contrasta con altre implementazioni di rollup, come gli optimistic rollup, che si affidano alla teoria dei giochi economica per la sicurezza. Negli optimistic rollup gli attori malevoli vengono disincentivati da possibili perdite, mentre i challenger sono motivati da incentivi.
Cos'è l'EVM?
All'interno di Ethereum, la Ethereum Virtual Machine (EVM) funziona come una macchina di stato che facilita il funzionamento del sistema di account di Ethereum e l'esecuzione degli smart contract. Ogni esecuzione di uno smart contract induce l'EVM a transitare da uno stato precedente a uno stato nuovo, seguendo le regole predefinite per il calcolo degli stati validi tra i blocchi.
La nozione di stato ha un'importanza significativa nell'ecosistema Ethereum. È rappresentata da una struttura dati Merkle Patricia Trie, che funge da istantanea dello stato corrente di Ethereum. Questa struttura consente di tracciare i dettagli delle transazioni dal blocco attuale fino al blocco genesis.
Lo sforzo collettivo di tutti i nodi partecipanti nel mantenere Ethereum garantisce continuità e consenso, concedendo a ogni nodo visibilità sullo stato corrente preciso. L'EVM assume un ruolo fondamentale nel sostenere questa coerenza, salvaguardando l'integrità della rete Ethereum.
Come funziona uno zkEVM?
Garantendo la continuità dello stato di Ethereum e fornendo correttezza verificabile, lo zkEVM emerge come soluzione alla mancanza di supporto nativo per le prove a conoscenza zero nell'EVM. Questo approccio assicura la validazione di tutti i fattori computazionali coinvolti, mantenendo al contempo sicurezza e privacy.
Nell'ambito degli zkEVM, l'ambiente Ethereum viene replicato in modo analogo agli zk-rollup. Partendo dallo stato iniziale, tutte le transazioni vengono elaborate, ottenendo uno stato aggiornato accompagnato da una ZKP associata. Questa prova viene poi inviata a un contratto smart verificatore responsabile della convalida dell'esattezza degli output sia dello stato iniziale sia di quello aggiornato, eliminando la necessità di verificare singolarmente ogni transazione.
Gli zkEVM, costruiti sulla base dell'EVM, offrono agli sviluppatori la comodità di portare senza soluzione di continuità DApp e smart contract Ethereum agli zkEVM senza doversi occupare dello sviluppo ZKP. In sostanza, gli zkEVM estendono la funzionalità degli zk-rollup per includere l'esecuzione di smart contract, oltre agli scambi di token e ai pagamenti precedentemente supportati senza integrazione zkEVM.
Grazie alla compatibilità ereditata dall'EVM, gli sviluppatori possono costruire nuovi prodotti utilizzando gli strumenti EVM esistenti e il linguaggio Solidity, beneficiando al contempo della maggiore sicurezza fornita dagli zkEVM. Anche gli utenti sperimentano gli stessi vantaggi continuando a utilizzare DApp e strumenti familiari, ora rafforzati con migliori misure di sicurezza e privacy.
Differenziare compatibilità EVM ed equivalenza EVM
Quando una blockchain è etichettata come compatibile con l'EVM, ciò significa che fornisce un ambiente capace di ospitare DApp scritte nel linguaggio Solidity, specificamente pensato per lo sviluppo di smart contract su Ethereum.
Infatti, gli sviluppatori Ethereum possono trasferire senza problemi il codice di DApp esistenti da Ethereum ad altre chain compatibili con l'EVM con minimi aggiustamenti. Per gli utenti, un indirizzo su una chain compatibile EVM è indistinguibile dal loro indirizzo Ethereum.
Di conseguenza, questi indirizzi sono compatibili con wallet popolari come Metamask e Trust Wallet. Tra le chain attualmente compatibili con l'EVM si annoverano BNB Chain, Avalanche C-Chain e Polygon.
È essenziale non confondere la compatibilità con l'equivalenza EVM. L'equivalenza EVM indica che, dal punto di vista di uno sviluppatore di DApp, i rollup Layer 2 somigliano molto a Ethereum Layer 1. Per illustrare con un'analogia al sistema operativo, l'equivalenza EVM è paragonabile al ripristino di file e impostazioni tramite iCloud di Apple quando si passa da un vecchio a un nuovo computer che usa lo stesso sistema Apple.
Al contrario, la compatibilità EVM significa che passando a un sistema Windows su un nuovo computer, i file originali devono essere recuperati tramite cloud storage e convertiti per ripristinare le impostazioni e i file precedenti.
Classificazione degli zkEVM: bilanciare efficienza e compatibilità
La generazione e la verifica efficienti delle ZKP utilizzando l'EVM è una sfida a causa della mancanza di supporto intrinseco alle ZKP in Ethereum. Il processo può essere estremamente lento, con possibili durate di diverse ore. Nonostante ciò, rimane cruciale trovare un equilibrio tra compatibilità EVM ed efficienza ZKP.
Vitalik Buterin, il fondatore di Ethereum, ha classificato gli zkEVM in quattro tipi distinti, ciascuno incarnando compromessi unici riguardo l'efficienza delle ZKP e la compatibilità con l'EVM. Queste classificazioni richiamano il concetto del trilemma della blockchain, che evidenzia i compromessi intrinseci tra decentralizzazione, sicurezza e scalabilità.
Tipo 1: Equivalenza a livello di consenso
Lo zkEVM di Tipo 1, noto anche come enshrined rollup, raggiunge equivalenza completa con Ethereum a livello di consenso. Lo stato della chain zkEVM e le transazioni rispecchiano quelli di Ethereum, permettendo la verifica reciproca dei blocchi e l'integrazione diretta con i client di esecuzione di Ethereum. Sebbene questo tipo migliori la scalabilità di Ethereum, l'efficienza delle ZKP resta un notevole svantaggio, richiedendo ingenti risorse computazionali per la verifica. Soluzioni potenziali includono l'impiego su larga scala di validator paralleli o circuiti integrati specializzati per zk-SNARKs.
Tipo 2: Equivalenza a livello di bytecode
Gli zkEVM di Tipo 2 possiedono equivalenza completa con l'EVM, ma non con Ethereum in senso pieno. Pur mantenendo la compatibilità con le DApp Ethereum esistenti, gli strumenti di debug e l'infrastruttura per sviluppatori, gli zkEVM di Tipo 2 ottimizzano in qualche misura i tempi del prover. Tuttavia, la loro efficienza rimane limitata e costosa, senza piena sinergia con le metodologie ZK.
Tipo 2.5: Tariffe del gas modificate
Gli zkEVM di Tipo 2.5 condividono vantaggi e svantaggi del Tipo 2, ma offrono commissioni del gas leggermente ridotte.
Tipo 3: Equivalenza a livello di bytecode con efficienza migliorata
Basandosi sul Tipo 2, gli zkEVM di Tipo 3 privilegiano una maggiore efficienza ZK rispetto alla compatibilità completa. Per ottenere ciò, alcune funzionalità, come le precompiles, vengono omesse, rendendo necessario riscrivere le DApp che si basano su tali funzionalità.
Tipo 4: Equivalenza a livello del linguaggio di sviluppo
Gli zkEVM di Tipo 4 mostrano una performance ZK ottimale ma sacrificano la compatibilità a livello di linguaggio ad alto livello. Pur offrendo una maggiore efficienza, la loro compatibilità con i sistemi esistenti può essere scarsa.
Conclusione
L'implementazione dello zkEVM ha l'obiettivo principale di abilitare il calcolo ZKP per l'esecuzione degli smart contract, estendendo così le DApp a tutti i protocolli compatibili con l'EVM. Tuttavia, le applicazioni della tecnologia ZKP vanno oltre questo ambito.
La tecnologia ZKP ha il potenziale per interoperare con casi d'uso Web2. Combinando le ZKP con varie applicazioni Web2, l'integrazione delle applicazioni Web3 può essere migliorata senza soluzione di continuità, offrendo agli utenti un'esperienza più fluida e accessibile. Questo approccio permette a chi è abituato ai browser tradizionali di accedere ai vantaggi del Web3, favorendo infine un'adozione diffusa del paradigma Web3.