
Auteur : Kernel Ventures Turbo Guo
Réviseurs : Kernel Ventures Mandy, Kernel Ventures Joshua
TLDR:
Le coprocesseur ZK est une solution qui permet aux dApp d'utiliser des ressources informatiques hors chaîne. Cet article traite principalement de la mise en œuvre du coprocesseur, de diverses applications et des orientations de développement futures.
zkVM de RISC Zero est une solution de coprocesseur ZK qui permet aux contrats en chaîne d'appeler zkVM hors chaîne pour exécuter du code Rust spécifique et renvoyer les résultats à la chaîne, tout en fournissant zkp pour le contrat afin de vérifier si le calcul est correct.
Les coprocesseurs ZK ont différentes méthodes de mise en œuvre. En plus de zkVM, les utilisateurs peuvent également écrire des circuits ZK personnalisés pour leurs propres programmes ou utiliser des cadres préfabriqués pour écrire des circuits, permettant ainsi aux contrats d'utiliser des ressources informatiques hors chaîne.
Le coprocesseur ZK peut jouer un rôle dans DeFi, par exemple en plaçant les calculs AMM hors chaîne, en permettant au protocole de capturer une valeur de type MEV ou en permettant à AMM de mettre en œuvre une logique de fonctionnement complexe et gourmande en calcul. Le coprocesseur ZK peut également permettre aux protocoles de prêt de calculer les taux d'intérêt en temps réel, rendant les calculs de marge transparents, etc. Il existe deux implémentations de zkAMM, l'une utilise zkVM et l'autre utilise zkOracle.
Il existe d'autres utilisations potentielles du coprocesseur ZK. Par exemple, les portefeuilles peuvent utiliser le coprocesseur ZK pour effectuer une vérification d'identité hors chaîne. Le coprocesseur peut également permettre aux jeux en chaîne d'effectuer des calculs plus complexes et de réduire le gaz requis pour la gouvernance DAO. attendez.
Le modèle du coprocesseur ZK est indécis, mais par rapport aux utilisateurs écrivant leurs propres circuits, il est plus convivial d'utiliser un projet comme interface pour appeler des ressources hors chaîne. Mais quels fournisseurs de services informatiques (fournisseurs de cloud traditionnels, fournisseurs de cloud traditionnels, etc.). etc.) sont connectés derrière le projet « interface » ? Partage décentralisé des ressources) est une autre question qui mérite d'être discutée.
1. Signification et application du coprocesseur ZK

Source de l'image : Kernel Ventures
Le cœur du coprocesseur ZK est de déplacer les calculs en chaîne hors chaîne et d'utiliser ZK pour prouver la fiabilité du processus de calcul hors chaîne, permettant aux contrats intelligents de gérer facilement de grandes quantités de calculs, tout en permettant aux contrats de vérifier la fiabilité. de calculs. Ceci est similaire à l'idée de zkRollup, mais Rollup est une couche de protocole en chaîne qui utilise des ressources informatiques hors chaîne, tandis que le coprocesseur ZK est une dApp qui utilise des ressources hors chaîne.
RISC Zero est utilisé ici pour expliquer une implémentation de coprocesseur ZK, mais il existe de nombreuses implémentations de coprocesseurs ZK, qui seront présentées plus tard. RISC Zero a développé l'architecture de coprocesseur Bonsai ZK, dont le cœur est le zkVM de RISC Zero. Les développeurs peuvent générer zkp sur zkVM pour le cas où « un certain morceau de code Rust est exécuté correctement ». Avec zkVM, le processus spécifique d'implémentation du coprocesseur ZK est le suivant :
Le développeur lance une demande auprès du contrat de relais de Bonsai, c'est-à-dire que le programme demandé par le développeur est exécuté dans zkVM.
Le contrat de relais envoie la demande au pool de demandes hors chaîne
Bonsai exécute la requête dans zkVM hors chaîne, effectue des opérations à grande échelle hors chaîne, puis génère un reçu pour celle-ci.
Ces preuves, également appelées « reçus », sont renvoyées à la chaîne par Bonsai via un contrat de relais.

