Voici une introduction simple et facile à comprendre aux preuves de zéro-connaissance :
Imaginez que vous êtes à l'école primaire. L'enseignant est le vérificateur, et vous, en tant qu'élève, êtes le prouveur. Comment pouvez-vous prouver que vous comprenez la formule pour résoudre les équations quadratiques ? C'est là qu'intervient un examen de mathématiques.
Le professeur vous donnera aléatoirement 10 questions connexes, et si vous comprenez vraiment le concept, vous pourrez toutes les résoudre. Pendant ce processus, vous n'avez pas besoin de réciter ou d'écrire le contenu spécifique de la formule, mais le professeur peut facilement vérifier votre niveau de connaissance.
En fait, c'est la méthode utilisée par Tartaglia et Cardano (oui, c'est le nom) pour concourir à la découverte de la solution de l'équation cubique. Ils ne voulaient pas révéler le contenu de leurs formules respectives, mais grâce à la résolution de problèmes, ils pouvaient facilement vérifier et déterminer s'ils avaient maîtrisé ces connaissances sans divulguer les détails.
Quel est l'objectif des preuves de connaissance nulle ? L'objectif est d'économiser de la puissance de calcul et de réduire l'espace en chaîne dans l'ensemble du processus. De plus, cela peut fournir une protection de la vie privée, en adéquation avec les caractéristiques de la non-confiance dans la blockchain et les principes de la cryptographie.
Dans le domaine de la blockchain, le terme "zk" utilisé ou mentionné ne fait généralement pas référence à des preuves réelles de connaissance nulle, mais fait souvent référence à des preuves de validité. En raison de la confusion dans la terminologie, certaines parties de ce texte continueront d'utiliser ces termes "incorrects".
Dans le paysage actuel de la blockchain, zk peut être considéré comme la solution de pointe et optimale pour la scalabilité de la blockchain (pas vrai zk mais plutôt Preuve de validité), et la technologie de confidentialité (vrai zk) qui est utilisée dans des projets tels que Tornado.cash, ZCash, zkSync, zk.money, Filecoin et Mina.
Les solutions techniques actuelles sont principalement divisées en deux catégories : SNARK et STARK. Dans STARK, le « S » signifie évolutif, ce qui signifie que les instructions prouvées ont des structures répétitives, tandis que SNARK prend en charge les circuits arbitraires qui sont prétraités pour obtenir des preuves concises. Parmi eux, la mise en œuvre pratique des SNARKs a pris la première place, tandis que les STARKs sont principalement adoptés à grande échelle dans les produits lancés par StarkWare. Ce qui suit est une comparaison entre eux.
Du point de vue de Meme, STARK est meilleur que SNARK (😊, Star Wars, Star Trek).
Si SNARK est l'avenir d'Ethereum 2.0, alors STARK sera l'avenir d'Ethereum 3.0. Sérieusement, les avantages de STARK sont :
Cependant, les preuves générées par STARK sont significativement grandes en taille. En raison de certaines limitations, telles que celles imposées par WASM, des opérations supplémentaires peuvent être nécessaires pendant la construction (ici, nous faisons référence à SNARK). Récemment, Mir a fourni une implémentation pratique d'un STARK basé sur AIR en utilisant Starky, qui fait partie de Plonky2 (la relation entre Plonky2 et Starky est assez complexe...). À mon avis personnel, bien que la taille puisse être optimisée en utilisant diverses techniques, il est difficile de compresser davantage la complexité temporelle de l'algorithme lui-même.
Ces technologies de preuve de connaissance nulle peuvent être combinées de manière raisonnable pour construire des applications plus puissantes. Par exemple, Polygon Hermez utilise SNARK pour vérifier la correction de STARK, réduisant ainsi les frais de gaz lors de la publication de la preuve.
Dans l'ensemble, SNARK et STARK sont tous deux d'excellentes technologies de preuve de connaissance nulle, chacune avec ses propres forces, et leur combinaison raisonnable a encore plus de potentiel.
Le Tornado.cash et le zk.money mentionnés précédemment sont des applications similaires qui prennent en charge uniquement les opérations de transfert à l'aide de preuves de zéro connaissance. Ils ne prennent pas en charge les calculs à usage général. En comparaison, ces applications n'ont que les fonctionnalités de Bitcoin, bien moins que l'Ethereum complet de Turing, sans parler de la construction d'un écosystème (les contrats intelligents sur Bitcoin n'ont pas encore établi un écosystème prospère).
zkVM est une machine virtuelle qui garantit des propriétés sécurisées, vérifiables et fiables en utilisant des preuves de connaissance nulle. En termes simples, il prend un ancien état et un programme en entrée et renvoie un nouvel état. Il donne à toutes les applications le superpouvoir des preuves de connaissance nulle.
La présentation de Miden à ETH Amsterdam a efficacement résumé ce qu'est zkVM avec une seule diapositive.
Avantages de zkVM:
Inconvénients de zkVM :
Actuellement, il existe trois principaux types de zkVM, avec leurs ensembles d'instructions respectifs entre parenthèses : Mainstream (WASM, RISC-V), EVM (bytecode EVM), ZK-Optimized (un nouvel ensemble d'instructions optimisé pour les preuves de zéro connaissance, tel que Cairo et zkSync). Voici un tableau comparatif de ces types basé sur la présentation de Miden à ETH Amsterdam.
De nombreuses choses réalisées dans l'écosystème du développement de la preuve de connaissance nulle concernent principalement la possibilité pour les développeurs d'utiliser la bibliothèque Circom (et snarkyjs, par exemple) ou d'autres langages nouvellement créés (comme Leo ou Cairo, qui ont leurs propres limitations uniques) pour le développement d'applications décentralisées zk générales. Cependant, ce n'est pas aussi simple et facile à apprendre que d'utiliser Solidity sur Ethereum.
En plus de cela, il existe de nombreux projets tels que zkSync, Scroll, ou plusieurs sous l'égide de Polygon qui expérimentent avec des solutions zkEVM ou d'autres solutions zkVM.
L'EVM est la machine virtuelle d'Ethereum, qui peut également être comprise comme un ensemble d'environnements d'exécution pour l'exécution de contrats intelligents.
Au fil des ans, diverses blockchains publiques ont continuellement essayé de devenir compatibles avec l'EVM, s'intégrant ainsi dans l'écosystème de développement d'Ethereum. Ce concept a conduit à la dérivation de termes tels que la compatibilité EVM, l'équivalence EVM et d'autres définitions.
Penchons-nous davantage sur zkEVM. Par définition, zkEVM est une machine virtuelle compatible avec EVM et également favorable aux preuves de connaissance nulle, garantissant la complète correction des programmes, des opérations et des entrées/sorties.
Pour parvenir à une computation universelle, il existe deux principaux défis dans le développement de zkEVM :
Différents contrats nécessitent la génération de différents circuits, et ces circuits sont assez 'complexes'.
Cet aspect repose principalement sur diverses optimisations. Par exemple, Aleo (bien que ce ne soit pas du type ZK direct... juste un exemple d'optimisation) utilise des clusters distribués pour des calculs de preuve concurrents, ou diverses optimisations matérielles pour l'accélération.
zkEVM nécessite non seulement une reconstruction de l'EVM mais aussi une reconstruction de l'ensemble de la transition d'état d'Ethereum en utilisant la technologie de preuve de connaissance nulle.
La conception originale de l'EVM n'a pas anticipé le développement du zkEVM, ce qui a entraîné des difficultés significatives. Cela a entraîné deux approches différentes, comme illustré dans le diagramme.
Ou, pour distinguer selon l'architecture d'une machine virtuelle (VM), comme dans le diagramme ci-dessous (un grand merci à Scroll Tech pour le résumé de l'image d'origine !). L'opcode se réfère à l'opcode EVM. La section StarkWare utilise Warp pour convertir des contrats Solidity en contrats Cairo, ou peut écrire directement des contrats en Cairo, et obtenir toujours une bonne expérience de développement et un ensemble complet d'outils.
Au niveau du développeur et de l'utilisateur, ces solutions sont à mon avis fondamentalement indiscernables. Cependant, en termes d'infrastructure, plus la solution est à droite, meilleure est la compatibilité EVM. Elle peut s'intégrer parfaitement à des infrastructures telles que Geth, mais la progression du développement est généralement plus lente.
L'existence du zkEVM, à mon avis, est d'innover et de patcher l'écosystème Ethereum, contribuant à la prospérité d'Ethereum et de son écosystème. D'un autre côté, l'existence du zkVM ne renforcera pas nécessairement Ethereum, mais elle offre une plus grande imagination.
Bien que le Cairo VM de StarkNet ne soit peut-être pas le zkVM parfait que j'avais imaginé, il peut faire plus que l'EVM ou le zkEVM. Ces fonctionnalités vont au-delà du niveau des extensions EIP. Sur Cairo VM, des modèles d'apprentissage automatique peuvent être exécutés, et il existe même une plateforme de modèles d'apprentissage automatique en cours de construction sur StarkNet.
Par rapport à zkEVM, la construction d'un zkVM est plus facile (sans se soucier de la dette technique d'EVM), plus flexible (sans se soucier des mises à jour d'EVM), et plus facile à optimiser (les optimiseurs de circuit et de preuve sont beaucoup plus simples et moins coûteux que la construction de zkEVM).
Cependant, zkVM a un inconvénient mineur mais potentiellement fatal. Si zkVM ne peut pas fournir une compatibilité EVM au niveau du langage Solidity, il sera difficile pour zkVM d'établir un écosystème de développement Web3 complet et mature similaire à celui de l'EVM.
zkVM peut être une tendance plus importante qui peut permettre l'optimisation verticale de l'EVM et l'expansion horizontale de l'écosystème EVM, se libérant des limitations de l'EVM.
S'il pouvait y avoir un zkVM universel qui permettrait aux contrats intelligents de tous les langages de programmation, pas seulement Solidity, pas seulement Cairo, mais Rust, C++, Go, de s'exécuter en toute sécurité avec une preuve de connaissance nulle, cela ne serait-il pas formidable? (Stellar a essayé, mais a échoué).
Comme @kelvinfichtermentionné : Pourquoi zkEVM si zkMIPS ? Comme @KyleSamanimentionné : EVM est un bug, pas une fonctionnalité. Pourquoi zkEVM si zkVM ?
Winterfall, Distaff, Miden VM et d'autres zkVM n'ont pas atteint un haut niveau de convivialité pour les développeurs. Nervos a un VM RISC-V, mais il n'utilise pas la technologie de preuve de connaissance nulle.
La solution optimale dans la situation actuelle est de construire un WASM ou un zkVM RISC-V, encore mieux s'il pouvait prendre en charge des langues telles que Rust, Go, C++, et même Solidity (zkSync semble pouvoir apporter des contributions significatives). S'il existe un zkVM universel, ce serait un coup significatif pour zkEVM.
Le nombre de développeurs Web3 représente environ 0,07% de tous les développeurs. Cela implique que le nombre de développeurs Solidity est encore plus petit que 0,07%, et encore moins de développeurs utiliseraient Cairo pour écrire des contrats ou Leo pour écrire des circuits. En conséquence, le zkVM parfait vise à répondre à presque 100% des développeurs, car n'importe quel développeur peut obtenir un environnement d'exécution à connaissance nulle parfait en utilisant presque n'importe quel langage de programmation.
Si un jour Web3 et Crypto venaient à dominer le monde, je crois que ce ne serait certainement pas l'écosystème EVM occupant 100% de tous les développeurs, mais plutôt tous les développeurs passant progressivement à des développeurs Web3 et Crypto. C'est là que réside la brillance du zkVM universel.
Le zkEVM natif est l'avenir de la blockchain.
zkVM universel est l'avenir de Web3.
Voici une introduction simple et facile à comprendre aux preuves de zéro-connaissance :
Imaginez que vous êtes à l'école primaire. L'enseignant est le vérificateur, et vous, en tant qu'élève, êtes le prouveur. Comment pouvez-vous prouver que vous comprenez la formule pour résoudre les équations quadratiques ? C'est là qu'intervient un examen de mathématiques.
Le professeur vous donnera aléatoirement 10 questions connexes, et si vous comprenez vraiment le concept, vous pourrez toutes les résoudre. Pendant ce processus, vous n'avez pas besoin de réciter ou d'écrire le contenu spécifique de la formule, mais le professeur peut facilement vérifier votre niveau de connaissance.
En fait, c'est la méthode utilisée par Tartaglia et Cardano (oui, c'est le nom) pour concourir à la découverte de la solution de l'équation cubique. Ils ne voulaient pas révéler le contenu de leurs formules respectives, mais grâce à la résolution de problèmes, ils pouvaient facilement vérifier et déterminer s'ils avaient maîtrisé ces connaissances sans divulguer les détails.
Quel est l'objectif des preuves de connaissance nulle ? L'objectif est d'économiser de la puissance de calcul et de réduire l'espace en chaîne dans l'ensemble du processus. De plus, cela peut fournir une protection de la vie privée, en adéquation avec les caractéristiques de la non-confiance dans la blockchain et les principes de la cryptographie.
Dans le domaine de la blockchain, le terme "zk" utilisé ou mentionné ne fait généralement pas référence à des preuves réelles de connaissance nulle, mais fait souvent référence à des preuves de validité. En raison de la confusion dans la terminologie, certaines parties de ce texte continueront d'utiliser ces termes "incorrects".
Dans le paysage actuel de la blockchain, zk peut être considéré comme la solution de pointe et optimale pour la scalabilité de la blockchain (pas vrai zk mais plutôt Preuve de validité), et la technologie de confidentialité (vrai zk) qui est utilisée dans des projets tels que Tornado.cash, ZCash, zkSync, zk.money, Filecoin et Mina.
Les solutions techniques actuelles sont principalement divisées en deux catégories : SNARK et STARK. Dans STARK, le « S » signifie évolutif, ce qui signifie que les instructions prouvées ont des structures répétitives, tandis que SNARK prend en charge les circuits arbitraires qui sont prétraités pour obtenir des preuves concises. Parmi eux, la mise en œuvre pratique des SNARKs a pris la première place, tandis que les STARKs sont principalement adoptés à grande échelle dans les produits lancés par StarkWare. Ce qui suit est une comparaison entre eux.
Du point de vue de Meme, STARK est meilleur que SNARK (😊, Star Wars, Star Trek).
Si SNARK est l'avenir d'Ethereum 2.0, alors STARK sera l'avenir d'Ethereum 3.0. Sérieusement, les avantages de STARK sont :
Cependant, les preuves générées par STARK sont significativement grandes en taille. En raison de certaines limitations, telles que celles imposées par WASM, des opérations supplémentaires peuvent être nécessaires pendant la construction (ici, nous faisons référence à SNARK). Récemment, Mir a fourni une implémentation pratique d'un STARK basé sur AIR en utilisant Starky, qui fait partie de Plonky2 (la relation entre Plonky2 et Starky est assez complexe...). À mon avis personnel, bien que la taille puisse être optimisée en utilisant diverses techniques, il est difficile de compresser davantage la complexité temporelle de l'algorithme lui-même.
Ces technologies de preuve de connaissance nulle peuvent être combinées de manière raisonnable pour construire des applications plus puissantes. Par exemple, Polygon Hermez utilise SNARK pour vérifier la correction de STARK, réduisant ainsi les frais de gaz lors de la publication de la preuve.
Dans l'ensemble, SNARK et STARK sont tous deux d'excellentes technologies de preuve de connaissance nulle, chacune avec ses propres forces, et leur combinaison raisonnable a encore plus de potentiel.
Le Tornado.cash et le zk.money mentionnés précédemment sont des applications similaires qui prennent en charge uniquement les opérations de transfert à l'aide de preuves de zéro connaissance. Ils ne prennent pas en charge les calculs à usage général. En comparaison, ces applications n'ont que les fonctionnalités de Bitcoin, bien moins que l'Ethereum complet de Turing, sans parler de la construction d'un écosystème (les contrats intelligents sur Bitcoin n'ont pas encore établi un écosystème prospère).
zkVM est une machine virtuelle qui garantit des propriétés sécurisées, vérifiables et fiables en utilisant des preuves de connaissance nulle. En termes simples, il prend un ancien état et un programme en entrée et renvoie un nouvel état. Il donne à toutes les applications le superpouvoir des preuves de connaissance nulle.
La présentation de Miden à ETH Amsterdam a efficacement résumé ce qu'est zkVM avec une seule diapositive.
Avantages de zkVM:
Inconvénients de zkVM :
Actuellement, il existe trois principaux types de zkVM, avec leurs ensembles d'instructions respectifs entre parenthèses : Mainstream (WASM, RISC-V), EVM (bytecode EVM), ZK-Optimized (un nouvel ensemble d'instructions optimisé pour les preuves de zéro connaissance, tel que Cairo et zkSync). Voici un tableau comparatif de ces types basé sur la présentation de Miden à ETH Amsterdam.
De nombreuses choses réalisées dans l'écosystème du développement de la preuve de connaissance nulle concernent principalement la possibilité pour les développeurs d'utiliser la bibliothèque Circom (et snarkyjs, par exemple) ou d'autres langages nouvellement créés (comme Leo ou Cairo, qui ont leurs propres limitations uniques) pour le développement d'applications décentralisées zk générales. Cependant, ce n'est pas aussi simple et facile à apprendre que d'utiliser Solidity sur Ethereum.
En plus de cela, il existe de nombreux projets tels que zkSync, Scroll, ou plusieurs sous l'égide de Polygon qui expérimentent avec des solutions zkEVM ou d'autres solutions zkVM.
L'EVM est la machine virtuelle d'Ethereum, qui peut également être comprise comme un ensemble d'environnements d'exécution pour l'exécution de contrats intelligents.
Au fil des ans, diverses blockchains publiques ont continuellement essayé de devenir compatibles avec l'EVM, s'intégrant ainsi dans l'écosystème de développement d'Ethereum. Ce concept a conduit à la dérivation de termes tels que la compatibilité EVM, l'équivalence EVM et d'autres définitions.
Penchons-nous davantage sur zkEVM. Par définition, zkEVM est une machine virtuelle compatible avec EVM et également favorable aux preuves de connaissance nulle, garantissant la complète correction des programmes, des opérations et des entrées/sorties.
Pour parvenir à une computation universelle, il existe deux principaux défis dans le développement de zkEVM :
Différents contrats nécessitent la génération de différents circuits, et ces circuits sont assez 'complexes'.
Cet aspect repose principalement sur diverses optimisations. Par exemple, Aleo (bien que ce ne soit pas du type ZK direct... juste un exemple d'optimisation) utilise des clusters distribués pour des calculs de preuve concurrents, ou diverses optimisations matérielles pour l'accélération.
zkEVM nécessite non seulement une reconstruction de l'EVM mais aussi une reconstruction de l'ensemble de la transition d'état d'Ethereum en utilisant la technologie de preuve de connaissance nulle.
La conception originale de l'EVM n'a pas anticipé le développement du zkEVM, ce qui a entraîné des difficultés significatives. Cela a entraîné deux approches différentes, comme illustré dans le diagramme.
Ou, pour distinguer selon l'architecture d'une machine virtuelle (VM), comme dans le diagramme ci-dessous (un grand merci à Scroll Tech pour le résumé de l'image d'origine !). L'opcode se réfère à l'opcode EVM. La section StarkWare utilise Warp pour convertir des contrats Solidity en contrats Cairo, ou peut écrire directement des contrats en Cairo, et obtenir toujours une bonne expérience de développement et un ensemble complet d'outils.
Au niveau du développeur et de l'utilisateur, ces solutions sont à mon avis fondamentalement indiscernables. Cependant, en termes d'infrastructure, plus la solution est à droite, meilleure est la compatibilité EVM. Elle peut s'intégrer parfaitement à des infrastructures telles que Geth, mais la progression du développement est généralement plus lente.
L'existence du zkEVM, à mon avis, est d'innover et de patcher l'écosystème Ethereum, contribuant à la prospérité d'Ethereum et de son écosystème. D'un autre côté, l'existence du zkVM ne renforcera pas nécessairement Ethereum, mais elle offre une plus grande imagination.
Bien que le Cairo VM de StarkNet ne soit peut-être pas le zkVM parfait que j'avais imaginé, il peut faire plus que l'EVM ou le zkEVM. Ces fonctionnalités vont au-delà du niveau des extensions EIP. Sur Cairo VM, des modèles d'apprentissage automatique peuvent être exécutés, et il existe même une plateforme de modèles d'apprentissage automatique en cours de construction sur StarkNet.
Par rapport à zkEVM, la construction d'un zkVM est plus facile (sans se soucier de la dette technique d'EVM), plus flexible (sans se soucier des mises à jour d'EVM), et plus facile à optimiser (les optimiseurs de circuit et de preuve sont beaucoup plus simples et moins coûteux que la construction de zkEVM).
Cependant, zkVM a un inconvénient mineur mais potentiellement fatal. Si zkVM ne peut pas fournir une compatibilité EVM au niveau du langage Solidity, il sera difficile pour zkVM d'établir un écosystème de développement Web3 complet et mature similaire à celui de l'EVM.
zkVM peut être une tendance plus importante qui peut permettre l'optimisation verticale de l'EVM et l'expansion horizontale de l'écosystème EVM, se libérant des limitations de l'EVM.
S'il pouvait y avoir un zkVM universel qui permettrait aux contrats intelligents de tous les langages de programmation, pas seulement Solidity, pas seulement Cairo, mais Rust, C++, Go, de s'exécuter en toute sécurité avec une preuve de connaissance nulle, cela ne serait-il pas formidable? (Stellar a essayé, mais a échoué).
Comme @kelvinfichtermentionné : Pourquoi zkEVM si zkMIPS ? Comme @KyleSamanimentionné : EVM est un bug, pas une fonctionnalité. Pourquoi zkEVM si zkVM ?
Winterfall, Distaff, Miden VM et d'autres zkVM n'ont pas atteint un haut niveau de convivialité pour les développeurs. Nervos a un VM RISC-V, mais il n'utilise pas la technologie de preuve de connaissance nulle.
La solution optimale dans la situation actuelle est de construire un WASM ou un zkVM RISC-V, encore mieux s'il pouvait prendre en charge des langues telles que Rust, Go, C++, et même Solidity (zkSync semble pouvoir apporter des contributions significatives). S'il existe un zkVM universel, ce serait un coup significatif pour zkEVM.
Le nombre de développeurs Web3 représente environ 0,07% de tous les développeurs. Cela implique que le nombre de développeurs Solidity est encore plus petit que 0,07%, et encore moins de développeurs utiliseraient Cairo pour écrire des contrats ou Leo pour écrire des circuits. En conséquence, le zkVM parfait vise à répondre à presque 100% des développeurs, car n'importe quel développeur peut obtenir un environnement d'exécution à connaissance nulle parfait en utilisant presque n'importe quel langage de programmation.
Si un jour Web3 et Crypto venaient à dominer le monde, je crois que ce ne serait certainement pas l'écosystème EVM occupant 100% de tous les développeurs, mais plutôt tous les développeurs passant progressivement à des développeurs Web3 et Crypto. C'est là que réside la brillance du zkVM universel.
Le zkEVM natif est l'avenir de la blockchain.
zkVM universel est l'avenir de Web3.