Explication détaillée du fraud proof : de la solution interactive à l'évolution technique du ZK Fraud Proof

robot
Création du résumé en cours

Fraude preuve et la mise en œuvre de ZK Fraud Proof

La preuve de fraude est une solution technique largement utilisée dans le domaine de la blockchain, originaire de la communauté Ethereum, adoptée par des projets Layer2 tels qu'Arbitrum et Optimism. Après l'émergence de l'écosystème Bitcoin en 2023, Robin Linus a proposé le projet BitVM, qui se concentre sur la preuve de fraude et propose un nouveau modèle de sécurité pour les couches secondaires ou les ponts, basé sur les technologies existantes de Bitcoin.

BitVM a connu plusieurs évolutions de version, passant du BitVM0 basé sur des portes logiques primitives, au BitVM2 centré sur les circuits de vérification ZK Fraud Proof et Groth16, avec une maturation continue des technologies connexes. Plusieurs projets tels que Bitlayer, Citrea, BOB, etc., ont tous réalisé différentes implémentations en se basant sur la technologie BitVM.

Cet article prendra l'exemple du système de preuve de fraude d'Optimism pour analyser son schéma basé sur la machine virtuelle MIPS et la preuve de fraude interactive, ainsi que les principales idées de la preuve de fraude ZK.

OutputRoot et StateRoot

Optimism est un projet de Rollup Optimiste bien connu, dont l'infrastructure est composée d'un séquenceur et de contrats intelligents sur la chaîne Ethereum. Après avoir traité les transactions, le séquenceur envoie les données sur Ethereum. L'exécution du client de nœud Optimism permet de télécharger ces données et de les exécuter localement, calculant ainsi le hash de l'ensemble de l'état actuel.

Si le séquenceur télécharge un hash de jeu d'état incorrect, le résultat calculé localement sera différent. À ce moment-là, une contestation peut être lancée via le système de fraude preuve.

Les blockchains de type EVM utilisent généralement une structure de données Merkle Tree pour enregistrer l'ensemble des états, appelée World State Trie. Après l'exécution d'une transaction, le World State Trie change et son hash final est également mis à jour. Ethereum appelle ce hash StateRoot, utilisé pour représenter les changements dans l'ensemble des états.

Le système de comptes d'Optimism est similaire à celui d'Ethereum, utilisant également le champ StateRoot. Le séquenceur télécharge régulièrement l'OutputRoot sur Ethereum, qui est calculé à partir de StateRoot et de deux autres champs.

BitVM Connaissances de base : mise en œuvre de la fraude preuve et ZK Fraud Proof

Machine virtuelle MIPS et Arbre de Merkle de mémoire

Pour vérifier la validité d'OutputRoot sur la chaîne, la méthode la plus simple consiste à mettre en œuvre un client de nœud OP sur Ethereum, mais deux problèmes se posent :

  1. Les contrats intelligents ne peuvent pas obtenir automatiquement les paramètres d'entrée nécessaires pour la preuve de fraude.
  2. La limite de Gas d'Ethereum est limitée, ne prend pas en charge les tâches de calcul complexes.

Le premier problème peut être résolu par le contrat PreimageOracle. Pour le deuxième problème, l'équipe OP a écrit une machine virtuelle MIPS en Solidity, mettant en œuvre certaines fonctionnalités des nœuds OP.

L'équipe de développement OP a écrit un programme simplifié en Golang, dont les fonctionnalités sont fondamentalement identiques à celles des nœuds OP exécutant des transactions, générant des blocs et le module OutputRoot. Cependant, en raison d'un coût de calcul trop élevé, il n'est pas possible d'exécuter toutes les transactions de manière complète sur la chaîne.

Pour ce faire, Optimism a conçu un système interactif de fraude proof, détaillant le processus de traitement des transactions en un traitement ordonné des codes d'opération MIPS. Après l'exécution de chaque code d'opération, le hash de l'état de la machine virtuelle change, et ces enregistrements sont regroupés en un arbre Merkle.

Dans la preuve de fraude interactive, il est nécessaire de déterminer quel code d'opération MIPS a entraîné une erreur de hachage de l'état de la machine virtuelle, puis de reproduire l'état à ce moment-là sur la chaîne et d'exécuter ce code d'opération pour observer si les résultats sont cohérents. Cela nécessite de télécharger certaines informations d'état de la machine virtuelle MIPS sur la chaîne.

Les contrats liés à la preuve de fraude sur la chaîne sont exécutés via la fonction Step pour réaliser le code d'opération MIPS:

solidité fonction étape( bytes memory _stateData, bytes memory _proof ) retours publics (bytes32) { // ... }

_stateData et _proof paramètres contiennent les données de dépendance pour l'exécution d'un code opération MIPS, telles que l'état des registres, le hash de l'état de la mémoire, etc.

OP utilise une architecture MIPS 32 bits, la mémoire peut être organisée en un arbre Merkle binaire à 28 niveaux, avec 2^27 enregistrements de feuilles pour les données des adresses mémoire. Le hash de toutes les données de feuilles résumées est memRoot.

Connaissances de base de BitVM : mise en œuvre du fraude proof et du ZK Fraud Proof

Preuve de fraude interactive

Pour localiser les codes d'opération MIPS contestés, l'équipe OP a développé le protocole Fault Dispute Game(FDG). Le FDG comprend deux rôles : le challenger et le défenseur, qui doivent construire un GameTree localement.

GameTree est composé de deux couches d'arbres : la première couche de feuilles est le OutputRoot de différents blocs, la deuxième couche de feuilles est le hash d'état de la machine virtuelle MIPS. Les deux parties en litige interagissent plusieurs fois sur la chaîne, afin de localiser finalement le code opération MIPS unique à exécuter sur la chaîne.

En résumé, la preuve de fraude interactive comprend deux mécanismes clés :

  1. Les codes d'opération MIPS et les informations d'état de la VM nécessaires pour le positionnement FDG doivent être exécutés sur la chaîne.
  2. Exécutez ce code opération sur la machine virtuelle MIPS sur la chaîne Ethereum pour obtenir le résultat final.

BitVM Connaissances de base : fraude preuve et implémentation de ZK Fraud Proof

Preuve de fraude ZK

L'interaction traditionnelle des preuves de fraude est complexe et présente les problèmes suivants :

  1. Les interactions multiples entraînent des coûts de gas élevés.
  2. Le processus d'interaction est long, pendant lequel le Rollup ne peut pas exécuter les transactions normalement.
  3. La mise en œuvre de VM spécifiques sur la chaîne est difficile.

Pour résoudre ces problèmes, Optimism a proposé le concept de preuve de fraude ZK. Le principe est de spécifier les transactions à reproduire lors d'un défi, le séquenceur fournit la preuve ZK, vérifiée par un contrat Ethereum.

Comparé à la preuve de fraude interactive, la preuve de fraude ZK transforme les multiples interactions en une seule génération et vérification de preuve ZK, ce qui permet d'économiser du temps et des coûts. Par rapport au ZK Rollup, l'OP Rollup basé sur la preuve de fraude ZK ne génère des preuves que lorsqu'il est contesté, réduisant ainsi les coûts de calcul.

L'approche de preuve de fraude ZK a également été adoptée par BitVM2. Des projets utilisant BitVM2 tels que Bitlayer, Goat Network, etc., réalisent des programmes de validation de preuve ZK via des scripts Bitcoin, et ont considérablement réduit la taille des programmes de mise en chaîne.

Connaissances de base sur BitVM : mise en œuvre de la preuve de fraude et de la preuve de fraude ZK

ZK-1.45%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Partager
Commentaire
0/400
Aucun commentaire
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)