Le taux de croissance actuel des projets de preuve à connaissance nulle (ZKP) dans l'industrie de la blockchain est étonnant, en particulier l'augmentation des applications ZKP aux deux niveaux de l'expansion et de la protection de la vie privée, qui nous a exposés à une variété de projets de preuve à connaissance nulle. En raison de la nature extrêmement mathématique du ZKP, il est beaucoup plus difficile pour les amateurs de chiffrement de comprendre le ZK en profondeur. Par conséquent, nous espérons également trier certains changements dans la théorie et l'application du ZKP depuis le début, et explorer l'impact et la valeur sur l'industrie cryptographique avec les lecteurs - apprendre ensemble à travers plusieurs rapports, qui servent également de résumé des pensées de l'équipe de recherche de HashKey Capital. Cet article est le premier de la série. Il présente principalement l'historique du développement, les applications et certains principes de base du ZKP.
Le système de preuve moderne à connaissance nulle est né de l'article publié conjointement par Goldwasser, Micali et Rackoff : The Knowledge Complexity of Interactive Proof Systems (GMR85), proposé en 1985 et publié en 1989. Ce document explique principalement quelle quantité de connaissances doit être échangée après K cycles d'interactions dans un système interactif pour prouver qu'une déclaration est correcte. Si les connaissances échangées peuvent être rendues nulles, on parle de preuve à connaissance nulle. On suppose que le prouveur dispose de ressources illimitées et que le vérificateur ne dispose que de ressources limitées. Le problème des systèmes interactifs est que la preuve n'est pas entièrement mathématique, mais correcte au sens probabiliste, bien que la probabilité soit très faible (1/2^n).
Par conséquent, le système interactif n'est pas parfait et n'est qu'approximativement complet. Le système non interactif (NP) né sur cette base est complet et constitue le choix idéal pour le système de preuve à connaissance nulle.
Les premiers systèmes de preuve à connaissance nulle manquaient d'efficacité et de facilité d'utilisation, et sont donc toujours restés au niveau théorique. Ce n'est qu'au cours des dix dernières années qu'ils ont commencé à prospérer. Au fur et à mesure que la cryptographie a pris de l'importance, les preuves à connaissance nulle ont été mises en avant et sont devenues une orientation cruciale. En particulier, l'élaboration d'un protocole de preuve général, non interactif, à connaissance nulle et à taille de preuve limitée est l'un des axes d'exploration les plus critiques.
Fondamentalement, la preuve à connaissance nulle est un compromis entre la vitesse de la preuve, la vitesse de la vérification et la taille de la preuve. Le protocole idéal est une preuve rapide, une vérification rapide et une preuve de petite taille.
La percée la plus importante dans le domaine de la preuve par zéro connaissance est l'article de Groth de 2010 intitulé Short Pairing-based Non-interactive Zero-Knowledge Arguments, qui est également le pionnier théorique du groupe le plus important de zk-SNARKs en ZKP.
Le développement le plus important dans l'application de la preuve à connaissance nulle est le système de preuve à connaissance nulle utilisé par Z-cash en 2015, qui a protégé la confidentialité des transactions et des montants. Plus tard, il s'est transformé en une combinaison de zk-SNARK et de contrats intelligents, et zk-SNARK est entré dans les scénarios d'application plus larges.
Parmi les réalisations académiques importantes au cours de cette période, on peut citer
D'autres développements tels que PLONK, Halo2, etc. constituent également des progrès extrêmement importants et ont également apporté des améliorations à zk-SNARK.
Les deux applications les plus répandues des preuves à connaissance nulle sont la protection de la vie privée et l'augmentation de la capacité. Au début, avec le lancement des transactions privées et de plusieurs projets bien connus tels que Zcash et Monero, les transactions privées sont devenues une catégorie très importante. Cependant, comme la nécessité des transactions en matière de protection de la vie privée n'était pas aussi importante que le secteur l'espérait, ce type de projets représentatifs a commencé à ralentir. Entrer lentement dans les camps de deuxième et troisième niveaux (sans se retirer de la scène de l'histoire). Au niveau des applications, le besoin d'expansion s'est accru au point qu'Ethereum 2.0 (qui a été rebaptisé couche de consensus) s'est transformé en une voie centrée sur le rollup en 2020. La série ZK est officiellement revenue à l'attention de l'industrie et est devenue le centre d'intérêt.
Transactions privées : De nombreux projets ont mis en œuvre des transactions privées, notamment Zcash utilisant SNARK, Tornado, Monero utilisant bulletproof et Dash. Dash n'utilise pas de ZKP au sens strict, mais un système simple et rudimentaire de mélange de devises qui ne peut cacher que l'adresse, mais pas le montant. Je ne le mentionnerai pas ici.
Les étapes de la transaction zk-SNARKs appliquées par Zcash sont les suivantes :
Source : Démystifier le rôle des zk-SNARKs dans Zcash
Zcash a encore des limites dans l'utilisation de la connaissance zéro, c'est-à-dire qu'il est basé sur UTXO, de sorte qu'une partie des informations relatives à la transaction est seulement protégée, mais pas vraiment dissimulée. Étant donné qu'il s'agit d'un réseau distinct basé sur la conception de Bitcoin, il est difficile de l'étendre (de le combiner avec d'autres applications). Le taux d'utilisation réel du blindage (c'est-à-dire des transactions privées) est inférieur à 10 %, ce qui montre que les transactions privées n'ont pas été développées avec succès. (à partir de 2202)
Le grand pool de mélange unique utilisé par Tornado est plus polyvalent et repose sur un réseau "éprouvé" comme Ethereum. Torndao est essentiellement un pool de mélange de devises utilisant zk-SNARK, et le paramètre de confiance est basé sur l'article de Groth 16. Les fonctionnalités disponibles avec Tornado Cash sont les suivantes
Vitalik a indiqué que, par rapport à l'expansion, la protection de la vie privée est relativement facile à mettre en œuvre. Si des protocoles d'expansion peuvent être établis, la protection de la vie privée ne posera pas de problème.
Expansion : L'expansion de ZK peut se faire sur le réseau de premier niveau, comme Mina, ou sur le réseau de deuxième niveau, c'est-à-dire zk-roll up. L'idée de ZK roll up peut provenir du post de Vitalik en 2018, On-chain scaling to potentially ~500 tx/sec through mass tx validation.
ZK-rollup a deux types de rôles, l'un est celui de séquenceur et l'autre celui d'agrégateur. Le séquenceur est chargé d'emballer les transactions, et l'agrégateur est chargé de fusionner un grand nombre de transactions et de créer un rollup, et de former une preuve SNARK (il peut également s'agir d'une preuve à connaissance nulle basée sur d'autres algorithmes). Cette preuve sera comparée à l'état précédent de la couche 1, puis l'arbre de Merkle Ethereum sera mis à jour, ce qui permettra de calculer un nouvel arbre d'état.
Source : Polygon
Avantages et inconvénients du rollup ZK :
Source : Recherche sur Ethereum
Sur la base de la disponibilité des données et des méthodes de preuve, Starkware a un diagramme de classification classique pour L2 (la couche de disponibilité des données de Volition peut être sélectionnée on-chain ou off-chain) :
Source : Starkware
Les projets de rollup ZK les plus compétitifs actuellement sur le marché incluent : StarkNet de Starkware, zkSync de Matterlabs et Aztec connect d'Aztec, Hermez et Miden de Polygon, Loopring, Scroll, etc.
L'itinéraire technique consiste essentiellement à choisir SNARK (et ses versions améliorées) et STARK, ainsi que la prise en charge de l'EVM (y compris la compatibilité ou l'équivalence).
Discutez brièvement des problèmes de compatibilité des EVM :
La compatibilité entre le système ZK et l'EVM a toujours été un casse-tête, et la plupart des projets choisissent entre les deux. Ceux qui mettent l'accent sur le ZK peuvent construire une machine virtuelle dans leur propre système et avoir leur propre langage ZK et leur propre compilateur, mais cela rendra l'apprentissage plus difficile pour les développeurs et, comme il ne s'agit pas d'un code source ouvert, il deviendra une boîte noire. D'une manière générale, l'industrie a actuellement deux options. La première consiste à être entièrement compatible avec les opcodes de Solidity, et la seconde à concevoir une nouvelle machine virtuelle compatible avec ZK et Solidity. L'industrie ne s'attendait pas à une intégration aussi rapide au début, mais l'itération rapide de la technologie au cours de l'année ou des deux dernières années a porté la compatibilité EVM à un nouveau niveau, et les développeurs peuvent atteindre un certain degré de migration transparente (c'est-à-dire la chaîne principale Ethereum à ZK rollup) est un développement passionnant, qui affectera l'écologie du développement de ZK et le paysage concurrentiel. Nous examinerons cette question en détail dans des rapports ultérieurs.
Goldwasser, Micali et Rackoff ont proposé que les preuves à connaissance nulle aient trois propriétés :
Pour comprendre ZKP, nous commençons donc par zk-SNARK, car de nombreuses applications blockchain actuelles commencent par SNARK. Tout d'abord, jetons un coup d'œil à zk-SNARK.
zk-SNARK signifie : Une preuve de zéro-connaissance (zh-SNARK) est un ARgument de connaissance successif et non interactif de zéro-connaissance.
Le principe de preuve du zk-SNARK de Groth16 est le suivant :
Source : https://learnblockchain.cn/article/3220
Les étapes sont les suivantes :
Dans le prochain article, nous commencerons à étudier les principes et les applications de zk-SNARK, nous examinerons le développement de ZK-SNARK à travers plusieurs cas et nous explorerons sa relation avec zk-STARK.
Le taux de croissance actuel des projets de preuve à connaissance nulle (ZKP) dans l'industrie de la blockchain est étonnant, en particulier l'augmentation des applications ZKP aux deux niveaux de l'expansion et de la protection de la vie privée, qui nous a exposés à une variété de projets de preuve à connaissance nulle. En raison de la nature extrêmement mathématique du ZKP, il est beaucoup plus difficile pour les amateurs de chiffrement de comprendre le ZK en profondeur. Par conséquent, nous espérons également trier certains changements dans la théorie et l'application du ZKP depuis le début, et explorer l'impact et la valeur sur l'industrie cryptographique avec les lecteurs - apprendre ensemble à travers plusieurs rapports, qui servent également de résumé des pensées de l'équipe de recherche de HashKey Capital. Cet article est le premier de la série. Il présente principalement l'historique du développement, les applications et certains principes de base du ZKP.
Le système de preuve moderne à connaissance nulle est né de l'article publié conjointement par Goldwasser, Micali et Rackoff : The Knowledge Complexity of Interactive Proof Systems (GMR85), proposé en 1985 et publié en 1989. Ce document explique principalement quelle quantité de connaissances doit être échangée après K cycles d'interactions dans un système interactif pour prouver qu'une déclaration est correcte. Si les connaissances échangées peuvent être rendues nulles, on parle de preuve à connaissance nulle. On suppose que le prouveur dispose de ressources illimitées et que le vérificateur ne dispose que de ressources limitées. Le problème des systèmes interactifs est que la preuve n'est pas entièrement mathématique, mais correcte au sens probabiliste, bien que la probabilité soit très faible (1/2^n).
Par conséquent, le système interactif n'est pas parfait et n'est qu'approximativement complet. Le système non interactif (NP) né sur cette base est complet et constitue le choix idéal pour le système de preuve à connaissance nulle.
Les premiers systèmes de preuve à connaissance nulle manquaient d'efficacité et de facilité d'utilisation, et sont donc toujours restés au niveau théorique. Ce n'est qu'au cours des dix dernières années qu'ils ont commencé à prospérer. Au fur et à mesure que la cryptographie a pris de l'importance, les preuves à connaissance nulle ont été mises en avant et sont devenues une orientation cruciale. En particulier, l'élaboration d'un protocole de preuve général, non interactif, à connaissance nulle et à taille de preuve limitée est l'un des axes d'exploration les plus critiques.
Fondamentalement, la preuve à connaissance nulle est un compromis entre la vitesse de la preuve, la vitesse de la vérification et la taille de la preuve. Le protocole idéal est une preuve rapide, une vérification rapide et une preuve de petite taille.
La percée la plus importante dans le domaine de la preuve par zéro connaissance est l'article de Groth de 2010 intitulé Short Pairing-based Non-interactive Zero-Knowledge Arguments, qui est également le pionnier théorique du groupe le plus important de zk-SNARKs en ZKP.
Le développement le plus important dans l'application de la preuve à connaissance nulle est le système de preuve à connaissance nulle utilisé par Z-cash en 2015, qui a protégé la confidentialité des transactions et des montants. Plus tard, il s'est transformé en une combinaison de zk-SNARK et de contrats intelligents, et zk-SNARK est entré dans les scénarios d'application plus larges.
Parmi les réalisations académiques importantes au cours de cette période, on peut citer
D'autres développements tels que PLONK, Halo2, etc. constituent également des progrès extrêmement importants et ont également apporté des améliorations à zk-SNARK.
Les deux applications les plus répandues des preuves à connaissance nulle sont la protection de la vie privée et l'augmentation de la capacité. Au début, avec le lancement des transactions privées et de plusieurs projets bien connus tels que Zcash et Monero, les transactions privées sont devenues une catégorie très importante. Cependant, comme la nécessité des transactions en matière de protection de la vie privée n'était pas aussi importante que le secteur l'espérait, ce type de projets représentatifs a commencé à ralentir. Entrer lentement dans les camps de deuxième et troisième niveaux (sans se retirer de la scène de l'histoire). Au niveau des applications, le besoin d'expansion s'est accru au point qu'Ethereum 2.0 (qui a été rebaptisé couche de consensus) s'est transformé en une voie centrée sur le rollup en 2020. La série ZK est officiellement revenue à l'attention de l'industrie et est devenue le centre d'intérêt.
Transactions privées : De nombreux projets ont mis en œuvre des transactions privées, notamment Zcash utilisant SNARK, Tornado, Monero utilisant bulletproof et Dash. Dash n'utilise pas de ZKP au sens strict, mais un système simple et rudimentaire de mélange de devises qui ne peut cacher que l'adresse, mais pas le montant. Je ne le mentionnerai pas ici.
Les étapes de la transaction zk-SNARKs appliquées par Zcash sont les suivantes :
Source : Démystifier le rôle des zk-SNARKs dans Zcash
Zcash a encore des limites dans l'utilisation de la connaissance zéro, c'est-à-dire qu'il est basé sur UTXO, de sorte qu'une partie des informations relatives à la transaction est seulement protégée, mais pas vraiment dissimulée. Étant donné qu'il s'agit d'un réseau distinct basé sur la conception de Bitcoin, il est difficile de l'étendre (de le combiner avec d'autres applications). Le taux d'utilisation réel du blindage (c'est-à-dire des transactions privées) est inférieur à 10 %, ce qui montre que les transactions privées n'ont pas été développées avec succès. (à partir de 2202)
Le grand pool de mélange unique utilisé par Tornado est plus polyvalent et repose sur un réseau "éprouvé" comme Ethereum. Torndao est essentiellement un pool de mélange de devises utilisant zk-SNARK, et le paramètre de confiance est basé sur l'article de Groth 16. Les fonctionnalités disponibles avec Tornado Cash sont les suivantes
Vitalik a indiqué que, par rapport à l'expansion, la protection de la vie privée est relativement facile à mettre en œuvre. Si des protocoles d'expansion peuvent être établis, la protection de la vie privée ne posera pas de problème.
Expansion : L'expansion de ZK peut se faire sur le réseau de premier niveau, comme Mina, ou sur le réseau de deuxième niveau, c'est-à-dire zk-roll up. L'idée de ZK roll up peut provenir du post de Vitalik en 2018, On-chain scaling to potentially ~500 tx/sec through mass tx validation.
ZK-rollup a deux types de rôles, l'un est celui de séquenceur et l'autre celui d'agrégateur. Le séquenceur est chargé d'emballer les transactions, et l'agrégateur est chargé de fusionner un grand nombre de transactions et de créer un rollup, et de former une preuve SNARK (il peut également s'agir d'une preuve à connaissance nulle basée sur d'autres algorithmes). Cette preuve sera comparée à l'état précédent de la couche 1, puis l'arbre de Merkle Ethereum sera mis à jour, ce qui permettra de calculer un nouvel arbre d'état.
Source : Polygon
Avantages et inconvénients du rollup ZK :
Source : Recherche sur Ethereum
Sur la base de la disponibilité des données et des méthodes de preuve, Starkware a un diagramme de classification classique pour L2 (la couche de disponibilité des données de Volition peut être sélectionnée on-chain ou off-chain) :
Source : Starkware
Les projets de rollup ZK les plus compétitifs actuellement sur le marché incluent : StarkNet de Starkware, zkSync de Matterlabs et Aztec connect d'Aztec, Hermez et Miden de Polygon, Loopring, Scroll, etc.
L'itinéraire technique consiste essentiellement à choisir SNARK (et ses versions améliorées) et STARK, ainsi que la prise en charge de l'EVM (y compris la compatibilité ou l'équivalence).
Discutez brièvement des problèmes de compatibilité des EVM :
La compatibilité entre le système ZK et l'EVM a toujours été un casse-tête, et la plupart des projets choisissent entre les deux. Ceux qui mettent l'accent sur le ZK peuvent construire une machine virtuelle dans leur propre système et avoir leur propre langage ZK et leur propre compilateur, mais cela rendra l'apprentissage plus difficile pour les développeurs et, comme il ne s'agit pas d'un code source ouvert, il deviendra une boîte noire. D'une manière générale, l'industrie a actuellement deux options. La première consiste à être entièrement compatible avec les opcodes de Solidity, et la seconde à concevoir une nouvelle machine virtuelle compatible avec ZK et Solidity. L'industrie ne s'attendait pas à une intégration aussi rapide au début, mais l'itération rapide de la technologie au cours de l'année ou des deux dernières années a porté la compatibilité EVM à un nouveau niveau, et les développeurs peuvent atteindre un certain degré de migration transparente (c'est-à-dire la chaîne principale Ethereum à ZK rollup) est un développement passionnant, qui affectera l'écologie du développement de ZK et le paysage concurrentiel. Nous examinerons cette question en détail dans des rapports ultérieurs.
Goldwasser, Micali et Rackoff ont proposé que les preuves à connaissance nulle aient trois propriétés :
Pour comprendre ZKP, nous commençons donc par zk-SNARK, car de nombreuses applications blockchain actuelles commencent par SNARK. Tout d'abord, jetons un coup d'œil à zk-SNARK.
zk-SNARK signifie : Une preuve de zéro-connaissance (zh-SNARK) est un ARgument de connaissance successif et non interactif de zéro-connaissance.
Le principe de preuve du zk-SNARK de Groth16 est le suivant :
Source : https://learnblockchain.cn/article/3220
Les étapes sont les suivantes :
Dans le prochain article, nous commencerons à étudier les principes et les applications de zk-SNARK, nous examinerons le développement de ZK-SNARK à travers plusieurs cas et nous explorerons sa relation avec zk-STARK.