Auteur : Kernel Ventures Turbo Guo

Rédacteur(s) : Kernel Ventures Rose, Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR : Le coprocesseur ZK est une solution permettant aux dApps d'utiliser des ressources informatiques hors chaîne. Cet article explore les solutions existantes, les diverses applications et le développement futur des coprocesseurs. Les principaux sujets abordés sont les suivants :

  1. zkVM de RISC Zero est une solution de coprocesseur ZK qui permet aux contrats en chaîne qui appellent zkVM hors chaîne d'exécuter du code Rust spécifique et de renvoyer les résultats à la chaîne, tout en fournissant zkp pour la vérification en chaîne de l'exactitude du calcul.

  2. Il existe différentes solutions pour les coprocesseurs ZK. Outre zkVM, les utilisateurs peuvent également écrire des circuits ZK personnalisés pour leurs programmes ou utiliser des frameworks prédéfinis pour écrire des circuits, permettant ainsi aux contrats d'utiliser des ressources informatiques hors chaîne.

  3. Le coprocesseur ZK peut jouer un rôle dans la DeFi, par exemple en déchargeant les calculs AMM hors chaîne pour capturer une valeur similaire à la MEV ou en permettant une logique complexe et gourmande en calcul pour les AMM. Le coprocesseur ZK peut également faciliter les calculs de taux d'intérêt en temps réel pour les protocoles de prêt, rendant les calculs de marge transparents, entre autres. zkAMM a deux approches d'implémentation, l'une utilisant zkVM et l'autre utilisant zkOracle.

  4. Le coprocesseur ZK a également d'autres cas d'utilisation potentiels, comme les portefeuilles qui l'utilisent pour effectuer une vérification d'identité hors chaîne. Il peut permettre des calculs plus complexes pour les jeux en chaîne et réduire le gaz requis pour la gouvernance DAO, entre autres applications.

  5. Le paysage des coprocesseurs ZK est encore incertain, mais par rapport aux utilisateurs qui écrivent leurs propres circuits, l'utilisation d'une solution d'interfaçage de ressources hors chaîne est plus conviviale. Cependant, la question de savoir quels fournisseurs de services de calcul sont intégrés derrière cette solution « d'interface », qu'il s'agisse de fournisseurs de cloud traditionnels ou de réseaux de partage de ressources décentralisés, est un autre sujet de discussion important.

1. Objectif et application des coprocesseurs ZK

Source : Kernel Ventures

Le cœur du coprocesseur ZK est de déplacer le calcul en chaîne hors chaîne, en utilisant des preuves ZK pour garantir la fiabilité du calcul hors chaîne, permettant aux contrats intelligents de gérer facilement une grande quantité de calcul tout en vérifiant la fiabilité du calcul. Cela est similaire à l'idée de zkRollups, mais les Rollups utilisent des ressources de calcul hors chaîne au niveau de la couche de protocole de chaîne, tandis que les coprocesseurs ZK sont utilisés par les dApps pour utiliser les ressources hors chaîne.

En utilisant RISC Zero comme exemple pour expliquer une solution de coprocesseurs ZK, 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 des zkp sur zkVM pour « qu'un certain code Rust soit correctement exécuté ». Avec zkVM, le processus spécifique d'implémentation d'un coprocesseur ZK est le suivant :

  1. Les développeurs envoient une demande au contrat relais de Bonsai, c'est-à-dire pour exécuter le programme requis par le développeur dans zkVM.

  2. Le contrat relais envoie la demande au pool de demandes hors chaîne.

  3. Bonsai exécute la demande dans zkVM hors chaîne, effectue des calculs à grande échelle, puis génère un reçu.

  4. Ces preuves, également appelées « reçus », sont publiées dans la chaîne par Bonsai via le contrat de relais.

Source : RISC Zero

Dans Bonsai, le programme prouvé est appelé programme invité et le reçu est utilisé pour prouver que le programme invité a été exécuté correctement. Le reçu comprend un journal et un sceau. Plus précisément, le journal contient la sortie publique de l'application zkVM, tandis que le sceau est utilisé pour prouver la validité du reçu, c'est-à-dire pour prouver que le programme invité a été exécuté correctement. Le sceau lui-même est un zkSTARK généré par le prouveur. La vérification du reçu garantit que le journal est construit à l'aide du circuit correct, etc.

