Dans ce post, nous examinerons les concepts récemment populaires de zkCoprocessor et zkOracle et comparerons leurs différences.
Quand un terme est inventé, sa véritable signification n'est pas définie par lui-même. Nous avons beaucoup vu cela dans le cas de la blockchain.
Nous observons un phénomène similaire dans le terme zkCoprocessor. Tout le monde utilise le terme, mais ils ne font pas nécessairement référence aux mêmes choses.
Nous voulions donc exprimer ce que le projet lui-même pense de zkCoprocessor, ce que la communauté comprend de zkCoprocessor, et ce que zkCoprocessor signifie vraiment et fait de notre point de vue.
Définition 1 de l'Axiom : zkCoprocessor prouve les données historiques onchain.
Le concept du zkCoprocessor a été popularisé par Axiom, qui l'a initialement conçu comme un zkAttestor. À partir de l'idée d'Axiom, le zkCoprocessor représente le composant qui "prouve les données historiques on-chain et les utilise de manière fiable dans un contrat intelligent".
Notez que l'équipe Brevis a déclaré que ce type de zkCoprocessors est essentiellement une couche API/DSL au-dessus du circuit zk sous-jacent. Donc ce n'est pas programmable.
Définition 2 de RISC Zero: zkCoprocessor décharge le calcul de la chaîne vers la hors chaîne.
RISC Zero se réfère également souvent à lui-même comme un zkCoprocessor. De leur point de vue, ils voient zkCoprocessor comme un concept plus large, "un outil pour utiliser les ZKPs afin de décharger le calcul de la chaîne vers hors de la chaîne".
Définition de Peteris (identique à 1) : zkCoprocessor peut accéder à l'état historique onchain.
Peteris est de Aera Financecroitque zkCoprocessor agit très semblablement à un oracle d'état, avec pour fonction principale l'accès aux données historiques. En même temps, lui et Rishabh de BananaHQcroit que la description de la définition 2 ressemble plus à un zkVM qu'à une sous-classe de zkCoprocessor.
Définition de Messari, Modular Media et Kobi (identique à 2) : zkCoprocessor décharge le calcul de la chaîne vers hors de la chaîne.
Messari a également donné sa propre définition de zkCoprocessor. Sami, un chercheur chez Messari, croitce zkCoprocessor permet aux développeurs de smart contract de décharger facilement la logique complexe hors chaîne sans de nouvelles hypothèses de confiance. Modular Media aussidonne le même concept. Kobi de Geometrycompare Rollup avec un coprocesseur, Brevis a ajouté que zkCoprocessornégocie le coût de maintien d'un stockage d'état permanent contre des performances hyper-boostées, Taiko a conçu le design deBooster Rollupqui a poussé plus loin l'idée de Rollup Coprocessor. Il s'agit de la même définition que RISC Zero.
Pour résumer, nous concluons qu'il existe deux types de zkCoprocessor en pratique, et ils sont les suivants:
Hyper Oracle nous fournit une explication d'Oracle dans Définition de zkOracle pour Ethereum.
Oracle résume pratiquement l'"infra" dans tout espace blockchain, comme une meilleure définition qu'un coprocesseur.
Si l'entrée de l'infra/oracle est des données hors chaîne et que la sortie est en chaîne, alors il s'agit d'un oracle d'entrée (par exemple, Chainlink Price Feed). En revanche, il s'agit d'un oracle de sortie (par exemple, The Graph). Si l'oracle de sortie est d'abord, puis l'oracle d'entrée, alors il s'agit d'un oracle E/S (par exemple, Gelato Network).
En bref, oracle est très similaire au concept de coprocesseur, mais en même temps a les caractéristiques d'accès aux données et de calcul.
Prenant Hyper Oracle comme exemple, quelle est la relation entre un zkOracle et un zkCoprocessor?
Le zkOracle discuté dans Définition de zkOracle pour Ethereum possède en fait les capacités des deux zkCoprocesseurs.
Par exemple, un zkOracle tel que Hyper Oracle:
Lorsque nous comparons directement les deux types de zkCoprocessor avec zkOracle, nous pouvons voir que zkOracle a toutes les fonctionnalités de zkCoprocessor en même temps :
Par comparaison directe, zkOracle est une solution plus complète qui peut fournir aux développeurs une pile technologique plus complète.
Les deux zkCoprocessors étendent leurs verticales respectives, par exemple, le zkCoprocessor d'accès aux données débloque des scénarios de chaîne croisée, et le zkVM Compute zkCoprocessor représente un rouleau zk basé sur zkVM.
Lequel choisir lors de la construction?
Dans un ordre pas à pas, nous pouvons prendre certaines décisions concernant la construction d'une application.
Tout d'abord, une implémentation pure de contrats intelligents en Solidity reste un très bon choix. Bien que les contrats intelligents purs ne fournissent pas certaines des meilleures fonctionnalités innovantes, ils restent suffisants dans certains scénarios. De plus, la disponibilité actuelle d'Arbitrum Stylus a débloqué de nombreuses nouvelles applications avec des contrats intelligents purs.
Dans de nombreux cas, les développeurs peuvent souhaiter utiliser le zkCoprocessor d'accès aux données ou le zkOracle pour les contrats intelligents afin d'accéder à des sources de données plus riches.
Dans ce scénario, si Data Access zkCoprocessor est utilisé seul, le calcul est toujours géré dans le contrat intelligent. Le rôle du zkCoprocessor est de réduire la complexité de l'obtention de données de la manière traditionnelle, mais pas de rendre le contrat intelligent plus puissant computationnellement.
Dans ce scénario, nous voyons beaucoup de petits projets de données, plutôt que des DApps à part entière au sens traditionnel :
Souvent, certains algorithmes complexes ne peuvent pas être calculés directement sur la chaîne, pour les jeux, la logique de calcul est très complexe, comme etherquake et GameOfLife qui coûtent 2k $ pour exécuter une étape. Ou des algorithmes complexes liés à l'IA. Ou des algorithmes complexes liés à l'IA qui sont impossibles à exécuter sur la chaîne. Par conséquent, nous avons besoin de zkVM zkCoprocessor ou zkOracle pour exécuter le calcul hors chaîne, puis le soumettre à la chaîne sous forme de ZKP.
Dans cet exemple, nous pouvons voir une partie de leur potentiel de calcul illimité :
Enfin, nous avons parlé des applications qui ne peuvent être construites qu'avec zkOracle. En prenant l'application DeFi comme exemple, un DeFi complet est très complexe. La prochaine génération d'applications DeFi, ou DeFi 3.0DApps, nécessitera :
Nous avons déjà discuté de la manière dont zkOracle partage les capacités à la fois des zkCoprocessors, tout en répondant aux deux premières exigences fonctionnelles. Comment zkOracle remplit-il la fonction autonome et comment zkCoprocessor ne le fait-il pas ?
Alors, qu'implique l'absence d'autonomie dans le zkCoprocessor : le
Par conséquent, zkOracle est un choix parfait et suffisant pour une application complète comme la DeFi.
Il convient de noter que les Hooks peuvent également gérer une partie des fonctionnalités manquantes de zkCoprocessor, mais SEULEMENT dans des scénarios comme DeFi, et pas universellement.
Dans ce post, nous examinerons les concepts récemment populaires de zkCoprocessor et zkOracle et comparerons leurs différences.
Quand un terme est inventé, sa véritable signification n'est pas définie par lui-même. Nous avons beaucoup vu cela dans le cas de la blockchain.
Nous observons un phénomène similaire dans le terme zkCoprocessor. Tout le monde utilise le terme, mais ils ne font pas nécessairement référence aux mêmes choses.
Nous voulions donc exprimer ce que le projet lui-même pense de zkCoprocessor, ce que la communauté comprend de zkCoprocessor, et ce que zkCoprocessor signifie vraiment et fait de notre point de vue.
Définition 1 de l'Axiom : zkCoprocessor prouve les données historiques onchain.
Le concept du zkCoprocessor a été popularisé par Axiom, qui l'a initialement conçu comme un zkAttestor. À partir de l'idée d'Axiom, le zkCoprocessor représente le composant qui "prouve les données historiques on-chain et les utilise de manière fiable dans un contrat intelligent".
Notez que l'équipe Brevis a déclaré que ce type de zkCoprocessors est essentiellement une couche API/DSL au-dessus du circuit zk sous-jacent. Donc ce n'est pas programmable.
Définition 2 de RISC Zero: zkCoprocessor décharge le calcul de la chaîne vers la hors chaîne.
RISC Zero se réfère également souvent à lui-même comme un zkCoprocessor. De leur point de vue, ils voient zkCoprocessor comme un concept plus large, "un outil pour utiliser les ZKPs afin de décharger le calcul de la chaîne vers hors de la chaîne".
Définition de Peteris (identique à 1) : zkCoprocessor peut accéder à l'état historique onchain.
Peteris est de Aera Financecroitque zkCoprocessor agit très semblablement à un oracle d'état, avec pour fonction principale l'accès aux données historiques. En même temps, lui et Rishabh de BananaHQcroit que la description de la définition 2 ressemble plus à un zkVM qu'à une sous-classe de zkCoprocessor.
Définition de Messari, Modular Media et Kobi (identique à 2) : zkCoprocessor décharge le calcul de la chaîne vers hors de la chaîne.
Messari a également donné sa propre définition de zkCoprocessor. Sami, un chercheur chez Messari, croitce zkCoprocessor permet aux développeurs de smart contract de décharger facilement la logique complexe hors chaîne sans de nouvelles hypothèses de confiance. Modular Media aussidonne le même concept. Kobi de Geometrycompare Rollup avec un coprocesseur, Brevis a ajouté que zkCoprocessornégocie le coût de maintien d'un stockage d'état permanent contre des performances hyper-boostées, Taiko a conçu le design deBooster Rollupqui a poussé plus loin l'idée de Rollup Coprocessor. Il s'agit de la même définition que RISC Zero.
Pour résumer, nous concluons qu'il existe deux types de zkCoprocessor en pratique, et ils sont les suivants:
Hyper Oracle nous fournit une explication d'Oracle dans Définition de zkOracle pour Ethereum.
Oracle résume pratiquement l'"infra" dans tout espace blockchain, comme une meilleure définition qu'un coprocesseur.
Si l'entrée de l'infra/oracle est des données hors chaîne et que la sortie est en chaîne, alors il s'agit d'un oracle d'entrée (par exemple, Chainlink Price Feed). En revanche, il s'agit d'un oracle de sortie (par exemple, The Graph). Si l'oracle de sortie est d'abord, puis l'oracle d'entrée, alors il s'agit d'un oracle E/S (par exemple, Gelato Network).
En bref, oracle est très similaire au concept de coprocesseur, mais en même temps a les caractéristiques d'accès aux données et de calcul.
Prenant Hyper Oracle comme exemple, quelle est la relation entre un zkOracle et un zkCoprocessor?
Le zkOracle discuté dans Définition de zkOracle pour Ethereum possède en fait les capacités des deux zkCoprocesseurs.
Par exemple, un zkOracle tel que Hyper Oracle:
Lorsque nous comparons directement les deux types de zkCoprocessor avec zkOracle, nous pouvons voir que zkOracle a toutes les fonctionnalités de zkCoprocessor en même temps :
Par comparaison directe, zkOracle est une solution plus complète qui peut fournir aux développeurs une pile technologique plus complète.
Les deux zkCoprocessors étendent leurs verticales respectives, par exemple, le zkCoprocessor d'accès aux données débloque des scénarios de chaîne croisée, et le zkVM Compute zkCoprocessor représente un rouleau zk basé sur zkVM.
Lequel choisir lors de la construction?
Dans un ordre pas à pas, nous pouvons prendre certaines décisions concernant la construction d'une application.
Tout d'abord, une implémentation pure de contrats intelligents en Solidity reste un très bon choix. Bien que les contrats intelligents purs ne fournissent pas certaines des meilleures fonctionnalités innovantes, ils restent suffisants dans certains scénarios. De plus, la disponibilité actuelle d'Arbitrum Stylus a débloqué de nombreuses nouvelles applications avec des contrats intelligents purs.
Dans de nombreux cas, les développeurs peuvent souhaiter utiliser le zkCoprocessor d'accès aux données ou le zkOracle pour les contrats intelligents afin d'accéder à des sources de données plus riches.
Dans ce scénario, si Data Access zkCoprocessor est utilisé seul, le calcul est toujours géré dans le contrat intelligent. Le rôle du zkCoprocessor est de réduire la complexité de l'obtention de données de la manière traditionnelle, mais pas de rendre le contrat intelligent plus puissant computationnellement.
Dans ce scénario, nous voyons beaucoup de petits projets de données, plutôt que des DApps à part entière au sens traditionnel :
Souvent, certains algorithmes complexes ne peuvent pas être calculés directement sur la chaîne, pour les jeux, la logique de calcul est très complexe, comme etherquake et GameOfLife qui coûtent 2k $ pour exécuter une étape. Ou des algorithmes complexes liés à l'IA. Ou des algorithmes complexes liés à l'IA qui sont impossibles à exécuter sur la chaîne. Par conséquent, nous avons besoin de zkVM zkCoprocessor ou zkOracle pour exécuter le calcul hors chaîne, puis le soumettre à la chaîne sous forme de ZKP.
Dans cet exemple, nous pouvons voir une partie de leur potentiel de calcul illimité :
Enfin, nous avons parlé des applications qui ne peuvent être construites qu'avec zkOracle. En prenant l'application DeFi comme exemple, un DeFi complet est très complexe. La prochaine génération d'applications DeFi, ou DeFi 3.0DApps, nécessitera :
Nous avons déjà discuté de la manière dont zkOracle partage les capacités à la fois des zkCoprocessors, tout en répondant aux deux premières exigences fonctionnelles. Comment zkOracle remplit-il la fonction autonome et comment zkCoprocessor ne le fait-il pas ?
Alors, qu'implique l'absence d'autonomie dans le zkCoprocessor : le
Par conséquent, zkOracle est un choix parfait et suffisant pour une application complète comme la DeFi.
Il convient de noter que les Hooks peuvent également gérer une partie des fonctionnalités manquantes de zkCoprocessor, mais SEULEMENT dans des scénarios comme DeFi, et pas universellement.