L'application de la technologie zk-SNARKs dans le Blockchain et les tendances de développement futur

Application et développement de la technologie zk-SNARKs dans le domaine de la Blockchain

Résumé

Cet article présente une revue systématique de près de quarante ans de littérature historique et de recherches récentes sur la technologie des zk-SNARKs (ZKP). Il commence par introduire les concepts de base et le contexte historique des ZKP, puis analyse en profondeur les technologies de ZKP basées sur des circuits, y compris la conception, les applications 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, 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 présente également le fonctionnement et les méthodes d'optimisation du Rollup à connaissance nulle 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és.

Enfin, cet article envisage 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 sur la Blockchain. En analysant ces technologies et tendances récentes, cet article offre une perspective complète pour comprendre et appliquer les technologies ZKP, montrant leur énorme potentiel pour améliorer l'efficacité et la sécurité des systèmes Blockchain, fournissant ainsi des références importantes pour les décisions d'investissement futures.

Table des matières

Introduction

Une, connaissances de base sur les zk-SNARKs

  1. Aperçu
  2. Exemple de zk-SNARKs

Deux, zk-SNARKs non interactifs

  1. Contexte
  2. La proposition de NIZK
  3. Transformation Fiat-Shamir
  4. Jens Groth et ses recherches
  5. Autres recherches

Trois, preuves de connaissance nulle basées sur des circuits

  1. Contexte
  2. Concepts et caractéristiques de base du modèle de circuit
  3. Conception et application des circuits dans les zk-SNARKs
  4. Défauts et défis potentiels

Quatre, modèle zk-SNARKs

  1. Contexte
  2. Modèles d'algorithmes courants
  3. Schéma basé sur le PCP linéaire et le problème du logarithme discret
  4. Solutions basées sur les preuves des gens ordinaires
  5. Preuve vérifiable par probabilité ( PCP ) de zk-SNARKs
  6. Classification basée sur la phase de configuration CPC

Cinq, aperçu et développement de la machine virtuelle zk-SNARKs

  1. Contexte
  2. Classification actuelle de ZKVM
  3. Paradigmes front-end et back-end
  4. Avantages et inconvénients du paradigme ZKVM

VI. Aperçu et développement des zk-SNARKs sur Ethereum Virtual Machine

  1. Contexte
  2. Fonctionnement de ZKEVM
  3. Le processus de mise en œuvre de ZKEVM
  4. Les caractéristiques de ZKEVM

Sept, aperçu et développement des solutions de réseau de deuxième couche zk-SNARKs

  1. Contexte
  2. Mécanisme de fonctionnement des zk-SNARKs Rollup
  3. Les inconvénients et les optimisations des ZK Rollup

Huit, les directions futures du zk-SNARKs.

  1. Accélérer le développement de l'environnement de calcul
  2. La proposition et le développement de ZKML
  3. Développement des technologies d'extension ZKP
  4. Le développement de l'interopérabilité des zk-SNARKs

IX. Conclusion

Introduction

Ces dernières années, le développement des applications Blockchain (DApps) a été rapide, avec de nouvelles applications émergentes chaque jour. Les plateformes Blockchain supportent chaque jour les activités de millions d'utilisateurs, traitant des milliards de transactions. Les données massives 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 des comptes et les soldes des comptes. Étant donné les caractéristiques d'ouverture et de transparence de la Blockchain, ces données stockées sont accessibles à tous, ce qui soulève divers problèmes de sécurité et de confidentialité.

Actuellement, plusieurs techniques de cryptographie peuvent 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 de transaction, mais ne protège pas 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 n'offre aucune protection pour les soldes de compte et les montants de transaction. Le calcul multipartite sécurisé permet de répartir les tâches de calcul entre plusieurs participants, sans que aucun participant ne connaisse les données des autres, protégeant efficacement la sécurité des soldes de compte et des montants de transaction, 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 d'un montant de transaction suffisant sans divulguer le montant de la transaction, l'adresse du compte et le solde du 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 à clé publique complexe et sa mise en œuvre répétée ne donne pas l'opportunité aux utilisateurs malveillants d'obtenir des informations utiles supplémentaires. Grâce aux zk-SNARKs, le vérificateur peut confirmer si le prouveur dispose d'un montant de transaction suffisant sans divulguer les données de transaction privées. Le processus de vérification comprend la génération d'une preuve contenant le montant de transaction revendiqué par le prouveur, puis cette preuve est transmise au vérificateur, qui effectue des calculs prédéfinis sur la preuve et produit un 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 dispose d'un montant de transaction suffisant. Le processus de vérification susmentionné peut être enregistré sur la Blockchain, sans aucune falsification.

Cette caractéristique des zk-SNARKs en fait un acteur clé dans les transactions Blockchain et les applications de cryptomonnaie, notamment en matière de protection de la vie privée et d'évolutivité du réseau, faisant d'eux non seulement un sujet de recherche académique, mais également largement considérés comme l'une des innovations technologiques les plus importantes depuis la mise en œuvre réussie des technologies de registre distribué - en particulier Bitcoin. Ils représentent également une voie privilégiée pour les applications industrielles et le capital-risque.

De ce fait, de nombreux projets de réseau basés sur ZKP ont vu le jour, tels que ZkSync, StarkNet, Mina, Filecoin et Aleo. Avec le développement de ces projets, les innovations algorithmiques concernant ZKP ne cessent d'émerger, et il a été rapporté qu'un nouvel algorithme est publié presque chaque semaine. De plus, le développement de matériel lié à la technologie ZKP progresse rapidement, y compris des puces spécifiquement optimisées pour ZKP. Par exemple, des projets comme Ingonyama, Irreducible et Cysic ont déjà réalisé des levées de fonds à grande échelle, ces évolutions 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 les GPU, FPGA et ASIC.