Bonsai simplifie le processus pour les développeurs de compiler le code Rust en bytecode zkVM, de télécharger des programmes, de les exécuter dans la machine virtuelle et de recevoir des retours de preuve, permettant ainsi aux développeurs de se concentrer davantage sur la conception logique. Il permet non seulement à la logique contractuelle partielle mais à la logique contractuelle entière de s'exécuter hors chaîne. RISC Zero utilise également des continuations, décomposant la génération d'une grande preuve en parties plus petites, permettant ainsi la génération de preuves pour les programmes volumineux sans consommer trop de mémoire. En plus de RISC Zero, il existe d'autres projets comme IronMill, =nil; Foundation et Marlin qui fournissent des solutions générales similaires.

2. Application des coprocesseurs ZK dans la DeFi

2.1 AMM - Bonsaï comme coprocesseur

zkUniswap est un AMM qui exploite les ressources informatiques hors chaîne. Sa principale fonction est de décharger une partie du calcul de swap hors chaîne, à l'aide de Bonsai. Les utilisateurs initient une demande de swap sur la chaîne. Le contrat relais de Bonsai obtient la demande, lance le calcul hors chaîne et, une fois terminé, renvoie le résultat du calcul et la preuve à la fonction de rappel de l'EVM. Si la preuve est vérifiée avec succès, le swap est exécuté.

Cependant, l'échange ne s'effectue pas en une seule fois. Les processus de demande et d'exécution se déroulent dans des transactions différentes, ce qui comporte certains risques. En effet, entre la soumission de la demande et la réalisation de l'échange, l'état du pool peut changer. Comme la vérification est basée sur l'état du pool au moment de la soumission de la demande, si une demande est toujours en attente et que l'état du pool change, la vérification sera invalide. Il s'agit d'un élément important à prendre en compte dans la conception et la sécurité de tels systèmes.

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 autres que le règlement de l'échange sont temporairement verrouillées jusqu'à ce que le calcul hors chaîne déclenche avec succès l'échange sur chaîne ou que l'échange expire (la limite de temps sera prédéfinie). Avec une limite de temps en place, même s'il y a des problèmes avec le relais ou le zkp, le pool ne sera pas verrouillé indéfiniment. La limite de temps spécifique peut être de quelques minutes.

zkUniswap a une conception unique pour capturer la MEV, car les développeurs souhaitent que le protocole bénéficie de la MEV. Théoriquement, les zkAMM ont également la MEV, car la première personne à soumettre un swap peut le verrouiller et devancer les autres, ce qui conduit à des guerres de gaz, et les constructeurs peuvent toujours prioriser le séquençage des transactions. Cependant, zkUniswap prend les bénéfices de la MEV pour lui-même en utilisant une méthode connue sous le nom de Variable Rate Gradual Dutch Auction (VRGDA). Cette approche permet à zkUniswap d'extraire la valeur de la MEV pour le protocole.

Le concept de zkUniswap est assez intéressant. Il consiste à baisser le prix des actifs verrouillés lors d'une vente aux enchères, et si les actifs verrouillés sont vendus rapidement, le protocole reconnaît une forte demande et augmente automatiquement le prix. Si la vente des actifs verrouillés ralentit, le protocole baisse le prix. Cette approche innovante pourrait potentiellement devenir une nouvelle source de revenus. Essentiellement, le protocole introduit un mécanisme unique de priorisation des transactions, et la concurrence pour les prix profite directement au projet via ce mécanisme.

2.2 AMM - zkOracle comme coprocesseur

Outre l'utilisation de zkVM, certains ont proposé d'utiliser zkOracle pour utiliser des ressources informatiques hors chaîne. Il convient de noter que zkOracle est un oracle d'E/S (entrée et sortie) qui gère à la fois l'entrée et la sortie. En général, il existe deux types d'oracles, l'un est l'oracle d'entrée et l'autre l'oracle de sortie. L'oracle d'entrée traite (calcule) les données hors chaîne et les place sur la chaîne, tandis que l'oracle de sortie traite (calcule) les données sur la chaîne et les fournit hors chaîne. L'oracle d'E/S (zkOracle) effectue d'abord la sortie, puis l'entrée, ce qui permet à 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 et, d'autre part, il utilise ZK pour garantir que les calculs des nœuds Oracle sont honnêtes, réalisant ainsi la fonction d'un coprocesseur. Par conséquent, le calcul de base d'AMM peut être placé dans zkOracle, ce qui permet d'utiliser les fonctionnalités AMM traditionnelles tout en permettant des opérations plus complexes et plus gourmandes en calcul à l'aide de zkOracle.

Source : github fewwwww/zkAMM

