Towards Automated Formal Verification of zkEVMs Using LLM-Guided Constraint Synthesis
L'article présente VeriSynth, un nouveau cadre qui exploite un pipeline hybride LLM-SMT pour synthétiser automatiquement des modèles de vérification exécutables à partir de code Rust zkEVM, atteignant des taux de détection de bugs de plus de 90 % en surmontant les limites de la spécification manuelle et des hallucinations des LLM.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Imaginez l'internet comme un immense registre numérique mondial où tout le monde peut voir chaque transaction, mais où personne ne le contrôle individuellement. C'est le monde de la blockchain, et son habitant le plus célèbre est Ethereum. Pour rendre ce système plus rapide et moins coûteux, les développeurs ont construit des réseaux de "Couche 2" (Layer-2) qui effectuent le gros du travail hors ligne, ne montrant que les résultats finaux au réseau principal. Pour prouver que ces résultats hors ligne sont honnêtes sans révéler les détails secrets, ils utilisent un tour de magie appelé "Preuve à connaissance nulle" (Zero-Knowledge Proof). Imaginez cela comme un magicien vous montrant une boîte verrouillée et prouvant, sans l'ouvrir, que le trésor à l'intérieur est exactement ce qu'il a promis.
Mais voici le pièque : pour que la magie opère, le grimoire du magicien (le code informatique) doit être parfait. Si le magicien commet une minuscule erreur dans le sort — comme compter le mauvais montant d'or ou oublier de mettre à jour la carte — la boîte pourrait paraître verrouillée et valide, même si elle est vide ou remplie de fausses pièces. C'est un cauchemar pour la sécurité. Pour empêcher cela, les experts utilisent la "vérification formelle", une méthode où un robot mathématicien super strict vérifie le grimoire ligne par ligne pour s'assurer que la logique est sans faille. Cependant, écrire les instructions pour ce robot est incroyablement difficile, c'est comme essayer de traduire le manuel d'un jeu vidéo complexe écrit dans une langue secrète en un manuel de mathématiques que le robot peut lire.
C'est là qu'intervient un nouvel outil appelé VeriSynth. Les chercheurs derrière cet outil ont réalisé que, bien que l'Intelligence Artificielle (IA) soit excellente pour écrire du code, elle est aussi sujette aux "hallucinations" — elle invente des faits qui semblent réels mais qui sont faux. Ainsi, ils ne se sont pas contentés de demander à l'IA de trouver les bugs. Au lieu de cela, ils ont construit une équipe où l'IA agit comme un traducteur créatif, transformant le code complexe et secret en un brouillon pour le robot mathématicien, et le robot agit comme un juge strict qui dit : « Oui, ceci est correct » ou « Non, cela n'a aucun sens, réessaie ».
Le Problème : Le Bug Silencieux
Dans le monde des machines virtuelles Ethereum à connaissance nulle (zkEVM), le code qui dirige le spectacle est écrit dans un langage appelé Rust. Il est puissant mais complexe. Parfois, un développeur peut accidentellement écrire une ligne de code qui compte mal les frais de gaz (les frais de transaction), ou oublier de mettre à jour un emplacement de mémoire. Si cela arrive, le système peut générer une preuve "valide" pour une transaction qui est en réalité défectueuse. C'est comme un guichetier de banque qui vous donnerait accidentellement 100 $ au lieu de 10 $, alors que le reçu indique que tout est parfait. Parce que la preuve semble valide, l'erreur passe inaperçue, brisant silencieusement la sécurité de l'ensemble du système.
La méthode habituelle pour corriger cela est de faire écrire par des humains des cas de test détaillés, en espérant qu'ils détectent chaque erreur possible. Mais les humains se fatiguent, et ils ne peuvent pas imaginer tous les scénarios étranges qu'un ordinateur pourrait rencontrer. Une autre approche consiste à utiliser des modèles de langage étendus (LLM) — le même type d'IA qui écrit des essais ou du code — pour trouver les bugs. Mais l'article soutient que demander à une IA de simplement "chercher des bugs" est peu fiable. L'IA pourrait supposer qu'un bug est présent alors qu'il ne l'est pas, ou passer totalement à côté, car elle manque de la certitude mathématique stricte requise pour la sécurité.
La Solution : Une Équipe de Traducteur et de Juge
Les auteurs de cet article, Shichen Huang et son équipe, ont créé un cadre appelé VeriSynth. Ils traitent le problème comme une partie de "Téléphone Arabe" à enjeux élevés où le message doit être parfait.
- Le Traducteur (L'IA) : D'abord, le système décompose le code Rust complexe en petits morceaux gérables, comme si l'on séparait un puzzle géant en pièces individuelles. Il demande ensuite à une IA de traduire chaque pièce en un "modèle de vérification". Il ne s'agit pas seulement d'une description ; c'est un ensemble de règles mathématiques strictes (écrites dans un langage appelé Python/Z3) qui disent au robot mathématicien exactement comment le code devrait se comporter.
- La Bibliothèque de Référence : Pour empêcher l'IA d'inventer des choses, VeriSynth lui donne une "antisèche" d'exemples précédemment vérifiés. C'est comme montrer à l'IA l'image d'un ensemble Lego correctement assemblé avant de lui demander d'en construire un nouveau, afin qu'elle sache à quoi les pièces doivent ressembler.
- Le Juge (Le Solveur SMT) : C'est la partie la plus importante. La traduction de l'IA n'est jamais acceptée immédiatement. Elle est remise à un robot mathématicien super strict (un solveur SMT). Le robot vérifie la traduction par rapport aux règles. Si la traduction présente une erreur de syntaxe, une pièce manquante ou une contradiction logique, le robot la rejette.
- L'Auto-Réparation : Si le robot rejette la traduction, il ne se contente pas de dire "échec". Il renvoie un message d'erreur spécifique à l'IA : « Vous avez utilisé la mauvaise taille pour ce nombre » ou « Vous avez oublié de mettre à jour la mémoire ». L'IA tente alors de corriger l'erreur et la renvoie. Cette boucle continue jusqu'à ce que le robot soit satisfait.
Ce Qu'Ils Ont Découvert
L'équipe a testé VeriSynth sur un ensemble de données "buggé" personnalisé qu'ils ont construit, contenant 95 exemples différents de codes avec des erreurs cachées. Ces erreurs allaient de simples erreurs de calcul à des problèmes complexes liés à la manière dont le système gère les appels entre différents programmes.
Les résultats sont frappants :
- VeriSynth a trouvé 87 bugs sur 95, atteignant un taux de détection de 91,6 %.
- En revanche, si on demandait simplement à l'IA de trouver les bugs sans le juge robot strict, elle n'en trouvait que 44 (46,3 %).
- Même si on laissait l'IA discuter avec le robot et réessayer (une approche "conversationnelle"), elle ne trouvait que 58 bugs (61,1 %).
L'article compare également VeriSynth aux méthodes de test réelles utilisées par un projet majeur appelé Scroll. L'équipe de Scroll, composée d'experts humains, avait écrit ses propres tests pour attraper les bugs. Leurs tests ont capturé 55 des 95 bugs. VeriSynth en a capturé 87, ce qui signifie qu'il a trouvé 32 bugs supplémentaires que les tests écrits par les humains avaient manqués.
Pourquoi C'est Important
Les chercheurs soulignent qu'il ne s'agit pas de remplacer les développeurs humains ou de dire que l'IA est parfaite. Il s'agit plutôt d'utiliser l'IA comme un outil puissant pour effectuer le travail lourd de traduction, tout en gardant un robot strict et infatigable comme autorité finale. La fonction d' "auto-réparation" a été l'élément le plus critique ; sans elle, le taux de réussite du système tombait à 66,3 %, prouvant que la capacité de corriger ses propres erreurs est ce qui fait fonctionner le système.
L'étude suggère qu'en combinant la créativité de l'IA avec la logique stricte des solveurs mathématiques, nous pouvons construire un filet de sécurité pour l'avenir de la blockchain qui est bien plus solide que ce que les humains peuvent construire seuls. C'est un rappel que dans le monde de la sécurité numérique, la meilleure défense est une équipe où l'esprit créatif propose, et la logique stricte décide.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.