Source de l'image : RISC Zéro
Le programme certifié en Bonsai est appelé programme invité, et le reçu est utilisé pour prouver que le programme invité a été exécuté correctement. Les informations d'identification comprennent un journal et un sceau. Plus précisément, le Journal contient la sortie publique de l'application zkVM et le sceau est utilisé pour prouver la validité du certificat, c'est-à-dire pour prouver que le programme invité est exécuté correctement. Le sceau lui-même est également un zkSTARK généré par le certificateur. . La vérification des informations d'identification garantit que le journal a été créé avec les circuits appropriés, etc.
Bonsai simplifie le processus pour les développeurs depuis la compilation du code Rust jusqu'au bytecode zkVM, le téléchargement du programme, l'exécution dans la VM et les retours de preuves, permettant aux développeurs de se concentrer davantage sur la conception logique du programme. Et non seulement une partie de la logique contractuelle, mais toute la logique contractuelle peut être exécutée hors chaîne. RISC Zero utilise également des continuations, qui divisent une grande génération de preuves en plusieurs parties, puis prouvent chaque partie indépendamment. Cela permet de générer des preuves pour des programmes volumineux sans occuper trop de mémoire. En plus de RISC Zero, plusieurs projets tels que IronMill, =nil Foundation et Marlin proposent également des solutions générales similaires.
2. Application du coprocesseur ZK dans DeFi
2.1 AMM - Bonsai comme coprocesseur
zkUniswap est un AMM qui utilise des ressources informatiques hors chaîne. Son objectif est de mettre une partie des calculs de swap hors chaîne et il utilise Bonsai. L'utilisateur lance une demande d'échange sur la chaîne. Le contrat de relais de Bonsai obtient la demande et lance le calcul hors chaîne. Une fois le calcul terminé, Bonsai renvoie le résultat du calcul et la preuve à la fonction de rappel dans l'EVM. Si la preuve est vérifiée avec succès, le swap sera exécuté.
Cependant, le swap n'est pas terminé en même temps. Les processus de demande et d'exécution s'effectuent dans des transactions différentes, ce qui entraîne certains risques, c'est-à-dire que le statut du pool peut changer après la soumission de la demande et avant la fin du swap. Parce que la validation est basée sur l'état du pool au moment où la demande est soumise. Si l'état du pool change alors qu'une demande est toujours en attente, la vérification échouera.
Pour résoudre ce problème, les développeurs ont conçu un verrou de pool. Lorsqu'un utilisateur lance une demande, toutes les opérations, à l'exception du swap de règlement, sont verrouillées jusqu'à ce que le swap hors chaîne déclenche avec succès le swap en chaîne ou que le swap expire (cette durée sera prédéfinie). S'il y a une limite de temps, même s'il y a un problème avec le relais ou le zkp, la piscine ne sera pas verrouillée pour toujours. Le délai spécifique peut être de quelques minutes.
zkUniswap a une conception spéciale pour MEV, c'est-à-dire que les développeurs souhaitent que le protocole capture la valeur MEV. En théorie, les zkAMM ont également MEV, car la première personne à soumettre une transaction peut la verrouiller, de sorte que tout le monde sera toujours en compétition pour le gaz, et les constructeurs peuvent également trier les transactions demandées. Mais zkUniswap consommera lui-même les revenus du MEV, en utilisant les enchères néerlandaises à gradient de taux d'intérêt variable (VRGDA).
zkUniswap retire le verrou et le met aux enchères à un prix réduit. Si le verrou est vendu rapidement, le protocole saura que la demande est actuellement élevée, puis il augmentera automatiquement le prix si la vitesse de vente du verrou ralentit. le protocole fera baisser le prix. Cela deviendra une nouvelle source de revenus. De manière équivalente, l'accord prévoit une nouvelle chose pour déterminer l'ordre des transactions, et l'argent du prix compétitif est directement remis à la partie au projet via la nouvelle chose. C'est très imaginatif.
2.2 AMM - zkOracle comme coprocesseur
En plus d'utiliser zkVM, certaines personnes ont proposé d'utiliser zkOracle pour réaliser l'utilisation de ressources informatiques hors chaîne, et zkOracle est un oracle qui prend en compte à la fois les entrées et les sorties. Il existe généralement deux types d'oracles, l'un est l'oracle d'entrée et l'autre est l'oracle de sortie. L'oracle d'entrée trie (calcule) les données hors chaîne et les met sur la chaîne, et l'oracle de sortie trie (calcule) les données. données en chaîne. ) puis fournies au hors chaîne. L'oracle d'E/S (entrée et sortie) (zkOracle) effectue d'abord la sortie, puis l'entrée, permettant à la chaîne d'utiliser des ressources informatiques hors chaîne.
D'une part, zkOracle utilise les données en chaîne comme source de données ; d'autre part, il utilise ZK pour garantir que les calculs du nœud Oracle ne sont pas frauduleux et peuvent réaliser la fonction d'un coprocesseur. Par conséquent, les calculs de base d'AMM peuvent être placés dans zkOracle. Tout en réalisant les fonctions AMM traditionnelles, zkOracle peut également être utilisé pour implémenter des opérations plus complexes et gourmandes en ressources informatiques.