2.3 Calcul du taux de prêt, calcul de marge et autres applications

En laissant de côté la méthode de mise en œuvre, avec l'ajout de coprocesseurs ZK, de nombreuses fonctionnalités peuvent être obtenues. Par exemple, les protocoles de prêt peuvent ajuster les taux d'intérêt en fonction de paramètres en temps réel au lieu de conditions prédéfinies. Par exemple, augmenter le taux d'intérêt pour attirer l'offre lorsque la demande d'emprunt est forte et abaisser le taux d'intérêt lorsque la demande diminue. Cela nécessite que le protocole de prêt obtienne une grande quantité de données en chaîne en temps réel, prétraite les données et calcule les paramètres hors chaîne (à moins que le coût en chaîne ne soit extrêmement faible).

Des calculs complexes tels que la détermination des soldes de marge, des profits/pertes non réalisés, etc., peuvent également utiliser des coprocesseurs pour l'exécution. L'avantage de l'utilisation de coprocesseurs est qu'ils rendent ces applications plus transparentes et vérifiables. La logique du moteur de marge n'est plus une boîte noire secrète. Bien que les calculs soient effectués hors chaîne, les utilisateurs peuvent avoir entièrement confiance dans l'exactitude de leur exécution. Cette approche est également applicable aux calculs d'options.

3. Autres applications des coprocesseurs ZK

3.1 Wallet – Utilisation de Bonsai comme coprocesseur

Bonfire Wallet utilise zkVM pour décharger le calcul de la vérification d'identité hors chaîne. L'objectif de ce portefeuille est de permettre aux utilisateurs de créer des portefeuilles de gravure à l'aide d'informations biométriques (empreintes digitales) ou d'une clé Yubikey matérielle cryptée. Plus précisément, Bonfire Wallet utilise WebAuthn, une norme d'authentification Web courante, pour permettre aux utilisateurs d'effectuer la vérification d'identité Web directement avec des appareils sans mot de passe. Ainsi, dans Bonfire Wallet, les utilisateurs génèrent une clé publique avec WebAuthn (pas sur la chaîne, mais pour WebAuthn), puis l'utilisent pour créer un portefeuille. Chaque portefeuille Burner a un contrat sur la chaîne, qui contient la clé publique de WebAuthn. Le contrat doit vérifier la signature WebAuthn de l'utilisateur. Mais ce calcul est volumineux, donc Bonsai est utilisé pour décharger ce calcul hors chaîne, via un programme invité zkVM pour vérifier la signature hors chaîne et produire zkp pour la vérification sur chaîne.

Source : Portefeuille Bonfire

3.2 Récupération de données en chaîne - Circuits ZK Écrit par les utilisateurs

Axiom est une application qui n'utilise pas zkVM mais utilise une solution de coprocesseur différente. Commençons par présenter l'objectif d'Axiom. Il exploite un coprocesseur ZK pour permettre aux contrats d'accéder aux informations historiques sur la chaîne. En réalité, permettre aux contrats de lire les données historiques est assez difficile, car les contrats intelligents obtiennent généralement des données sur la chaîne en temps réel, ce qui peut être très coûteux. Il est difficile pour les contrats d'accéder à des données précieuses sur la chaîne telles que les soldes de comptes historiques ou les enregistrements de transactions.

Source : démo Axiom

Les nœuds Axiom accèdent aux données on-chain requises et effectuent le calcul spécifié hors chaîne, puis génèrent une preuve à connaissance nulle pour le calcul, prouvant que le résultat est correctement calculé sur la base de données on-chain valides. Cette preuve est vérifiée on-chain, ce qui garantit que le contrat peut faire confiance à ce résultat.

Pour générer du zkp pour le calcul hors chaîne, il est nécessaire de compiler des programmes dans des circuits ZK. Nous avons également mentionné précédemment l'utilisation de zkVM pour cela, mais Axiom a suggéré qu'il existe de nombreuses solutions pour cela et qu'il est nécessaire d'équilibrer les performances, la flexibilité et l'expérience de développement :

  1. Circuits personnalisés : si les développeurs personnalisent les circuits pour leurs programmes, les performances seront certainement les meilleures, mais le développement prend du temps ;

  2. eDSL/DSL : les développeurs écrivent toujours leurs circuits, mais il existe des frameworks optionnels pour aider les développeurs à résoudre les problèmes liés à zk, équilibrant ainsi les performances et l'expérience de développement.

  3. zkVM : les développeurs exécutent directement ZK sur une machine virtuelle existante, ce qui est très pratique, mais Axiom pense que c'est inefficace.

