Qu'est-ce qu'un zkEVM ?
Notions de base
Permettant la compatibilité avec la technologie des preuves à divulgation nulle de connaissance (ZKP), la machine virtuelle Ethereum à preuve nulle de connaissance (zkEVM) fonctionne comme une machine d'état Ethereum, facilitant l'exécution des contrats intelligents. L'intégration des zkEVM étend le champ d'application des zero-knowledge rollups (zk-rollups) sur le réseau Ethereum pour inclure les applications décentralisées (DApps). Cette avancée simplifie le déploiement de projets Ethereum, qu'ils soient existants ou nouveaux, en exploitant les ZKP pour renforcer les capacités de l'écosystème Ethereum.
Lorsque le réseau Ethereum a été proposé pour la première fois en 2014, la technologie des preuves à divulgation nulle de connaissance n'avait pas été prise en compte par les développeurs initiaux. Néanmoins, ces dernières années, les ZKP ont attiré une attention considérable et devraient jouer un rôle plus important dans le domaine de la blockchain. Par conséquent, les efforts pour intégrer la technologie ZKP à la machine virtuelle d'Ethereum se sont multipliés.
Pour comprendre l'essence d'un zkEVM, il est nécessaire de présenter brièvement ses deux principes fondamentaux : les zk-rollups et l'EVM.
Que sont les zk-rollups ?
En regroupant l'exécution de plusieurs transactions hors de la chaîne principale et en transmettant les données comme une seule transaction au réseau principal, les rollups constituent une solution d'optimisation qui augmente le débit et réduit les coûts des transactions.
Dans l'écosystème Ethereum, les transactions de rollup sont compressées puis transmises à la blockchain principale d'Ethereum pour vérification au prix d'une seule transaction. Le réseau principal d'Ethereum assure le règlement et vérifie les données transactionnelles contenues dans le rollup.
Une variante spécifique des rollups, appelée zk-rollups, s'appuie sur la technologie des preuves à divulgation nulle de connaissance. Les ZKP permettent de vérifier la validité d'une information sans révéler l'information elle-même. Dans le cas des zk-rollups, il n'est pas nécessaire de publier toutes les données de transaction sur la blockchain principale d'Ethereum ; seules les différences d'état, comme les modifications des comptes utilisateurs, accompagnées des preuves de validité sont requises. Cette approche réduit considérablement les frais de gaz.
La sécurité des zk-rollups repose sur la cryptographie ZKP, qui utilise des mécanismes cryptographiques pour vérifier les preuves et établir la confiance sans tiers. Cela contraste avec d'autres implémentations de rollups, comme les optimistic rollups, qui s'appuient sur la théorie des jeux économiques pour la sécurité. Dans les optimistic rollups, les mauvais acteurs sont dissuadés par des pertes potentielles tandis que les contestataires sont encouragés par des incitations.
Qu'est-ce que l'EVM ?
Dans Ethereum, la machine virtuelle Ethereum (EVM) fonctionne comme une machine d'état qui gère le système de comptes Ethereum et l'exécution des contrats intelligents. Chaque exécution d'un contrat intelligent entraîne la transition de l'EVM d'un ancien état vers un nouvel état, conformément aux règles prédéfinies pour calculer les états valides entre les blocs.
La notion d'état revêt une grande importance dans l'écosystème Ethereum. Elle est représentée par une structure de données Merkle Patricia Trie, servant de capture de l'état actuel d'Ethereum. Cette structure permet de retracer les détails des transactions depuis le bloc actuel jusqu'au bloc genesis.
L'effort collectif de tous les nœuds participants au maintien d'Ethereum assure la continuité et le consensus, donnant à chaque nœud une visibilité sur l'état précis actuel. L'EVM joue un rôle central pour préserver cette cohérence et maintenir l'intégrité du réseau Ethereum.
Comment fonctionne un zkEVM ?
Garantissant la continuité de l'état d'Ethereum et fournissant une correction vérifiable, le zkEVM répond à l'absence de prise en charge native des preuves à divulgation nulle de connaissance dans l'EVM. Cette approche permet de valider l'ensemble des facteurs de calcul impliqués, tout en préservant la sécurité et la confidentialité.
Dans l'univers du zkEVM, l'environnement Ethereum est reproduit de manière similaire aux zk-rollups. À partir d'un état initial, toutes les transactions sont traitées, aboutissant à un état mis à jour accompagné d'une ZKP associée. Cette preuve est ensuite soumise à un contrat intelligent vérificateur chargé de valider l'exactitude des sorties des états initial et mis à jour, éliminant ainsi la nécessité de vérifier chaque transaction individuellement.
Les zkEVM, construits sur la base de l'EVM, offrent aux développeurs la commodité de porter facilement les DApps et contrats intelligents Ethereum vers les zkEVM sans devoir développer des ZKP. En substance, les zkEVM étendent la fonctionnalité des zk-rollups pour inclure l'exécution de contrats intelligents, en complément des échanges de tokens et des paiements précédemment pris en charge sans intégration zkEVM.
Grâce à la compatibilité héritée de l'EVM, les développeurs peuvent concevoir de nouveaux produits en utilisant les outils EVM existants et le langage Solidity, tout en bénéficiant de la sécurité renforcée offerte par le zkEVM. Les utilisateurs profitent également des mêmes DApps et outils familiers, désormais renforcés par de meilleures protections de sécurité et de confidentialité.
Distinguer compatibilité EVM et équivalence EVM
Lorsqu'une blockchain est qualifiée de compatible EVM, cela signifie qu'elle fournit un environnement capable d'héberger des DApps écrites en Solidity, le langage de développement des smart contracts pour Ethereum.
En fait, les développeurs Ethereum peuvent transférer facilement du code de DApp existant d'Ethereum vers d'autres chaînes compatibles EVM avec des ajustements minimes. Pour les utilisateurs, l'adresse sur une chaîne compatible EVM est indistinguable de leur adresse Ethereum.
Par conséquent, ces adresses sont compatibles avec des portefeuilles populaires comme Metamask et Trust Wallet. Parmi les chaînes compatibles EVM notables figurent actuellement BNB Chain, Avalanche C-Chain et Polygon.
Il est essentiel de ne pas confondre compatibilité EVM et équivalence EVM. L'équivalence EVM signifie que, du point de vue d'un développeur de DApp, les rollups de couche 2 ressemblent étroitement à la couche 1 d'Ethereum. Pour illustrer avec une analogie système d'exploitation, l'équivalence EVM est comparable à la restauration de fichiers et de paramètres via Apple iCloud lors du passage d'un ancien ordinateur à un nouveau sous macOS.
En revanche, la compatibilité EVM signifie que si l'on passe à un système Windows sur un nouvel ordinateur, les fichiers d'origine doivent être récupérés via un stockage cloud et convertis pour restaurer les paramètres et fichiers antérieurs.
Classification des zkEVM : équilibre entre efficacité et compatibilité
La génération et la vérification efficaces des ZKP en utilisant l'EVM constituent un défi en raison de l'absence de prise en charge native des ZKP par Ethereum. Le processus peut être extrêmement lent, avec des durées potentielles s'étalant sur plusieurs heures. Néanmoins, il est crucial de trouver un compromis entre la compatibilité EVM et l'efficacité des ZKP.
Vitalik Buterin, le fondateur d'Ethereum, a classé les zkEVM en quatre types distincts, chacun représentant des compromis uniques entre l'efficacité des ZKP et la compatibilité EVM. Ces classifications rappellent le trilemme de la blockchain, qui met en lumière les compromis inhérents entre décentralisation, sécurité et scalabilité.
Type 1 : équivalence au niveau du consensus
Le Type 1 zkEVM, également appelé enshrined rollup, atteint une équivalence complète avec Ethereum au niveau du consensus. L'état de la chaîne zkEVM et les transactions reflètent ceux d'Ethereum, permettant la vérification mutuelle des blocs et une intégration directe avec les clients d'exécution Ethereum. Bien que ce type améliore la scalabilité d'Ethereum, l'efficacité des ZKP reste un inconvénient majeur, nécessitant d'importantes ressources de calcul pour la vérification. Les solutions potentielles incluent l'utilisation d'un grand nombre de validateurs parallèles ou des circuits intégrés spécialisés pour les zk-SNARKs.
Type 2 : équivalence au niveau du bytecode
Les zkEVM de Type 2 possèdent une équivalence complète avec l'EVM, mais pas nécessairement avec Ethereum lui-même. Tout en maintenant la compatibilité avec les DApps Ethereum existantes, les outils de débogage et l'infrastructure développeur, les Type 2 optimisent dans une certaine mesure les temps du prover. Toutefois, leur efficacité reste limitée et coûteuse, et manque souvent de synergie avec les méthodologies ZK.
Type 2.5 : frais de gaz modifiés
Les zkEVM de Type 2.5 partagent les avantages et les inconvénients du Type 2, mais offrent des frais de gaz légèrement réduits.
Type 3 : équivalence au niveau du bytecode avec meilleure efficience
S'appuyant sur le Type 2, les zkEVM de Type 3 privilégient une plus grande efficacité ZK au détriment d'une compatibilité totale. Pour y parvenir, certaines fonctions, comme les précompilations, sont omises, ce qui impose de réécrire les DApps reposant sur ces fonctionnalités.
Type 4 : équivalence au niveau du langage de développement
Les zkEVM de Type 4 offrent une performance ZK optimale mais sacrifient la compatibilité au niveau des langages de haut niveau. Bien qu'ils offrent une efficacité supérieure, leur compatibilité avec les systèmes existants peut être limitée.
Conclusion
L'implémentation du zkEVM poursuit pour objectif principal de permettre le support du calcul ZKP pour l'exécution des contrats intelligents, étendant ainsi les DApps à tous les protocoles compatibles EVM. Toutefois, les applications de la technologie ZKP dépassent ce seul domaine.
La technologie ZKP a le potentiel d'être compatible avec des cas d'usage Web2. En combinant les ZKP avec diverses applications Web2, l'intégration des applications Web3 peut être améliorée de manière transparente, offrant aux utilisateurs une expérience plus fluide et conviviale. Cette approche permet aux personnes habituées aux navigateurs Internet traditionnels d'accéder aux avantages du Web3, favorisant ainsi une adoption plus large du paradigme Web3.