Source de l'image : github quelqueswwww/zkAMM
2.3 Calcul du taux d'intérêt des prêts, calcul de la marge et autres applications
Quelle que soit l'implémentation, de nombreuses fonctions peuvent être réalisées avec le coprocesseur ZK. Par exemple, l’accord de prêt ne peut plus prédéfinir des paramètres, mais ajuster le taux d’intérêt en fonction des conditions de prêt en temps réel. Par exemple, augmenter les taux d’intérêt pour attirer l’offre lorsque la demande d’emprunt d’argent est élevée, puis réduire les taux d’intérêt lorsque la demande est faible. Cela nécessite que le protocole de prêt obtienne des données en chaîne en temps réel et effectue un grand nombre de calculs pour obtenir les paramètres appropriés, ce qui nécessite des calculs hors chaîne (sauf si le coût en chaîne est extrêmement faible).
Des opérations complexes telles que le calcul des soldes de marge, des profits et pertes latents, des montants de liquidation, etc. peuvent également être transférées au coprocesseur pour exécution. L’avantage d’utiliser un coprocesseur est qu’il rend ces applications plus transparentes et vérifiables, et la logique du moteur de marge n’est plus une boîte noire secrète. Bien que le calcul soit effectué hors chaîne, les utilisateurs peuvent avoir une confiance totale dans l'exactitude de son exécution. De plus, cette approche s'applique également aux calculs d'options.
3. Autres applications du coprocesseur ZK
3.1 Portefeuille utilisant Bonsai comme co-processeur
Bonfire Wallet utilise zkVM pour déplacer les calculs de vérification d'identité hors chaîne. L'objectif de ce portefeuille est de permettre aux utilisateurs de créer des portefeuilles graveurs avec des informations biométriques (empreintes digitales) ou du matériel cryptographique yubikey.
Plus précisément, Bonfire Wallet utilise WebAuthn, une norme commune d'authentification de pages Web, permettant aux utilisateurs d'utiliser directement leurs appareils pour effectuer l'authentification sur des pages Web sans mot de passe. Ainsi, dans le portefeuille Bonfire, l'utilisateur génère une clé publique via WebAuthn (pas sur la chaîne, pour WebAuthn), puis l'utilise pour créer un portefeuille.
Chaque portefeuille Burner possède un contrat sur la chaîne, qui contient la clé publique WebAuthn. Le contrat doit vérifier la signature WebAuthn de l'utilisateur. Mais la quantité de calcul est très importante, donc Bonsai est utilisé pour mettre le calcul hors chaîne, vérifier la signature hors chaîne via un programme invité zkVM et produire zkp pour la vérification en chaîne.

Source de l'image : Portefeuille Bonfire
3.2 Récupération de données en chaîne - les utilisateurs écrivent eux-mêmes les circuits ZK
Axiom est une application qui n'utilise pas zkVM mais utilise une autre solution de coprocesseur. Présentons d'abord ce qu'Axiom veut faire. Il espère utiliser le coprocesseur ZK pour permettre aux contrats d'accéder aux informations historiques de la chaîne. En fait, il est difficile pour les contrats de lire les données historiques, car les contrats intelligents obtiennent généralement des données en chaîne en temps réel, et il est très coûteux pour les contrats d'obtenir des données en chaîne précieuses telles que les soldes de comptes passés ou. enregistrements de transactions.

