Le développement et l'application de la technologie zk-SNARKs dans le domaine de la Blockchain
Résumé
Les zk-SNARKs ( ZKP ) sont considérés comme l'une des innovations les plus importantes dans le domaine de la Blockchain après les livres de comptes distribués, et c'est également un domaine d'intérêt majeur pour le capital-risque. Cet article passe en revue systématiquement l'évolution de la technologie zk-SNARKs au cours des quarante dernières années et résume les avancées de la recherche les plus récentes.
L'article présente d'abord le concept de base des zk-SNARKs et le contexte historique. Il analyse en profondeur la technologie de zk-SNARKs basée sur des circuits, y compris la conception, l'application et les méthodes d'optimisation des modèles tels que le modèle Ben-Sasson, Pinocchio, Bulletproofs et Ligero. En ce qui concerne l'environnement de calcul, l'article présente ZKVM et ZKEVM, en explorant comment ils améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de validation. L'article aborde également le mécanisme de fonctionnement et les méthodes d'optimisation des Rollups zk(ZK Rollup) en tant que solution d'extension de couche 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és.
Enfin, l'article se penche sur des concepts émergents tels que ZKCoprocessor, ZKML, ZKThreads, ZK Sharding et ZK StateChannels, et explore leur potentiel en matière d'évolutivité, d'interopérabilité et de protection de la vie privée dans le domaine de la Blockchain.
En analysant ces dernières technologies et tendances de développement, cet article offre une perspective globale pour comprendre et appliquer la technologie des zk-SNARKs, montrant son immense potentiel pour améliorer l'efficacité et la sécurité des systèmes Blockchain, et fournissant une référence importante pour les décisions d'investissement futures.
Table des matières
Préface
I. Connaissances de base sur les zk-SNARKs
Vue d'ensemble
2.zk-SNARKs示例
Deux, zk-SNARKs non interactifs
Contexte
Proposition des NIZK
3.Transformée de Fiat-Shamir
4.Jens Groth et sa recherche
5.Autres recherches
Trois, zk-SNARKs basés sur des circuits
Contexte
Concepts et caractéristiques de base du modèle de circuit
Conception et application des circuits dans les zk-SNARKs
Défauts et défis potentiels
Quatre, modèle de zk-SNARKs
Contexte
2.Modèles d'algorithmes courants
Schéma basé sur le PCP linéaire et le problème du logarithme discret
Proposition basée sur la preuve des gens ordinaires
Preuve de connaissance nulle basée sur des probabilités vérifiables ( PCP )
Classification basée sur la phase de configuration de la construction de preuve générale CPC( ).
V. Aperçu et développement des zk-SNARKs virtuels
Contexte
Classification actuelle des ZKVM
Paradigme front-end et back-end
4.Avantages et inconvénients du paradigme ZKVM
VI. Vue d'ensemble et développement de la machine virtuelle Ethereum à preuve zero connaissance
Contexte
2.Le fonctionnement de ZKEVM
Le processus de mise en œuvre de ZKEVM
4.Caractéristiques de ZKEVM
Sept, aperçu et développement des solutions de réseaux de deuxième couche zk-SNARKs.
Contexte
2.Mécanisme de fonctionnement du ZK Rollup
Les inconvénients et les optimisations des ZK Rollups
Huit, les directions futures de développement des zk-SNARKs
Accélérer le développement de l'environnement de calcul
Proposition et développement des zk-SNARKs
3.Développement des technologies d'extension ZKP
4.Développement de l'interopérabilité des zk-SNARKs
Neuf, conclusion
Références
Introduction
Ces dernières années, le développement des applications Blockchain ( DApps ) a connu une forte dynamique, avec de nouvelles applications qui apparaissent presque chaque jour. Les plateformes Blockchain supportent chaque jour l'activité de millions d'utilisateurs, 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é des utilisateurs, le montant des transactions, les adresses de compte et les soldes de compte. Étant donné les caractéristiques d'ouverture et de transparence de la Blockchain, ces données stockées sont ouvertes à tous, ce qui soulève diverses questions de sécurité et de confidentialité.
Actuellement, plusieurs technologies de cryptographie peuvent faire face à 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é, ce qui aide à protéger la sécurité des soldes de compte et des montants des transactions, mais ne peut pas protéger la sécurité des adresses de compte. Les signatures en anneau offrent une forme spéciale de signature numérique capable de masquer l'identité du signataire, protégeant ainsi la sécurité des adresses de compte, mais ne protège pas les soldes de compte et les montants des transactions. Le calcul multipartite sécurisé permet de répartir les tâches de calcul entre plusieurs participants, sans que l'aucun des participants ne connaisse les 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. De plus, 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 de montants de transaction suffisants sans révéler 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 la véracité de certaines propositions sans révéler aucune donnée intermédiaire. Ce protocole ne nécessite pas d'infrastructure complexe de clés publiques, et sa mise en œuvre répétée ne donne pas aux utilisateurs malveillants la possibilité d'obtenir des informations utiles supplémentaires. Grâce aux ZKP, le vérificateur peut confirmer si le prouveur a un montant de transaction suffisant sans divulguer aucune donnée de transaction privée. Le processus de vérification inclut la génération d'une preuve contenant le montant de transaction que le prouveur prétend avoir, puis cette preuve est transmise au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit le résultat final, permettant ainsi de conclure s'il accepte la déclaration du prouveur. Si la déclaration du prouveur est acceptée, cela signifie qu'il possède un montant de transaction suffisant. Le processus de vérification décrit ci-dessus peut être enregistré sur la Blockchain, sans aucune falsification.
Cette caractéristique du ZKP lui confère 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 point focal de la recherche académique, mais est largement considéré comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie des technologies de registre distribué, en particulier Bitcoin. C'est également un domaine clé pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets de réseau basés sur les ZKP ont émergé, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant les ZKP ne cessent d'apparaître, et il a été rapporté qu'à peu près chaque semaine, de nouveaux algorithmes voient le jour. De plus, le développement de matériels associés à la technologie ZKP progresse rapidement, y compris des puces spécialement optimisées pour les ZKP. Par exemple, certains projets ont déjà réussi à lever des fonds à grande échelle, ces développements témoignent non seulement de l'avancée rapide de la technologie ZKP, mais reflètent également le passage des matériels génériques aux matériels spécialisés tels que les GPU, FPGA et ASIC.
Ces avancées montrent que la technologie des zk-SNARKs n'est pas seulement une percée importante dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser des applications plus larges de la Blockchain, en particulier dans l'amélioration de la protection de la vie privée et des capacités de traitement.
Ainsi, nous avons décidé de rassembler systématiquement les connaissances pertinentes sur les zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. À cet effet, nous avons passé en revue les articles académiques clés sur les ZKP ( en les classant selon leur pertinence et le nombre de citations ) ; en même temps, nous avons également analysé en détail les documents et livres blancs des projets leaders dans ce domaine ( en les classant selon leur taille de financement ). Cette collecte et analyse de données complètes ont fourni une base solide pour la rédaction de cet article.
I. Connaissances de base sur les zk-SNARKs
1. Aperçu
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois le concept de zk-SNARKs dans leur article, définissant également des notions influençant les recherches académiques ultérieures, telles que ZKP et Interactive Zero-Knowledge (IZK). Cet article est une œuvre fondatrice des zk-SNARKs, définissant de nombreux concepts influents pour les recherches académiques ultérieures. Par exemple, la définition de la connaissance est "la sortie d'un calcul non réalisable", ce qui signifie que la connaissance doit être une sortie et qu'elle est un calcul non réalisable, impliquant qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Le 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 pouvant ê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 mesurer 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 vérification 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. En effet, la vérification de la distance totale d'un chemin spécifique peut être effectuée en temps polynomial.
Dans leur article, Goldwasser et al. introduisent le concept de "complexité de connaissance" pour quantifier la quantité de connaissance que le prouveur divulgue au vérificateur dans un système de preuve interactive. Ils ont également proposé les systèmes de preuve interactive (Interactive Proof Systems, IPS), où le prouveur (Prover) et le vérificateur (Verifier) interagissent par plusieurs tours 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 forme particulière de preuve interactive, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la vérité de l'énoncé pendant le processus de vérification ; et trois caractéristiques fondamentales ont été proposées.
Complétude ( completeness ) : Si la preuve est vraie, le prouveur honnête peut convaincre le 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):À la fin du processus de preuve, le vérificateur reçoit uniquement l'information "le prouveur possède cette connaissance", sans obtenir aucun contenu supplémentaire.
( 2. Exemple de zk-SNARKs
Pour mieux comprendre les zk-SNARKs et leurs attributs, voici un exemple de vérification pour savoir si le prouveur possède certaines informations privées, cet exemple est divisé en trois étapes : configuration, défi et réponse.
Première étape : configurer )Setup(
À cette étape, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, mais sans montrer directement s. Soit le nombre secret ;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit. Définissez la somme des nombres premiers, puis calculez le résultat.
Calcul, ici, v est envoyé au vérificateur comme partie de la preuve, mais cela ne suffit pas pour que le vérificateur ou tout observateur puisse déduire s.
Sélectionnez un entier aléatoire r, calculez-le et envoyez-le au vérificateur. Cette valeur x est utilisée pour le processus de vérification ultérieur, mais ne révèle pas non plus s. Soit un entier aléatoire, calculé.
Deuxième étape : défi )Challenge###
Un 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 validateurs, le prouveur répond :
Si le prouveur envoie ( ici, r est le nombre qu'il a choisi aléatoirement précédemment ).
Si le prouveur calcule et envoie. Supposons que le validateur envoie un bit aléatoire, selon la valeur de a, le prouveur calcule ;
Enfin, le validateurs vérifient si g reçu est égal. Si l'égalité est satisfaite, le validateurs acceptent cette preuve. À ce moment-là, le validateurs calculent la vérification du côté droit ; à ce moment-là, le validateurs calculent la vérification du côté droit.
Ici, nous voyons que le validateur calcule que le prouveur a réussi à passer le processus de validation, tout en ne révélant pas son chiffre secret s. Ici, puisque a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, et la probabilité que le prouveur réussisse à passer la validation par chance est ( lorsque a prend 0, ). Mais le validateur défie ensuite à nouveau le prouveur, le prouveur change constamment les chiffres concernés, les soumet au validateur, et réussit toujours à passer le processus de validation, de sorte que la probabilité que le prouveur réussisse à passer la validation par chance tend finalement vers 0(, prouvant ainsi que le prouveur connaît effectivement un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et la propriété de connaissance nulle du système de zk-SNARKs.
Deux, zk-SNARKs non interactifs
) 1. Contexte
Les zk-SNARKs ( ZKP ) dans le concept traditionnel sont généralement des formes de protocoles interactifs et en ligne ; par exemple, le protocole Sigma nécessite généralement trois à cinq tours d'interaction pour compléter la certification. Cependant, dans des scénarios tels que les transactions instantanées ou le vote, il n'y a souvent pas d'opportunité pour plusieurs interactions, en particulier dans les applications de la Blockchain, où la fonctionnalité de vérification hors ligne est d'une importance particulière.
( 2. La proposition de NIZK
En 1988, Blum, Feldman et Micali ont proposé pour la première fois le concept de preuve non interactive de connaissance nulle (NIZK) ), prouvant qu'il est possible pour le prouveur ### et le vérificateur ( de compléter le processus d'authentification sans nécessiter de multiples interactions. Cette avancée a permis...
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
13 J'aime
Récompense
13
7
Reposter
Partager
Commentaire
0/400
GasFeeAssassin
· Il y a 4h
Je sens que je vais encore devoir brûler du gas, snif.
Voir l'originalRépondre0
FunGibleTom
· 08-10 02:49
Je suis perdu avec zksnark, je ne comprends pas.
Voir l'originalRépondre0
ShibaOnTheRun
· 08-10 02:45
DOGE chaîne joueurs ah ah ah presque tous sont devenus jaunes.
Voir l'originalRépondre0
DegenWhisperer
· 08-10 02:42
C'est absurde, la preuve à connaissance nulle existe depuis quarante ans.
Voir l'originalRépondre0
RugpullAlertOfficer
· 08-10 02:40
Ce zk est la grande tendance du Blockchain.
Voir l'originalRépondre0
ChainMaskedRider
· 08-10 02:31
Jouer à zk, il faut regarder ce piège.
Voir l'originalRépondre0
LiquiditySurfer
· 08-10 02:30
Encore en train de vanter les mérites de zk, ça m'enivre ! Je vais prendre un martini pour me calmer.
L'application et les tendances de développement de la technologie zk-SNARKs dans le domaine de la Blockchain
Le développement et l'application de la technologie zk-SNARKs dans le domaine de la Blockchain
Résumé
Les zk-SNARKs ( ZKP ) sont considérés comme l'une des innovations les plus importantes dans le domaine de la Blockchain après les livres de comptes distribués, et c'est également un domaine d'intérêt majeur pour le capital-risque. Cet article passe en revue systématiquement l'évolution de la technologie zk-SNARKs au cours des quarante dernières années et résume les avancées de la recherche les plus récentes.
L'article présente d'abord le concept de base des zk-SNARKs et le contexte historique. Il analyse en profondeur la technologie de zk-SNARKs basée sur des circuits, y compris la conception, l'application et les méthodes d'optimisation des modèles tels que le modèle Ben-Sasson, Pinocchio, Bulletproofs et Ligero. En ce qui concerne l'environnement de calcul, l'article présente ZKVM et ZKEVM, en explorant comment ils améliorent la capacité de traitement des transactions, protègent la vie privée et augmentent l'efficacité de validation. L'article aborde également le mécanisme de fonctionnement et les méthodes d'optimisation des Rollups zk(ZK Rollup) en tant que solution d'extension de couche 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és.
Enfin, l'article se penche sur des concepts émergents tels que ZKCoprocessor, ZKML, ZKThreads, ZK Sharding et ZK StateChannels, et explore leur potentiel en matière d'évolutivité, d'interopérabilité et de protection de la vie privée dans le domaine de la Blockchain.
En analysant ces dernières technologies et tendances de développement, cet article offre une perspective globale pour comprendre et appliquer la technologie des zk-SNARKs, montrant son immense potentiel pour améliorer l'efficacité et la sécurité des systèmes Blockchain, et fournissant une référence importante pour les décisions d'investissement futures.
Table des matières
Préface
I. Connaissances de base sur les zk-SNARKs
Deux, zk-SNARKs non interactifs
Trois, zk-SNARKs basés sur des circuits
Quatre, modèle de zk-SNARKs
2.Modèles d'algorithmes courants
V. Aperçu et développement des zk-SNARKs virtuels
VI. Vue d'ensemble et développement de la machine virtuelle Ethereum à preuve zero connaissance
2.Le fonctionnement de ZKEVM
Sept, aperçu et développement des solutions de réseaux de deuxième couche zk-SNARKs.
2.Mécanisme de fonctionnement du ZK Rollup
Huit, les directions futures de développement des zk-SNARKs
Neuf, conclusion
Références
Introduction
Ces dernières années, le développement des applications Blockchain ( DApps ) a connu une forte dynamique, avec de nouvelles applications qui apparaissent presque chaque jour. Les plateformes Blockchain supportent chaque jour l'activité de millions d'utilisateurs, 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é des utilisateurs, le montant des transactions, les adresses de compte et les soldes de compte. Étant donné les caractéristiques d'ouverture et de transparence de la Blockchain, ces données stockées sont ouvertes à tous, ce qui soulève diverses questions de sécurité et de confidentialité.
Actuellement, plusieurs technologies de cryptographie peuvent faire face à 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é, ce qui aide à protéger la sécurité des soldes de compte et des montants des transactions, mais ne peut pas protéger la sécurité des adresses de compte. Les signatures en anneau offrent une forme spéciale de signature numérique capable de masquer l'identité du signataire, protégeant ainsi la sécurité des adresses de compte, mais ne protège pas les soldes de compte et les montants des transactions. Le calcul multipartite sécurisé permet de répartir les tâches de calcul entre plusieurs participants, sans que l'aucun des participants ne connaisse les 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. De plus, 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 de montants de transaction suffisants sans révéler 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 la véracité de certaines propositions sans révéler aucune donnée intermédiaire. Ce protocole ne nécessite pas d'infrastructure complexe de clés publiques, et sa mise en œuvre répétée ne donne pas aux utilisateurs malveillants la possibilité d'obtenir des informations utiles supplémentaires. Grâce aux ZKP, le vérificateur peut confirmer si le prouveur a un montant de transaction suffisant sans divulguer aucune donnée de transaction privée. Le processus de vérification inclut la génération d'une preuve contenant le montant de transaction que le prouveur prétend avoir, puis cette preuve est transmise au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit le résultat final, permettant ainsi de conclure s'il accepte la déclaration du prouveur. Si la déclaration du prouveur est acceptée, cela signifie qu'il possède un montant de transaction suffisant. Le processus de vérification décrit ci-dessus peut être enregistré sur la Blockchain, sans aucune falsification.
Cette caractéristique du ZKP lui confère 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 point focal de la recherche académique, mais est largement considéré comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie des technologies de registre distribué, en particulier Bitcoin. C'est également un domaine clé pour les applications industrielles et le capital-risque.
De ce fait, de nombreux projets de réseau basés sur les ZKP ont émergé, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant les ZKP ne cessent d'apparaître, et il a été rapporté qu'à peu près chaque semaine, de nouveaux algorithmes voient le jour. De plus, le développement de matériels associés à la technologie ZKP progresse rapidement, y compris des puces spécialement optimisées pour les ZKP. Par exemple, certains projets ont déjà réussi à lever des fonds à grande échelle, ces développements témoignent non seulement de l'avancée rapide de la technologie ZKP, mais reflètent également le passage des matériels génériques aux matériels spécialisés tels que les GPU, FPGA et ASIC.
Ces avancées montrent que la technologie des zk-SNARKs n'est pas seulement une percée importante dans le domaine de la cryptographie, mais aussi un moteur clé pour réaliser des applications plus larges de la Blockchain, en particulier dans l'amélioration de la protection de la vie privée et des capacités de traitement.
Ainsi, nous avons décidé de rassembler systématiquement les connaissances pertinentes sur les zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. À cet effet, nous avons passé en revue les articles académiques clés sur les ZKP ( en les classant selon leur pertinence et le nombre de citations ) ; en même temps, nous avons également analysé en détail les documents et livres blancs des projets leaders dans ce domaine ( en les classant selon leur taille de financement ). Cette collecte et analyse de données complètes ont fourni une base solide pour la rédaction de cet article.
I. Connaissances de base sur les zk-SNARKs
1. Aperçu
En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois le concept de zk-SNARKs dans leur article, définissant également des notions influençant les recherches académiques ultérieures, telles que ZKP et Interactive Zero-Knowledge (IZK). Cet article est une œuvre fondatrice des zk-SNARKs, définissant de nombreux concepts influents pour les recherches académiques ultérieures. Par exemple, la définition de la connaissance est "la sortie d'un calcul non réalisable", ce qui signifie que la connaissance doit être une sortie et qu'elle est un calcul non réalisable, impliquant qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Le 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 pouvant ê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 mesurer 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 vérification 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. En effet, la vérification de la distance totale d'un chemin spécifique peut être effectuée en temps polynomial.
Dans leur article, Goldwasser et al. introduisent le concept de "complexité de connaissance" pour quantifier la quantité de connaissance que le prouveur divulgue au vérificateur dans un système de preuve interactive. Ils ont également proposé les systèmes de preuve interactive (Interactive Proof Systems, IPS), où le prouveur (Prover) et le vérificateur (Verifier) interagissent par plusieurs tours 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 forme particulière de preuve interactive, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la vérité de l'énoncé pendant le processus de vérification ; et trois caractéristiques fondamentales ont été proposées.
Complétude ( completeness ) : Si la preuve est vraie, le prouveur honnête peut convaincre le 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):À la fin du processus de preuve, le vérificateur reçoit uniquement l'information "le prouveur possède cette connaissance", sans obtenir aucun contenu supplémentaire.
( 2. Exemple de zk-SNARKs
Pour mieux comprendre les zk-SNARKs et leurs attributs, voici un exemple de vérification pour savoir si le prouveur possède certaines informations privées, cet exemple est divisé en trois étapes : configuration, défi et réponse.
Première étape : configurer )Setup(
À cette étape, l'objectif du prouveur est de créer une preuve qu'il connaît un certain nombre secret s, mais sans montrer directement s. Soit le nombre secret ;
Choisissez deux grands nombres premiers p et q, puis calculez leur produit. Définissez la somme des nombres premiers, puis calculez le résultat.
Calcul, ici, v est envoyé au vérificateur comme partie de la preuve, mais cela ne suffit pas pour que le vérificateur ou tout observateur puisse déduire s.
Sélectionnez un entier aléatoire r, calculez-le et envoyez-le au vérificateur. Cette valeur x est utilisée pour le processus de vérification ultérieur, mais ne révèle pas non plus s. Soit un entier aléatoire, calculé.
Deuxième étape : défi )Challenge###
Un 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 validateurs, le prouveur répond :
Si le prouveur envoie ( ici, r est le nombre qu'il a choisi aléatoirement précédemment ).
Si le prouveur calcule et envoie. Supposons que le validateur envoie un bit aléatoire, selon la valeur de a, le prouveur calcule ;
Enfin, le validateurs vérifient si g reçu est égal. Si l'égalité est satisfaite, le validateurs acceptent cette preuve. À ce moment-là, le validateurs calculent la vérification du côté droit ; à ce moment-là, le validateurs calculent la vérification du côté droit.
Ici, nous voyons que le validateur calcule que le prouveur a réussi à passer le processus de validation, tout en ne révélant pas son chiffre secret s. Ici, puisque a ne peut prendre que 0 ou 1, il n'y a que deux possibilités, et la probabilité que le prouveur réussisse à passer la validation par chance est ( lorsque a prend 0, ). Mais le validateur défie ensuite à nouveau le prouveur, le prouveur change constamment les chiffres concernés, les soumet au validateur, et réussit toujours à passer le processus de validation, de sorte que la probabilité que le prouveur réussisse à passer la validation par chance tend finalement vers 0(, prouvant ainsi que le prouveur connaît effectivement un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et la propriété de connaissance nulle du système de zk-SNARKs.
Deux, zk-SNARKs non interactifs
) 1. Contexte
Les zk-SNARKs ( ZKP ) dans le concept traditionnel sont généralement des formes de protocoles interactifs et en ligne ; par exemple, le protocole Sigma nécessite généralement trois à cinq tours d'interaction pour compléter la certification. Cependant, dans des scénarios tels que les transactions instantanées ou le vote, il n'y a souvent pas d'opportunité pour plusieurs interactions, en particulier dans les applications de la Blockchain, où la fonctionnalité de vérification hors ligne est d'une importance particulière.
( 2. La proposition de NIZK
En 1988, Blum, Feldman et Micali ont proposé pour la première fois le concept de preuve non interactive de connaissance nulle (NIZK) ), prouvant qu'il est possible pour le prouveur ### et le vérificateur ( de compléter le processus d'authentification sans nécessiter de multiples interactions. Cette avancée a permis...