
Comparaison des technologies zkEVM et zkVM : déverrouiller la puissance du calcul vérifiable
TechFlow SélectionTechFlow Sélection

Comparaison des technologies zkEVM et zkVM : déverrouiller la puissance du calcul vérifiable
Cet article comparera les différences techniques entre zkEVM et zkVM, et présentera le zkVM RISC Zero ainsi que son réseau Bonsai à venir.
Rédaction : Erik Kaneda, ingénieur principal chez RISC Zero
Traduction : Maxlion
Introduction
Cet article compare les différences techniques entre zkEVM et zkVM, et présente le zkVM de RISC Zero ainsi que son réseau Bonsai à venir. RISC Zero est un zkVM universel : le zkVM de RISC Zero est un ordinateur vérifiable fonctionnant de manière similaire à un véritable microprocesseur embarqué RISC-V, permettant aux programmeurs d'écrire des preuves ZK comme tout autre code. Il prend en charge Rust et C++ pour l'écriture de preuves ZK, ainsi que tout langage pouvant être compilé en RISC-V.
Contexte
À mesure que la complexité des contrats intelligents augmente, les dApps deviennent plus avancées, l'espace bloc se raréfie, et le coût d'exécution du code sur chaîne grimpe. Autrement dit, si votre logique DeFi devient coûteuse en calculs ou si votre jeu sur chaîne requiert davantage de puissance de traitement, vous devriez envisager d'utiliser un zkVM ou un zkEVM afin de déporter la logique applicative hors chaîne.
Dans ce billet, je souhaite expliquer l'importance d'une seule lettre dans ce contexte. Je commencerai par un aperçu de l'EVM, puis aborderai le zkEVM, avant de passer au zkVM. Le zkEVM vous permet d'exécuter des applications Solidity hors chaîne, tandis que le zkVM de RISC Zero et le réseau Bonsai à venir vous permettent d'écrire du code évolutif et indépendant de toute blockchain en utilisant Rust.
Aperçu rapide de l’EVM :
EVM signifie Ethereum Virtual Machine (machine virtuelle Ethereum). Vous pouvez la considérer comme un logiciel exécutant toutes les transactions sur Ethereum.

Chaque nœud participe au réseau Ethereum en exécutant ce logiciel (via des implémentations telles que geth). Sur Ethereum, les transactions sont représentées par du code, sous une forme appelée bytecode EVM, qui correspond aux instructions destinées à l'EVM. Ces instructions traitent principalement de calculs mathématiques, de récupération d'informations sur la blockchain, et d'échanges financiers. Il existe de nombreuses machines virtuelles dans le monde, chacune ayant ses spécialités. La machine virtuelle d’Ethereum est particulièrement importante car elle convient bien aux applications de finance décentralisée (DeFi).
Qu’est-ce que le « zk » et pourquoi tout le monde le place-t-il devant d’autres mots ?
L’une des tendances les plus populaires récemment consiste à ajouter « zk » devant différents termes. Ces deux lettres désignent les preuves à connaissance nulle (zero-knowledge proofs). Wikipédia propose de nombreux exemples (mon préféré étant le problème des « deux boules et de l’ami daltonien »). Si ces concepts vous sont inconnus, je vous recommande de prendre quelques minutes pour lire un exemple illustrant les preuves à connaissance nulle.
Pour faire court, les preuves à connaissance nulle permettent un calcul vérifiable. On peut y voir un moyen de garantir quel calcul a été effectué et que le résultat obtenu est correct. Une façon pour les ordinateurs de s'accorder sur un résultat consiste à faire exécuter le même code par chaque machine et comparer les résultats. Selon la nature du calcul, cette approche peut s'avérer coûteuse pour des systèmes aux ressources limitées. En utilisant un cadre de preuve à connaissance nulle comme RISC Zero, une machine peut valider l’exécution correcte d’un calcul en vérifiant la validité mathématique de la preuve, plutôt que de réexécuter le code (comme le fait l’EVM).
Chez RISC Zero, nous appelons ces preuves des « reçus » (receipts). J’utiliserai ce terme dans la suite du présent article. Chaque reçu inclut un identifiant cryptographique indiquant quel calcul a été réalisé, ainsi qu’un journal des sorties publiques de ce calcul. Bien que cela puisse sembler simple, cela signifie que les machines peuvent produire des reçus afin de « certifier » qu’un calcul a bien été effectué.
Que se passe-t-il alors quand on ajoute « zk » devant EVM ?
Le terme zkEVM décrit un logiciel capable d'exécuter des contrats intelligents sur un moteur de bytecode EVM et de générer un reçu pour un calcul (ou une transaction) donné. Ce logiciel peut généralement prouver la validité de deux reçus ou plus et en produire un nouveau. Grâce à ce mécanisme, un zkEVM peut exécuter plusieurs transactions et les représenter par un seul reçu, ce qu'on appelle un « Rollup ». Les projets écrits en Solidity peuvent utiliser des zkEVMs pour étendre leurs capacités transactionnelles, sans avoir à effectuer tous les calculs sur chaîne, en publiant simplement un unique reçu sur la blockchain pour représenter de nombreuses transactions exécutées hors chaîne. Il existe plusieurs types de zkEVM ; si vous souhaitez en savoir plus, vous pouvez consulter cet article.