Ces progrès 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 une application plus large de la 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 relatives aux zk-SNARKs ( ZKP ) afin de mieux nous aider à prendre des décisions d'investissement futures. Pour ce faire, nous avons examiné de manière exhaustive les articles académiques clés sur les 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 leur taille de financement ). Cette collecte et cette analyse de données complètes ont fourni une base solide pour la rédaction de cet article.

Une, zk-SNARKs connaissances de base

1. Vue d'ensemble

En 1985, les chercheurs Goldwasser, Micali et Rackoff ont introduit pour la première fois les zk-SNARKs dans leur article intitulé « The Knowledge Complexity of Interactive Proof-Systems ». Cet article est une œuvre fondatrice sur les zk-SNARKs, définissant de nombreux concepts qui ont influencé la recherche académique ultérieure. Par exemple, la définition de la connaissance est « la sortie d'un calcul non faisable », ce qui signifie que la connaissance doit être une sortie et qu'elle est un calcul non faisable, ce qui implique qu'elle ne peut pas être une fonction simple, mais doit être une fonction complexe. Le calcul non faisable peut généralement être compris comme un problème NP, c'est-à-dire un problème dont la validité de la solution peut être vérifiée en temps polynomial, le temps polynomial désignant le temps d'exécution d'un algorithme qui peut être représenté par une fonction polynomiale de la taille de l'entrée. C'est un critère important pour évaluer l'efficacité et la faisabilité des algorithmes en informatique. En raison de la complexité du processus de résolution des problèmes NP, ils sont considérés comme des calculs non faisables ; 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, qui consiste à 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 distance totale d'un chemin spécifique peut être vérifiée en un temps polynomial.

Goldwasser et al. ont introduit dans leur article le concept de "complexité de connaissance" ( knowledge complexity ), qui quantifie la quantité de connaissance divulguée 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 tours pour prouver la véracité d'une déclaration.

En résumé, la définition du zk-SNARKs résumée par Goldwasser et al. est une forme spéciale de preuve interactive, dans laquelle le vérificateur ne reçoit aucune information supplémentaire en dehors de la véracité de l'énoncé lors du processus de vérification ; et trois caractéristiques fondamentales ont été proposées, notamment :

  1. Complétude ( completeness ) : Si la preuve est vraie, un prouveur honnête peut convaincre un vérificateur honnête de ce fait ;

  2. Fiabilité ( solidité ) : 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 ne reçoit que l'information "le prouveur possède cette connaissance", sans obtenir aucun contenu supplémentaire.

(# 2.zk-SNARKs exemple

Pour mieux comprendre les zk-SNARKs et leurs propriétés, voici un exemple de vérification si le prouveur possède certaines informations privées, cet exemple est divisé en trois phases : 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 afficher directement s. Soit le nombre secret s=5;

Choisissez deux grands nombres premiers p et q, puis calculez leur produit n. Soit le nombre premier p=11, q=13, le produit obtenu est n=143;

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 que le vérificateur ou tout observateur puisse déduire s. v=5^2 mod 143=25;

Choisissez 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 ne révèle pas s. Supposons que l'entier aléatoire r=7, alors x=49.

Deuxième étape : défi )Challenge(

Le validateurs choisissent aléatoirement un bit a) qui peut être 0 ou 1###, puis l'envoient au prouveur. Ce "défi" détermine les étapes suivantes que le prouveur doit suivre.

Troisième étape : réponse (Response)

Selon la valeur a émise par le validateur, le prouveur répond :

Si a=0, le prouveur envoie g=r( où r est le nombre aléatoire qu'il a choisi précédemment ).

Si a=1, le prouveur calcule g=rs mod n et l'envoie. Supposons que le bit aléatoire envoyé par le vérificateur soit a=1, selon la valeur de a, le prouveur calcule g=75 mod 143=35;

Enfin, le validateur vérifie si x est égal à g^2/v^a mod n en fonction de g reçu. Si l'égalité est vérifiée, le validateur accepte cette preuve. Lorsque a=0, le validateur calcule g^2 mod n, la vérification de droite x=49 ; lorsque a=1, le validateur calcule g^2/v mod n=35^2/25 mod 143=49, la vérification de droite x=49.

Ici, nous voyons que le x calculé par le validateur indique que le prouveur a réussi à passer le processus de validation, tout en ne révélant pas son chiffre 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 passe la validation par chance est (1/2)( lorsque a est 0. Mais le validateur défie ensuite le prouveur n fois, le prouveur change constamment les chiffres pertinents et les soumet au validateur, réussissant toujours à passer le processus de validation. Ainsi, la probabilité que le prouveur passe la validation par chance )1/2(^n) tend effectivement vers 0(, prouvant que le prouveur connaît un chiffre secret s. Cet exemple prouve l'intégrité, la fiabilité et la non-divulgation du système de preuve à connaissance nulle.

) Deux, zk-SNARKs non interactifs

(# 1. Contexte

zk-SNARKs)ZKP( est généralement considéré comme une forme de protocole interactif et en ligne dans les concepts traditionnels ; par exemple, le protocole Sigma nécessite généralement 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 interactions, en particulier dans l'application de la technologie Blockchain, où la fonctionnalité de vérification hors ligne est particulièrement importante.

)# 2. 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 sans nécessiter de plusieurs interactions.

ZK2.48%
Voir l'original
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.
  • Récompense
  • 2
  • Partager
Commentaire
0/400
GweiTooHighvip
· Il y a 20h
C'est-à-dire que le code chante et le portefeuille copie.
Voir l'originalRépondre0
GasSavingMastervip
· Il y a 20h
zk est si populaire parce qu'il ne peut jamais battre ce circuit.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)