Axiom a donc choisi la deuxième option et propose aux utilisateurs un ensemble de modules ZK optimisés, leur permettant de concevoir leurs propres circuits.

Parmi les projets similaires à Axiom, on trouve Herodotus, qui vise à être un middleware pour la messagerie inter-chaînes. Le traitement des informations étant hors chaîne, il est raisonnable de permettre à différentes chaînes d'obtenir des 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

En plus des jeux en chaîne ci-dessus, la gouvernance DAO peut également utiliser des coprocesseurs ZK. RISC Zero estime que tout calcul nécessitant plus de 250 000 gaz serait moins cher en utilisant un coprocesseur ZK, mais la manière dont cela est calculé reste à étudier plus en détail. La gouvernance DAO peut également utiliser des coprocesseurs ZK, car elle implique plusieurs personnes et plusieurs contrats, ce qui est très gourmand en calcul. RISC Zero affirme que l'utilisation de Bonsai peut réduire les frais de gaz de 50 %. De nombreux projets ZKML, tels que Modulus Labs et Giza, utilisent la même solution que les coprocesseurs ZK, mais le concept de coprocesseurs ZK est plus large.

Il convient de mentionner qu'il existe certains projets auxiliaires dans le domaine des coprocesseurs ZK, tels que ezkl, qui fournit des compilateurs pour les circuits ZK, des boîtes à outils pour le déploiement de ZK et des outils pour décharger les calculs en chaîne hors chaîne.

4. Perspectives d'avenir

Les coprocesseurs fournissent aux applications en chaîne des ressources de calcul externes similaires au « cloud », offrant des calculs rentables et abondants, tandis que le traitement en chaîne se concentre sur les calculs essentiels. En pratique, zkVM peut également fonctionner sur le cloud. Essentiellement, les coprocesseurs ZK sont une approche architecturale qui déplace le calcul en chaîne hors chaîne, avec une source illimitée de ressources de calcul hors chaîne.

Essentiellement, les ressources informatiques hors chaîne peuvent être fournies par des fournisseurs de cloud traditionnels, voire par le partage de ressources informatiques décentralisées et des appareils locaux. Ces trois directions ont chacune leurs caractéristiques. Les fournisseurs de cloud traditionnels peuvent fournir des solutions informatiques hors chaîne relativement matures, la « robustesse » des futures ressources informatiques décentralisées peut être plus forte, et l'informatique locale recèle également un grand potentiel. Mais actuellement, de nombreux projets de coprocesseurs ZK sont au stade de fournisseur de services à source fermée, car l'écosystème de ces services n'est pas encore complètement formé et la spécialisation des services entre les différents projets reste à définir. Deux scénarios possibles pour l'avenir sont les suivants :

  1. Chaque partie du coprocesseur ZK possède un grand nombre de projets en concurrence les uns avec les autres.

  2. Un seul projet avec une excellente expérience de service peut dominer le marché.

Du point de vue du développeur, lorsqu'ils utilisent des coprocesseurs ZK, ils peuvent n'interagir qu'avec un seul projet « d'interface ». C'est la raison pour laquelle Amazon Web Services détient une part de marché substantielle, car les développeurs ont tendance à s'habituer à une méthode de déploiement spécifique. Cependant, la question de savoir quels fournisseurs de services informatiques (sociétés de cloud traditionnelles, partage de ressources décentralisé) sont intégrés derrière ce projet « d'interface » de ressources informatiques hors chaîne est un autre sujet qui mérite d'être discuté.

Kernel Ventures est un fonds de capital-risque crypto axé sur la recherche et le développement communautaire avec plus de 70 investissements en phase de démarrage, se concentrant sur l'infrastructure, le middleware, les dApps, en particulier ZK, Rollup, DEX, Modular Blockchain et les secteurs verticaux qui embarqueront le prochain milliard d'utilisateurs de crypto tels que l'abstraction de compte, 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 communautés de développeurs de base et des associations universitaires Blockchain à travers le monde.

RÉFÉRENCE:

  1. Guide des coprocesseurs ZK pour l'évolutivité : https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability

  2. Définition de zkOracle pour Ethereum : https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131

  3. zkUniswap : un zkAMM unique en son genre : https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. Qu'est-ce qu'un coprocesseur ZK ? : https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. Une brève introduction aux coprocesseurs : https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. 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

  7. Portefeuille Bonfire : https://ethglobal.com/showcase/bonfire-wallet-n1dzp