zkVM : libérer le potentiel du calcul vérifiable en abandonnant le « E »
Chez RISC Zero, nous avons mis en œuvre une machine virtuelle à connaissance nulle (zkVM), plutôt qu’un zkEVM. La différence clé réside dans le fait que « VM », c’est-à-dire « machine virtuelle », est beaucoup plus général que EVM.
Sur un zkVM, vous pouvez exécuter presque tous les logiciels fonctionnant sur un ordinateur, et non seulement ceux pouvant tourner sur Ethereum. Cette machine utilise l’architecture RISC-V, un ensemble d’instructions destiné au calcul général. Cela signifie que RISC-V ne contient pas nativement de notion d’adresses de portefeuille ou d'autres structures propres à la blockchain. L’ensemble d’instructions se compose principalement d’opérateurs permettant de déplacer des données entre emplacements mémoire et d’effectuer des opérations mathématiques. Bien que cet ensemble d’instructions puisse paraître trop général, il n’est pas nécessaire pour le programmeur de maîtriser le langage d’assemblage afin d’écrire des programmes pour ce zkVM.
Comparé à l’EVM, ce simulateur RISC-V sous-jacent permet aux développeurs d’écrire des programmes pour le zkVM en Rust, C/C++ ou Go (notez que nous supportons actuellement Rust ; notre support de C/C++ et Go est en cours de développement). Cela signifie que les développeurs peuvent tirer parti des bibliothèques existantes dans l’écosystème de leur langage. Par exemple, nous pouvons exécuter des programmes jouant à des jeux comme Wordle ou Where's Waldo. Mais nous ne sommes pas limités aux jeux simples : vous pouvez exécuter de nombreux autres programmes compilés en RISC-V.
À quoi sert d’exécuter des programmes RISC-V ?
Si vous cherchez des cadres vous aidant à développer de meilleures applications DeFi, vous vous demandez peut-être pourquoi nous travaillons sur un cadre de calcul aussi général que RISC Zero.
En permettant aux utilisateurs d’écrire des programmes en langages universels, nous ouvrons la possibilité de coder au-delà des bibliothèques Solidity. Cela signifie que la logique applicative n’a plus besoin d’être limitée à ce que Solidity peut exprimer, et permet d’écrire du code indépendant de toute blockchain. Des langages généraux comme Rust permettent aux développeurs d’écrire plus facilement divers types de programmes que des langages conçus pour des usages spécifiques. Par exemple, vous pouvez écrire en Rust une simple calculatrice arithmétique qui prend une expression mathématique en entrée, effectue le calcul, puis retourne le résultat. En augmentant la complexité de cette calculatrice pour supporter des structures courantes de programmation telles que les variables, les boucles et les fonctions, vous aboutissez à un interpréteur de langage simple, capable de prendre un programme en entrée, de l’exécuter, et de renvoyer la solution. Ces programmes peuvent être compilés en RISC-V et exécutés sur le zkVM de RISC Zero. Avec Rust, vous pouvez utiliser des crates existantes pour développer votre application, sans tout réécrire depuis zéro.
Une telle bibliothèque est le crate revm pour Rust. Ce crate est une implémentation de l’EVM écrite en Rust. En utilisant ce crate, nous pouvons exécuter un interpréteur de bytecode EVM sur le zkVM. Cela signifie que vous pouvez exécuter des contrats Solidity sur un interpréteur de bytecode EVM tournant sur le zkVM ! En procédant ainsi, le zkVM produit un reçu attestant de l’exécution de l’EVM qui a traité le contrat intelligent. Cette approche a déjà été explorée dans ce billet d’Odra et utilisée par l’équipe zkPoEx pour améliorer leurs primes contre bogues.
Comment étendre la blockchain ?
Face à la complexité croissante des contrats intelligents, de nombreuses personnes constatent que le coût du code maintenu sur chaîne ne cesse d’augmenter avec le développement. Autrement dit, si votre logique DeFi devient progressivement coûteuse en calculs ou si votre jeu sur chaîne nécessite davantage de puissance de calcul, le zkVM de RISC Zero et le réseau Bonsai à venir vous permettent d’écrire du code évolutif sur chaîne en utilisant des langages de programmation généraux. J’ai cité plusieurs exemples dans ce billet. Nous sommes au début d’un véritable réseau de calcul évolutif. Si vous voulez voir comment cela fonctionne, commencez dès aujourd’hui, rejoignez notre communauté, inscrivez-vous à Bonsai, et contribuez à construire un Internet décentralisé et évolutif pour tous.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














