zk-SNARKs technologie : revue complète et perspectives d'avenir
Résumé
zk-SNARKs ( ZKP ) est largement considéré comme l'une des innovations technologiques les plus importantes dans le domaine de la blockchain, après la technologie des registres distribués, et constitue également un domaine d'intérêt majeur pour le capital-risque. Cet article propose une revue systématique de la littérature historique et des recherches récentes sur la technologie des zk-SNARKs au cours des quarante dernières années.
Tout d'abord, le document présente le concept de base et le contexte historique des zk-SNARKs. Ensuite, il analyse en profondeur la technologie de preuve à connaissance nulle basée sur des circuits, y compris la conception, l'application et les méthodes d'optimisation des modèles tels que zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs et Ligero. Dans le domaine des environnements de calcul, cet article présente ZKVM et ZKEVM, explorant comment ils améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de la vérification. L'article présente également le mécanisme de fonctionnement et les méthodes d'optimisation du zero-knowledge Rollup(ZK Rollup) en tant que solution d'extension Layer 2, ainsi que les dernières avancées en matière d'accélération matérielle, de solutions hybrides et de ZK EVM dédiées.
Enfin, cet article se penche sur des concepts émergents tels que ZKCoprocessor, ZKML, ZKThreads, ZK Sharding et ZK StateChannels, et examine leur potentiel en matière d'évolutivité, d'interopérabilité et de protection de la vie privée dans la blockchain.
En analysant ces dernières technologies et tendances, cet article fournit une perspective complète pour comprendre et appliquer la technologie des zk-SNARKs, démontrant son immense potentiel pour améliorer l'efficacité et la sécurité des systèmes blockchain, offrant ainsi une référence importante pour les décisions d'investissement futures.
Table des matières
Préface
Une, zk-SNARKs connaissances de base
Aperçu
zk-SNARKs exemple
Deux, zk-SNARKs non interactifs
Contexte
Proposition des NIZK
Transformation Fiat-Shamir
Jens Groth et ses recherches
Autres recherches
Trois, zk-SNARKs basés sur les circuits
Contexte
Concepts de base et caractéristiques du modèle de circuit
Conception et application des circuits dans les zk-SNARKs
Défaillances et défis potentiels
Quatre, modèle zk-SNARKs
Contexte
2.Modèles d'algorithmes courants
Schéma basé sur le PCP linéaire et le problème du logarithme discret
Solutions basées sur la preuve des gens ordinaires
Preuve vérifiable probabiliste ( PCP ) zk-SNARKs
Classification basée sur la phase de configuration de la construction de preuve générale CPC( ).
Cinq, aperçu et développement des zk-SNARKs virtuels
Contexte
Classification actuelle des ZKVM
Paradigmes front-end et back-end
Avantages et inconvénients du paradigme ZKVM
VI. Aperçu et développement de la machine virtuelle Ethereum zk-SNARKs
Contexte
Le fonctionnement de ZKEVM
Le processus de mise en œuvre de ZKEVM
Caractéristiques de ZKEVM
VII. Présentation et développement des solutions de réseau de couche 2 basées sur les zk-SNARKs.
Contexte
Le mécanisme de fonctionnement des ZK Rollups
Les inconvénients et l'optimisation des ZK Rollups
Huit, les directions futures du zk-SNARKs
Accélérer le développement de l'environnement de calcul
La proposition et le développement de ZKML
Développement des technologies d'extension des zk-SNARKs
Le développement de l'interopérabilité des zk-SNARKs
IX. Conclusion
Références
Avant-propos
Internet entre dans l'ère Web3, les applications de blockchain (DApps) se développent rapidement, avec de nouvelles applications qui émergent chaque jour. Au cours des dernières années, les plateformes de blockchain ont soutenu les activités de millions d'utilisateurs chaque jour, traitant des milliards de transactions. Les grandes quantités de données générées par ces transactions incluent souvent des informations personnelles sensibles telles que l'identité de l'utilisateur, le montant des transactions, les adresses de compte et les soldes des comptes. En raison de l'ouverture et de la transparence des blockchains, ces données stockées sont accessibles à tous, ce qui soulève diverses questions de sécurité et de confidentialité.
Actuellement, il existe plusieurs technologies cryptographiques pour relever ces défis, y compris le chiffrement homomorphe, les signatures en anneau, le calcul multipartite sécurisé et les zk-SNARKs. Le chiffrement homomorphe permet d'effectuer des opérations sans déchiffrer le texte chiffré, contribuant ainsi à protéger la sécurité des soldes de compte et des montants des transactions, mais il ne peut pas protéger la sécurité des adresses de compte. Les signatures en anneau offrent une forme particulière de signature numérique capable de cacher l'identité du signataire, protégeant ainsi la sécurité des adresses de compte, mais elles sont incapables de protéger les soldes de compte et les montants des transactions. Le calcul multipartite sécurisé permet de répartir des tâches de calcul entre plusieurs participants sans que l'un d'eux ait connaissance des données des autres, protégeant efficacement la sécurité des soldes de compte et des montants des transactions, mais ne peut pas non plus protéger la sécurité des adresses de compte. En outre, le chiffrement homomorphe, les signatures en anneau et le calcul multipartite sécurisé ne peuvent pas être utilisés pour vérifier dans un environnement blockchain si le prouveur dispose d'un montant de transaction suffisant sans divulguer les montants des transactions, les adresses de compte et les soldes de compte.
Les zk-SNARKs sont une solution plus complète, ce protocole de vérification permet de valider certaines propositions sans révéler de données intermédiaires. Ce protocole ne nécessite pas d'infrastructure de clé publique complexe, et sa mise en œuvre répétée ne fournit pas aux utilisateurs malveillants l'occasion d'obtenir des informations supplémentaires utiles. Grâce aux ZKP, le vérificateur peut valider si le prouveur dispose d'un montant de transaction suffisant sans divulguer de données de transaction privées. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction que le prouveur prétend avoir, puis la transmission de cette preuve au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit le résultat final, permettant de déterminer si la déclaration du prouveur est acceptée. Si la déclaration du prouveur est acceptée, cela signifie qu'il dispose d'un montant de transaction suffisant. Le processus de validation susmentionné peut être enregistré sur la blockchain, sans aucune falsification.
Cette caractéristique des zk-SNARKs lui permet de jouer un rôle central dans les transactions blockchain et les applications de cryptomonnaie, en particulier en matière de protection de la vie privée et d'extension du réseau, ce qui en fait non seulement un sujet de recherche académique, mais également l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie de la technologie des registres distribués – en particulier Bitcoin. C'est également une voie clé pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets réseau basés sur ZKP ont émergé, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, l'innovation algorithmique autour de ZKP ne cesse d'émerger, avec des rapports faisant état de nouvelles algorithmes publiés presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécialement optimisées pour ZKP. Par exemple, des projets tels qu'Ingonyama, Irreducible et Cysic ont déjà réalisé des levées de fonds à grande échelle, ces développements non seulement démontrent les progrès rapides de la technologie ZKP, mais reflètent également la transition du matériel général vers du matériel spécialisé tel que GPU, FPGA et ASIC.
Ces progrès montrent que la technologie des zk-SNARKs n'est pas seulement une avancée majeure dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser des applications plus larges de la technologie blockchain - en particulier en ce qui concerne l'amélioration de la protection de la vie privée et de la capacité de traitement.
Ainsi, nous avons décidé de rassembler systématiquement les connaissances pertinentes sur zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. À cette fin, nous avons passé en revue les principaux articles académiques liés aux ZKP (, classés par pertinence et par nombre de citations ) ; en même temps, nous avons également analysé en détail les informations et les livres blancs des projets leaders dans ce domaine (, classés par taille de financement ). Cette collecte et analyse d'informations complètes fournissent une base solide pour la rédaction de cet article.
Une, zk-SNARKs connaissances de base
1. Aperçu
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois les zk-SNARKs dans leur article "The Knowledge Complexity of Interactive Proof-Systems". Cet article est une œuvre fondatrice des zk-SNARKs, définissant de nombreux concepts influençant les recherches académiques ultérieures. Par exemple, la définition de la connaissance est "la sortie d'un calcul non réalisable", c'est-à-dire que la connaissance doit être une sortie et qu'elle est un calcul non réalisable, ce qui signifie qu'il ne peut s'agir d'une simple fonction, mais plutôt d'une fonction complexe. Un calcul non réalisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la solution peut être vérifiée en temps polynomial, le temps polynomial faisant référence au temps d'exécution de l'algorithme qui peut être exprimé par une fonction polynomiale de la taille de l'entrée. C'est un critère important dans le domaine de l'informatique pour évaluer l'efficacité et la faisabilité des algorithmes. En raison de la complexité du processus de résolution des problèmes NP, ils sont considérés comme des calculs non réalisables ; cependant, leur processus de vérification est relativement simple, ce qui les rend très adaptés à la validation des zk-SNARKs.
Un exemple classique de problème NP est le problème du voyageur de commerce, où il s'agit de trouver le chemin le plus court pour visiter une série de villes et revenir au point de départ. Bien qu'il puisse être difficile de trouver le chemin le plus court, il est relativement facile de vérifier si un chemin donné est le plus court. Car la distance totale d'un chemin spécifique peut être vérifiée en temps polynomial.
Dans leur article, Goldwasser et al. ont introduit le concept de "complexité de connaissance" ( knowledge complexity ) pour quantifier la quantité de connaissances divulguées par le prouveur au vérificateur dans les systèmes de preuve interactifs. Ils ont également proposé des systèmes de preuve interactifs ( Interactive Proof Systems, IPS ), dans lesquels le prouveur ( Prover ) et le vérificateur ( Verifier ) interagissent par plusieurs rounds pour prouver la véracité d'une déclaration.
En résumé, la définition des zk-SNARKs résumée par Goldwasser et al. est une preuve interactive spéciale, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la véracité de l'énoncé pendant le processus de vérification; et trois caractéristiques fondamentales ont été proposées, y compris :
Complétude ( completeness ) : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;
Fiabilité ( soundness ) : Si le prouveur ne connaît pas le contenu de la déclaration, il ne peut tromper le vérificateur qu'avec une probabilité négligeable ;
3.zk-SNARKs(zero-knowledge): Après l'achèvement du processus de preuve, le vérificateur ne reçoit que l'information "le prouveur possède cette connaissance", sans pouvoir obtenir aucun contenu supplémentaire.
(# 2.zk-SNARKs示例
Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification pour savoir si le prouveur possède certaines informations privées. Cet exemple se compose de trois étapes : configuration, défi et réponse.
Première étape : configurer )Setup(
À ce stade, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, sans afficher directement s. Soit le nombre secret s;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit les nombres premiers p et q, calculez n obtenu.
Calculer v=s^2 mod n, ici, v est envoyé au vérificateur comme une partie de la preuve, mais il n'est pas suffisant pour permettre au vérificateur ou à tout observateur de déduire s.
Sélectionnez un entier aléatoire r, calculez x=r^2 mod n et envoyez-le au vérificateur. Cette valeur x est utilisée pour le processus de vérification ultérieur, mais n'expose pas non plus s. Soit l'entier aléatoire r, calculez x obtenu.
Deuxième étape : défi )Challenge(
Le validateur choisit aléatoirement un bit a) qui peut être 0 ou 1###, puis l'envoie au prouveur. Ce "défi" détermine les étapes que le prouveur doit suivre ensuite.
Troisième étape : réponse (Response)
En fonction de la valeur a émise par le validateur, le prouveur répond :
Si a=0, le prouveur envoie g=r( où r est un nombre qu'il a choisi aléatoirement auparavant ).
Si a=1, le prouveur calcule g=rs mod n et l'envoie. Supposons que le vérificateur envoie un bit aléatoire a, selon la valeur de a, le prouveur calcule g;
Enfin, le vérificateur vérifie si g^2 mod n est égal à xa^v mod n en fonction du g reçu. Si l'égalité est vraie, le vérificateur accepte cette preuve. Lorsque a=0, le vérificateur calcule g^2 mod n, vérifiant à droite xa^v mod n ; lorsque a=1, le vérificateur calcule g^2 mod n, vérifiant à droite xa^v mod n.
Ici, nous voyons que g^2 mod n = xa^v mod n calculé par le validateur montre que le prouveur a réussi à passer le processus de vérification sans révéler son numéro secret s. Ici, comme a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, la probabilité que le prouveur réussisse par chance à passer la vérification lorsque a prend 0 est 1/2. Mais le validateur défie ensuite le prouveur n fois, le prouveur change constamment les chiffres concernés, les soumet au validateur, et réussit toujours à passer le processus de vérification, de sorte que la probabilité que le prouveur réussisse par chance à passer la vérification 1/2(^n tend vers 0), ce qui prouve que le prouveur connaît réellement un numéro secret s. Cet exemple prouve l'intégrité, la fiabilité et la propriété de zéro connaissance du système de preuve de zéro connaissance.
( Deux, zk-SNARKs non interactifs
)# 1. Contexte
zk-SNARKs(ZKP) dans le concept traditionnel, se présente généralement sous la forme de protocoles interactifs et en ligne ; par exemple, le protocole Sigma nécessite souvent de trois à cinq tours d'interaction pour compléter l'authentification. Cependant, dans des scénarios tels que les transactions instantanées ou le vote, il n'y a souvent pas d'opportunité pour plusieurs tours d'interaction, en particulier dans l'application de la technologie blockchain, la fonctionnalité de vérification hors ligne est particulièrement importante.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
17 J'aime
Récompense
17
6
Partager
Commentaire
0/400
LiquidationWatcher
· 07-13 12:17
Après avoir terminé de parler de bulls, parlons maintenant d'argent.
Voir l'originalRépondre0
BoredWatcher
· 07-13 12:17
À peine ai-je fini de parler de zk que l'air ne s'en va plus.
Voir l'originalRépondre0
SybilSlayer
· 07-13 12:16
C'est trop compétitif, mon gars.
Voir l'originalRépondre0
BrokenYield
· 07-13 12:14
un autre cycle de hype zk... j'ai déjà vu ce film en 2019 et nous savons tous comment cela s'est terminé smh
Voir l'originalRépondre0
SchrodingerWallet
· 07-13 12:12
Y a-t-il encore quelqu'un qui réveille ZKEVM ?
Voir l'originalRépondre0
MissedTheBoat
· 07-13 12:09
J'ai écrit pendant un bon moment et cela ne vaut même pas la peine d'aller dans la zone zk.
Technologie de preuve à connaissance nulle: un aperçu complet de 40 ans, du ZKSNARK à l'évolution et aux perspectives futures du ZKEVM.
zk-SNARKs technologie : revue complète et perspectives d'avenir
Résumé
zk-SNARKs ( ZKP ) est largement considéré comme l'une des innovations technologiques les plus importantes dans le domaine de la blockchain, après la technologie des registres distribués, et constitue également un domaine d'intérêt majeur pour le capital-risque. Cet article propose une revue systématique de la littérature historique et des recherches récentes sur la technologie des zk-SNARKs au cours des quarante dernières années.
Tout d'abord, le document présente le concept de base et le contexte historique des zk-SNARKs. Ensuite, il analyse en profondeur la technologie de preuve à connaissance nulle basée sur des circuits, y compris la conception, l'application et les méthodes d'optimisation des modèles tels que zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs et Ligero. Dans le domaine des environnements de calcul, cet article présente ZKVM et ZKEVM, explorant comment ils améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de la vérification. L'article présente également le mécanisme de fonctionnement et les méthodes d'optimisation du zero-knowledge Rollup(ZK Rollup) en tant que solution d'extension Layer 2, ainsi que les dernières avancées en matière d'accélération matérielle, de solutions hybrides et de ZK EVM dédiées.
Enfin, cet article se penche sur des concepts émergents tels que ZKCoprocessor, ZKML, ZKThreads, ZK Sharding et ZK StateChannels, et examine leur potentiel en matière d'évolutivité, d'interopérabilité et de protection de la vie privée dans la blockchain.
En analysant ces dernières technologies et tendances, cet article fournit une perspective complète pour comprendre et appliquer la technologie des zk-SNARKs, démontrant son immense potentiel pour améliorer l'efficacité et la sécurité des systèmes blockchain, offrant ainsi une référence importante pour les décisions d'investissement futures.
Table des matières
Préface
Une, zk-SNARKs connaissances de base
Deux, zk-SNARKs non interactifs
Trois, zk-SNARKs basés sur les circuits
Quatre, modèle zk-SNARKs
Cinq, aperçu et développement des zk-SNARKs virtuels
VI. Aperçu et développement de la machine virtuelle Ethereum zk-SNARKs
VII. Présentation et développement des solutions de réseau de couche 2 basées sur les zk-SNARKs.
Huit, les directions futures du zk-SNARKs
IX. Conclusion
Références
Avant-propos
Internet entre dans l'ère Web3, les applications de blockchain (DApps) se développent rapidement, avec de nouvelles applications qui émergent chaque jour. Au cours des dernières années, les plateformes de blockchain ont soutenu les activités de millions d'utilisateurs chaque jour, traitant des milliards de transactions. Les grandes quantités de données générées par ces transactions incluent souvent des informations personnelles sensibles telles que l'identité de l'utilisateur, le montant des transactions, les adresses de compte et les soldes des comptes. En raison de l'ouverture et de la transparence des blockchains, ces données stockées sont accessibles à tous, ce qui soulève diverses questions de sécurité et de confidentialité.
Actuellement, il existe plusieurs technologies cryptographiques pour relever ces défis, y compris le chiffrement homomorphe, les signatures en anneau, le calcul multipartite sécurisé et les zk-SNARKs. Le chiffrement homomorphe permet d'effectuer des opérations sans déchiffrer le texte chiffré, contribuant ainsi à protéger la sécurité des soldes de compte et des montants des transactions, mais il ne peut pas protéger la sécurité des adresses de compte. Les signatures en anneau offrent une forme particulière de signature numérique capable de cacher l'identité du signataire, protégeant ainsi la sécurité des adresses de compte, mais elles sont incapables de protéger les soldes de compte et les montants des transactions. Le calcul multipartite sécurisé permet de répartir des tâches de calcul entre plusieurs participants sans que l'un d'eux ait connaissance des données des autres, protégeant efficacement la sécurité des soldes de compte et des montants des transactions, mais ne peut pas non plus protéger la sécurité des adresses de compte. En outre, le chiffrement homomorphe, les signatures en anneau et le calcul multipartite sécurisé ne peuvent pas être utilisés pour vérifier dans un environnement blockchain si le prouveur dispose d'un montant de transaction suffisant sans divulguer les montants des transactions, les adresses de compte et les soldes de compte.
Les zk-SNARKs sont une solution plus complète, ce protocole de vérification permet de valider certaines propositions sans révéler de données intermédiaires. Ce protocole ne nécessite pas d'infrastructure de clé publique complexe, et sa mise en œuvre répétée ne fournit pas aux utilisateurs malveillants l'occasion d'obtenir des informations supplémentaires utiles. Grâce aux ZKP, le vérificateur peut valider si le prouveur dispose d'un montant de transaction suffisant sans divulguer de données de transaction privées. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction que le prouveur prétend avoir, puis la transmission de cette preuve au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit le résultat final, permettant de déterminer si la déclaration du prouveur est acceptée. Si la déclaration du prouveur est acceptée, cela signifie qu'il dispose d'un montant de transaction suffisant. Le processus de validation susmentionné peut être enregistré sur la blockchain, sans aucune falsification.
Cette caractéristique des zk-SNARKs lui permet de jouer un rôle central dans les transactions blockchain et les applications de cryptomonnaie, en particulier en matière de protection de la vie privée et d'extension du réseau, ce qui en fait non seulement un sujet de recherche académique, mais également l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie de la technologie des registres distribués – en particulier Bitcoin. C'est également une voie clé pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets réseau basés sur ZKP ont émergé, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, l'innovation algorithmique autour de ZKP ne cesse d'émerger, avec des rapports faisant état de nouvelles algorithmes publiés presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécialement optimisées pour ZKP. Par exemple, des projets tels qu'Ingonyama, Irreducible et Cysic ont déjà réalisé des levées de fonds à grande échelle, ces développements non seulement démontrent les progrès rapides de la technologie ZKP, mais reflètent également la transition du matériel général vers du matériel spécialisé tel que GPU, FPGA et ASIC.
Ces progrès montrent que la technologie des zk-SNARKs n'est pas seulement une avancée majeure dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser des applications plus larges de la technologie blockchain - en particulier en ce qui concerne l'amélioration de la protection de la vie privée et de la capacité de traitement.
Ainsi, nous avons décidé de rassembler systématiquement les connaissances pertinentes sur zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. À cette fin, nous avons passé en revue les principaux articles académiques liés aux ZKP (, classés par pertinence et par nombre de citations ) ; en même temps, nous avons également analysé en détail les informations et les livres blancs des projets leaders dans ce domaine (, classés par taille de financement ). Cette collecte et analyse d'informations complètes fournissent une base solide pour la rédaction de cet article.
Une, zk-SNARKs connaissances de base
1. Aperçu
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois les zk-SNARKs dans leur article "The Knowledge Complexity of Interactive Proof-Systems". Cet article est une œuvre fondatrice des zk-SNARKs, définissant de nombreux concepts influençant les recherches académiques ultérieures. Par exemple, la définition de la connaissance est "la sortie d'un calcul non réalisable", c'est-à-dire que la connaissance doit être une sortie et qu'elle est un calcul non réalisable, ce qui signifie qu'il ne peut s'agir d'une simple fonction, mais plutôt d'une fonction complexe. Un calcul non réalisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la solution peut être vérifiée en temps polynomial, le temps polynomial faisant référence au temps d'exécution de l'algorithme qui peut être exprimé par une fonction polynomiale de la taille de l'entrée. C'est un critère important dans le domaine de l'informatique pour évaluer l'efficacité et la faisabilité des algorithmes. En raison de la complexité du processus de résolution des problèmes NP, ils sont considérés comme des calculs non réalisables ; cependant, leur processus de vérification est relativement simple, ce qui les rend très adaptés à la validation des zk-SNARKs.
Un exemple classique de problème NP est le problème du voyageur de commerce, où il s'agit de trouver le chemin le plus court pour visiter une série de villes et revenir au point de départ. Bien qu'il puisse être difficile de trouver le chemin le plus court, il est relativement facile de vérifier si un chemin donné est le plus court. Car la distance totale d'un chemin spécifique peut être vérifiée en temps polynomial.
Dans leur article, Goldwasser et al. ont introduit le concept de "complexité de connaissance" ( knowledge complexity ) pour quantifier la quantité de connaissances divulguées par le prouveur au vérificateur dans les systèmes de preuve interactifs. Ils ont également proposé des systèmes de preuve interactifs ( Interactive Proof Systems, IPS ), dans lesquels le prouveur ( Prover ) et le vérificateur ( Verifier ) interagissent par plusieurs rounds pour prouver la véracité d'une déclaration.
En résumé, la définition des zk-SNARKs résumée par Goldwasser et al. est une preuve interactive spéciale, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la véracité de l'énoncé pendant le processus de vérification; et trois caractéristiques fondamentales ont été proposées, y compris :
Complétude ( completeness ) : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;
Fiabilité ( soundness ) : Si le prouveur ne connaît pas le contenu de la déclaration, il ne peut tromper le vérificateur qu'avec une probabilité négligeable ;
3.zk-SNARKs(zero-knowledge): Après l'achèvement du processus de preuve, le vérificateur ne reçoit que l'information "le prouveur possède cette connaissance", sans pouvoir obtenir aucun contenu supplémentaire.
(# 2.zk-SNARKs示例
Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification pour savoir si le prouveur possède certaines informations privées. Cet exemple se compose de trois étapes : configuration, défi et réponse.
Première étape : configurer )Setup(
À ce stade, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, sans afficher directement s. Soit le nombre secret s;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit les nombres premiers p et q, calculez n obtenu.
Calculer v=s^2 mod n, ici, v est envoyé au vérificateur comme une partie de la preuve, mais il n'est pas suffisant pour permettre au vérificateur ou à tout observateur de déduire s.
Sélectionnez un entier aléatoire r, calculez x=r^2 mod n et envoyez-le au vérificateur. Cette valeur x est utilisée pour le processus de vérification ultérieur, mais n'expose pas non plus s. Soit l'entier aléatoire r, calculez x obtenu.
Deuxième étape : défi )Challenge(
Le validateur choisit aléatoirement un bit a) qui peut être 0 ou 1###, puis l'envoie au prouveur. Ce "défi" détermine les étapes que le prouveur doit suivre ensuite.
Troisième étape : réponse (Response)
En fonction de la valeur a émise par le validateur, le prouveur répond :
Si a=0, le prouveur envoie g=r( où r est un nombre qu'il a choisi aléatoirement auparavant ).
Si a=1, le prouveur calcule g=rs mod n et l'envoie. Supposons que le vérificateur envoie un bit aléatoire a, selon la valeur de a, le prouveur calcule g;
Enfin, le vérificateur vérifie si g^2 mod n est égal à xa^v mod n en fonction du g reçu. Si l'égalité est vraie, le vérificateur accepte cette preuve. Lorsque a=0, le vérificateur calcule g^2 mod n, vérifiant à droite xa^v mod n ; lorsque a=1, le vérificateur calcule g^2 mod n, vérifiant à droite xa^v mod n.
Ici, nous voyons que g^2 mod n = xa^v mod n calculé par le validateur montre que le prouveur a réussi à passer le processus de vérification sans révéler son numéro secret s. Ici, comme a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, la probabilité que le prouveur réussisse par chance à passer la vérification lorsque a prend 0 est 1/2. Mais le validateur défie ensuite le prouveur n fois, le prouveur change constamment les chiffres concernés, les soumet au validateur, et réussit toujours à passer le processus de vérification, de sorte que la probabilité que le prouveur réussisse par chance à passer la vérification 1/2(^n tend vers 0), ce qui prouve que le prouveur connaît réellement un numéro secret s. Cet exemple prouve l'intégrité, la fiabilité et la propriété de zéro connaissance du système de preuve de zéro connaissance.
( Deux, zk-SNARKs non interactifs
)# 1. Contexte
zk-SNARKs(ZKP) dans le concept traditionnel, se présente généralement sous la forme de protocoles interactifs et en ligne ; par exemple, le protocole Sigma nécessite souvent de trois à cinq tours d'interaction pour compléter l'authentification. Cependant, dans des scénarios tels que les transactions instantanées ou le vote, il n'y a souvent pas d'opportunité pour plusieurs tours d'interaction, en particulier dans l'application de la technologie blockchain, la fonctionnalité de vérification hors ligne est particulièrement importante.
(# 2. Proposition des NIZK
1