Source de l'image : Démo Axiom
Les nœuds Axiom accèdent aux données en chaîne requises et effectuent les calculs spécifiés hors chaîne, puis génèrent une preuve de connaissance nulle pour le calcul prouvant que le résultat a été correctement calculé sur la base de données en chaîne valides. Cette preuve est vérifiée en chaîne, garantissant que le contrat peut faire confiance au résultat.
Pour générer zkp pour les calculs hors chaîne, vous devez compiler le programme dans le circuit ZK. J'ai également mentionné l'utilisation de zkVM pour ce faire, et Axiom a officiellement souligné qu'il existe de nombreuses solutions à ce sujet, qui doivent peser sur les performances et la flexibilité. et expérience de développement :
Circuits personnalisés : les développeurs personnalisent les circuits pour le programme, qui auront certainement les meilleures performances, mais leur développement prendra du temps ;
eDSL/DSL : les développeurs écrivent toujours leurs propres circuits, mais il existe des cadres facultatifs qui aident les développeurs à résoudre les problèmes liés à ZK, ce qui peut équilibrer les performances et l'expérience de développement.
zkVM : les développeurs utilisent directement des machines virtuelles prêtes à l'emploi pour exécuter ZK. C'est très pratique, mais les responsables d'Axiom estiment que l'efficacité est très faible.
Axiom a donc choisi la deuxième option et l'équipe du projet a également fourni aux utilisateurs un ensemble de modules ZK optimisés afin qu'ils puissent concevoir leurs propres circuits.
Un projet similaire à Axiom est Herodotus, mais ce qu'il veut faire est un middleware pour la transmission d'informations entre chaînes. Étant donné que le traitement de l’information s’effectue hors chaîne, il est raisonnable de laisser différentes chaînes obtenir les données traitées. Un autre projet, Space and Time, utilise une architecture similaire pour implémenter l'indexation des données.
3.3 Jeux en chaîne, gouvernance DAO et autres applications
De plus, les coprocesseurs ZK peuvent être utilisés pour les jeux en chaîne et la gouvernance DAO. RISC Zero estime que tout calcul nécessitant plus de 250 000 gaz sera moins cher en utilisant le coprocesseur ZK, mais il reste à voir comment cela sera déterminé. La gouvernance DAO peut également utiliser le coprocesseur ZK, car elle implique plusieurs personnes et plusieurs contrats, ce qui consomme des ressources informatiques. RISC Zero affirme que les frais de gaz peuvent être réduits de 50 % après avoir utilisé Bonsai. ZKML est essentiellement l'idée du coprocesseur ZK, donc Modulus Labs et Giza sont également des projets dans ce domaine, mais le concept du coprocesseur ZK est plus large.
En outre, il existe des projets auxiliaires dans le domaine des coprocesseurs ZK, tels que ezkl, qui fournit des compilateurs pour créer des circuits ZK, des suites d'outils pour le déploiement de ZK, des outils pour déplacer les calculs en chaîne hors chaîne, etc.
4. Perspectives d'avenir
Le coprocesseur permet aux applications en chaîne de disposer de ressources informatiques externes comme un « cloud », qui fournit de grandes quantités de calculs relativement bon marché, tandis que seuls les calculs nécessaires sont traités sur la chaîne. Dans des situations réelles, zkVM peut également fonctionner sur le cloud. Le coprocesseur ZK est essentiellement une architecture, un moyen de mettre l'informatique en chaîne hors chaîne, et il n'y a aucune limite quant à la personne qui fournit les ressources informatiques hors chaîne.
Essentiellement, les ressources informatiques hors chaîne sont partagées par les grands fabricants traditionnels, même les ressources informatiques décentralisées et les appareils locaux. Chacune de ces trois directions est différente.Les grands fabricants traditionnels peuvent proposer des solutions informatiques hors chaîne relativement matures.À l'avenir, la « robustesse » des ressources informatiques décentralisées pourrait être plus forte et l'informatique locale des utilisateurs a également une grande imagination. Cependant, de nombreux projets de coprocesseurs ZK choisissent actuellement de fournir des services au stade source fermé, car l'amont et l'aval de cette piste n'ont pas encore été formés et les services ne peuvent pas être affinés et transférés à différents projets. Il existe deux possibilités à l'avenir. :
Il existe un grand nombre de projets en compétition pour chaque aspect du coprocesseur ZK
Un projet avec une bonne expérience de service occupe la majeure partie du marché
Du point de vue du développeur, ils ne peuvent utiliser qu'un seul projet « d'interface » lorsqu'ils utilisent le coprocesseur ZK. C'est pourquoi Amazon Cloud occupe une grande partie du marché, et les développeurs seront habitués à une seule méthode de déploiement. Mais en tant que projet « d'interface » pour les ressources informatiques hors chaîne, quels fournisseurs de services informatiques (fournisseurs de cloud traditionnels, partage de ressources décentralisés) sont connectés derrière lui est une autre question qui mérite d'être discutée.
Kernel Ventures est un fonds de capital-risque de crypto-monnaie piloté par la communauté de recherche et développement avec plus de 70 investissements de démarrage axés sur l'infrastructure, les middlewares, les dApps, en particulier ZK, Rollup, DEX, les blockchains modulaires et les domaines verticaux pour des milliards d'utilisateurs de crypto-monnaies. l'avenir, comme l'abstraction des comptes, la disponibilité des données, l'évolutivité, etc. Au cours des sept dernières années, nous nous sommes engagés à soutenir la croissance des principales communautés de développement et des associations universitaires blockchain à travers le monde.
Références :
Guide des coprocesseurs ZK pour l'évolutivité : https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability
Définition de zkOracle pour Ethereum : https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131
zkUniswap : un zkAMM unique en son genre : https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839
Qu'est-ce qu'un coprocesseur ZK ? : https://blog.axiom.xyz/what-is-a-zk-coprocessor/
Une brève introduction aux coprocesseurs : https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA
Dernières applications basées sur Hyper Oracle (bonus : éléments que vous pouvez créer dès maintenant) : https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ
Portefeuille Bonfire : https://ethglobal.com/showcase/bonfire-wallet-n1dzp
