ZKP : Construire Des Passerelles Inter-Chaînes Sûres Et Efficaces
Contexte
Depuis la naissance du Bitcoin en 2009, la technologie des chaînes blocs a fait de grands progrès. Si le Bitcoin et l’Ethereum continuent de dominer le marché, de nombreuses chaînes de blocs différentes, dotées de fonctions et d’applications uniques, ont vu le jour. Les chaînes blocs ne peuvent pas interagir entre elles car elles sont construites avec des architectures variables. Alors que les écosystèmes de la technologie des chaînes de blocs, en particulier la DeFi, ne cessent de croître, combler le fossé entre les différentes chaînes de blocs est devenu un problème clé.
Les ponts inter-chaînes sont apparus comme une solution à ce problème précis. Ces applications permettent à différents actifs de se déplacer sur plusieurs chaînes de blocs. Dans certains cas, les ponts inter-chaînes font même de l’interopérabilité des informations une réalité. Semblables à un pont qui enjambe les deux rives d’une rivière, les ponts inter-chaînes transfèrent de manière transparente les actifs d’une chaîne à l’autre, ce qui permet aux utilisateurs de tirer parti des caractéristiques uniques des différents réseaux de chaînes de blocs. En outre, ils permettent aux applications de transférer des données et des informations entre différentes chaînes. Malgré leurs mérites, les ponts inter-chaînes sont également confrontés à des défis, notamment en termes de sécurité. Par exemple, en 2021, Poly Network a été piraté, ce qui a entraîné la perte de plus de 600 millions de dollars de crypto-actifs. En 2022, à peu près le même montant de crypto-monnaie a été volé à Ronin Network, le pont inter-chaînes d’Axie Infinity. Ces affaires prouvent que les ponts inter-chaînes ont besoin de mesures de sécurité plus complètes pour protéger les actifs et les données des utilisateurs.
Ces dernières années, les preuves à connaissance nulle (ZKP) ont fait des progrès significatifs dans leurs applications. Le ZKP est un outil cryptographique puissant qui protège la confidentialité des données des utilisateurs et prouve l’efficacité des solutions de mise à l’échelle du Rollup. En outre, les ZKP jouent également un rôle essentiel et unique dans la conception de ponts inter-chaînes. Grâce à ces preuves concises, la chaîne cible peut vérifier efficacement la transition d’état de la chaîne source, ce qui atténue les risques de tiers non liés à la chaîne cible et à la chaîne source et améliore la sécurité des ponts inter-chaînes. Aujourd’hui, nous allons passer en revue un certain nombre de ponts inter-chaînes courants et expliquer comment la technologie ZKP est appliquée aux ponts inter-chaînes en étudiant plusieurs ponts inter-chaînes basés sur la technologie ZKP.
Types de ponts inter-chaînes (Cross-chain Bridges)
Le chercheur en crypto-monnaies 0xjim a un jour divisé les ponts inter-chaînes en quatre catégories : Team Human, Team Economics, Team Security et Team Game Theory, en fonction de leur conception et de leurs mécanismes. En particulier, les chaînes Team Human sont plus centralisées. Par exemple, le réseau Ronin se compose de neuf nœuds complets gérés par des entités connues du public. Elles prouvent la validité d’une transaction par le biais d’une vérification multi-signature, et une fois qu’un seuil est dépassé, la transaction est considérée comme vérifiée. Dans des circonstances normales, ces validateurs ne feront pas de mal, mais avec cette approche centralisée, ils pourraient être attaqués et devenir la plus grande faille, et cela pourrait être désastreux si les clés privées ne sont pas correctement gérées.
Vient ensuite la Team Economics, qui comprend Celer, Axelar et Thorchain. Ces chaînes sont similaires aux multisigs, mais avec des tokenomics. Pour empêcher toute action malveillante, les chaînes de la Team Economics exigent que les nœuds (validateurs) mettent en jeu des jetons (tokens). En cas de violation, le stake du validateur sera sabré. D’un point de vue financier, elles doivent donc vérifier la validité des transactions avec honnêteté.
Le troisième type est appelé sécurité d’équipe, qui couvre les chaînes qui utilisent TEE ou MPC pour rendre les transferts inter-chaînes plus sûrs. Par exemple, tous les nœuds effectueraient une vérification chiffrée du client léger hors chaîne dans un TEE comme Intel SGX afin de préserver la confidentialité et l’intégrité de la gestion des clés privées.
Enfin, il y a la théorie des jeux d’équipe, qui couvre LayerZero, Nomad et Synapse. Ces protocoles divisent le pontage en deux tâches distinctes et découragent la coordination entre les deux exécutants. Dans le cas de LayerZero, les oracles transmettent les en-têtes de blocs et les relais transmettent les preuves de transaction. Ensemble, ils remplissent les fonctions d’un client léger de la chaîne.
Les quatre types de passerelles s’appuient sur la vérification hors chaîne et l’authentification multifactorielle. En particulier, les trois premiers utilisent essentiellement leur propre chaîne/réseau PoS comme témoin pour transmettre des informations entre deux chaînes publiques. Cette mise à l’échelle plus rapide et moins coûteuse permet à ces ponts de se connecter plus facilement à davantage de chaînes, mais le prix à payer est que les utilisateurs et les fournisseurs de liquidités doivent faire entièrement confiance aux fonds ou aux données des validateurs externes. En d’autres termes, ils se fient à la sécurité du pont plutôt qu’à celle de la chaîne source ou de la chaîne cible.
ZKP
Ces dernières années, nous avons assisté à de fréquents accidents de ponts inter-chaînes, qui ont entraîné d’importantes pertes financières. Cela met en évidence les vulnérabilités que des hypothèses de confiance supplémentaires apportent aux ponts inter-chaînes. Ainsi, la conception la plus sûre d’un pont inter-chaînes est la confiance minimale, c’est-à-dire que le pont n’hérite que des attributs de sécurité des deux chaînes connectées sans faire confiance à une tierce partie. La vérification sur chaîne est un moyen efficace de minimiser la confiance dans les ponts inter-chaînes. Plus précisément, la chaîne cible valide le consensus de la chaîne source et confirme si la transaction spécifiée est incluse dans la chaîne source. Par exemple, les validateurs de la chaîne cible peuvent exécuter un client léger de la chaîne source pour vérifier la racine Merkle soumise et vérifier que la transaction a obtenu des signatures valides de la part des validateurs de la chaîne source. Toutefois, cette approche a été difficile à adopter car la vérification sur la chaîne est assez coûteuse. Les validateurs de la chaîne cible peuvent trouver difficile d’exécuter un client léger pour différentes chaînes sources, et certaines chaînes cibles peuvent ne pas prendre en charge le schéma de signature adopté par la chaîne source. Par exemple, les validateurs du consensus PoS d’Ethereum utilisent des signatures BLS et l’EVM ne dispose pas de la précompilation pour la courbe BLS12–381 utilisée dans ces signatures, ce qui rend l’implémentation Solidity d’un tel client léger excessivement coûteuse.
Les progrès récents des systèmes ZKP ont rendu le calcul vérifiable plus succinct. En outre, ZKP joue un rôle unique et vital dans la conception de ponts inter-chaînes, tout comme les zk-SNARKs alimentent la mise à l’échelle des projets zkEVM. Le calcul vérifiable peut également générer des preuves de validité pour les états de la chaîne, et ces preuves de validité valident le consensus pour les clients légers avec efficacité et à faible coût, ce qui permet une interopérabilité minimisant la confiance. En fait, les ponts inter-chaînes utilisent le caractère succinct des ZKPs, au lieu de leur propriété de connaissance nulle. En ce sens, pour les ponts inter-chaînes, les ZKPs sont similaires à la preuve de validité des solutions de mise à l’échelle Rollup.
Succinct Labs
Succinct Labs et Gnosis ont co-lancé un pont inter-chaînes basé sur SNARK qui permet une interopérabilité minimisée par la confiance entre n’importe quelles deux chaînes PoS Ethereum, telles qu’Ethereum et Gnosis Chain. Ceci est réalisé en déployant un client léger sous la forme d’un contrat intelligent Solidity sur la chaîne qui génère une preuve de validité pour l’état de la chaîne source via des ZKP succincts. Cette approche permet une vérification efficace du client léger, ce qui facilite les communications inter-chaînes entre Ethereum et Gnosis Chain, permettant ainsi une interopérabilité minimisant la confiance. Le client léger suit les en-têtes de blocs Ethereum sur Gnosis, et vice versa, sans avoir besoin d’hypothèses de confiance supplémentaires. Parallèlement, un comité de synchronisation composé de 512 validateurs Ethereum choisis au hasard toutes les 27 heures confirme la validité de l’état d’Ethereum. Lorsque deux tiers ou plus des validateurs signent l’en-tête du bloc, l’état d’Ethereum est considéré comme valide. En tant que tel, le système est essentiellement un pont de preuve d’enjeu (PoS).
Succinct Labs génère des zk-SNARKs via un client léger utilisant le langage de programmation Circom et le système de preuve Groth16, ce qui réduit le coût de la vérification sur la chaîne. Au lieu de vérifier une signature BLS agrégée, le client léger vérifie un seul Groth16 zkSNARK. Par ailleurs, le client léger doit également suivre les validateurs du comité de synchronisation. Chaque fois que le comité de synchronisation sélectionne de nouveaux validateurs, les validateurs actuels signent un en-tête de bloc contenant le hachage SSZ de la clé publique du comité suivant. Comme le hachage SSZ utilise le SHA-256, il n’est pas compatible avec SNARK et un grand nombre de contraintes doivent être calculées. Pour résoudre ce problème, Succinct Labs a créé un circuit qui fait correspondre le hachage SSZ du jeu de validateurs suivant à un engagement Poseidon compatible avec SNARK, qui est ensuite stocké sur la chaîne et utilisé comme entrée dans le SNARK de vérification de signature BLS pour garantir que la signature vérifiée provient bien des validateurs du comité de synchronisation.
La technologie en est encore au stade du développement, et le pont de jetons sur le réseau de test a été lancé pour la démonstration entre Ethereum et Gnosis, mais n’a pas encore été utilisé pour protéger des actifs réels. En outre, il convient de noter que le niveau de sécurité de la technologie n’a pas encore atteint celui du consensus Ethereum.
Electron Labs
Electron Labs est un protocole inter-chaînes qui protège la communication inter-chaînes par le biais de clients légers ZK. Il vise à connecter Ethereum à l’écosystème Cosmos (ainsi qu’à d’autres chaînes EVM) en utilisant les protocoles IBC et la technologie zk-SNARK. Les projets similaires à Electron Labs comprennent Polymer et Gerege.
Normalement, Cosmos IBC déploie des clients légers sous la forme de contrats intelligents sur les chaînes source et cible pour vérifier les transactions inter-chaînes. De même, pour connecter IBC à Ethereum, les développeurs doivent exécuter le client léger Tendermint sur Ethereum en tant que contrat intelligent Solidity. Cependant, cette opération s’avère extrêmement coûteuse en gaz car elle nécessite la vérification de centaines de signatures Ed25519 dans Solidity, et les précompilations Ed25519 ne sont pas disponibles sur Ethereum. Par conséquent, plutôt que de vérifier les signatures Ed25519 directement sur Ethereum, Electron Labs utilise une solution alternative : il construit une ZKP de la validité de la signature en dehors de la chaîne et vérifie la preuve sur la chaîne.
Les modules clients légers sur la chaîne du côté d’Ethereum incluront un vérificateur de preuve ZK au lieu d’un vérificateur de signatures Ed25519. Le relayeur, au lieu de soumettre l’en-tête complet du client léger, ne soumettra que la preuve de validité de ce dernier. Electron Labs a construit une bibliothèque basée sur Circom qui génère une preuve zk-SNARK pour un lot de signatures Ed25519, ce qui rend moins coûteuse la vérification de ces signatures sur Ethereum.
Positron est le premier pont d’Electron, qui a été mis en service entre le testnet Goerli et les testnets NEAR. Le pont est utilisé pour démontrer la mise en œuvre des ZKP et des clients légers sur la chaîne. Lors des tests publics, les limites de vitesse des nœuds RPC ont provoqué des latences dans le traitement des transactions sur Positron, bloquant des centaines de transactions pendant plusieurs heures. Le problème a été résolu depuis.
zkBridge
zkBridge est un pont inter-chaînes sans confiance, sans permission, extensible, universel et efficace. Tout nœud peut librement rejoindre le réseau pour relayer les en-têtes de blocs, générer des preuves et réclamer des récompenses. Plus précisément, zkBridge se compose d’un réseau de relais d’en-têtes de blocs et d’un contrat de mise à jour. Dans le réseau de relais d’en-têtes de blocs, les relayeurs récupèrent les en-têtes de blocs de la chaîne source, génèrent des preuves de validité des en-têtes de blocs et envoient les en-têtes avec les preuves au contrat de mise à jour qui est mis en place sur la chaîne cible. Pour le contrat de mise à jour, les en-têtes de blocs correspondants de la chaîne source sont stockés une fois que les preuves associées ont passé la vérification. En outre, le contrat de mise à jour maintient également un état de client léger. Dès qu’un nouvel en-tête de bloc est ajouté, le contrat renouvelle l’état du client léger, tout comme les autres clients légers de la chaîne source. Le contrat de mise à jour expose également une fonction aux applications, grâce à laquelle une application sur la chaîne cible peut obtenir l’en-tête de bloc d’une hauteur donnée sur la chaîne source. Après avoir obtenu les informations de l’en-tête de bloc, l’application peut procéder à d’autres vérifications et créer ses propres fonctions.
Pour une génération rapide de preuves et un faible coût de vérification des preuves sur la chaîne, zkBridge utilise un système de preuve récursif à deux niveaux. Dans la première couche, le pont s’appuie sur deVirgo, une version distribuée du système de preuve Virgo. deVirgo combine la vérification distribuée de la somme et l’engagement polynomial distribué pour obtenir un parallélisme optimal, et est capable d’accélérer la génération de preuves par des ordres de grandeur lorsqu’il est exécuté sur des machines distribuées. Dans la deuxième couche, zkBridge utilise Groth16 pour prouver que la preuve précédemment générée par deVirgo prouve effectivement les en-têtes de blocs correspondants.
=nil; Foundation
Se concentrant sur le développement de la ZK tech, la =nil ; Foundation est créée en avril 2018 dans le but de soutenir et de promouvoir la recherche et le développement de systèmes de gestion de bases de données et de cryptographie appliquée. Elle s’efforce de fournir des solutions techniques complètes aux chaînes de blocs et aux protocoles, leur permettant de générer des ZKPs en fonction de leurs besoins. Parmi les investisseurs à l’origine du projet figurent l’investisseur institutionnel de premier plan Polychain, ainsi que les protocoles ZK en vogue StarkWare et Mina Protocol.
Récemment, la =nil ; Foundation a présenté un compilateur de circuits en langage courant appelé zkLLVM, qui n’implique pas zkVM et peut compiler le code d’implémentation EVM existant écrit en C++ ou en Rust. Avec zkLLVM, les développeurs peuvent rapidement créer des applications telles que zkRollup, zkBridge et zkOracle à faible coût. De plus, comme la génération de preuves SNARK/STARKS nécessite une puissance de calcul importante, la =nil ; Foundation a créé le ZK Proof Market pour aider les équipes à simplifier leur travail et à externaliser certains types de calculs à des tiers, en permettant aux demandeurs de preuves de publier des demandes de preuves pour n’importe quel circuit prédéfini et en fournissant un marché compétitif avec des offres ouvertes. Enfin, les générateurs de preuves du marché des preuves exécutent les ordonnances et renvoient les preuves nouvellement générées.
Auparavant, ils ont créé zkBridge entre Mina-Ethereum et Solana-Ethereum. Grâce à zkLLVM, les développeurs peuvent directement compiler des codes écrits dans des langages de programmation courants tels que C++ et Rust en circuits, générer l’état nécessaire ou les preuves de consensus, et mettre en place zkBridge. Par exemple, Mina Protocol et Ethereum utilisent zkLLVM pour générer les circuits auxiliaires de preuve d’état de Mina et les vérificateurs in-EVM, permettant la vérification à faible coût de l’état de Mina sur EVM.
Conclusion
Aujourd’hui, nous avons passé en revue plusieurs projets qui construisent des ponts inter-chaînes avec la technologie ZKP. Tous ces projets explorent la manière d’utiliser les ZKP pour générer des preuves de validité afin de réaliser une vérification efficace et peu coûteuse du consensus entre clients légers, permettant ainsi une interopérabilité minimisant la confiance. Bien qu’ils restent à un stade naissant et qu’ils soient souvent limités à certaines chaînes, ces projets offrent une solution innovante au problème d’interopérabilité auquel sont confrontées les chaînes de blocs. Nous pensons qu’à mesure que la technologie ZKP continue de progresser, l’industrie des chaînes blocs assistera à l’émergence d’un plus grand nombre de solutions inter-chaînes dotées de solides performances en matière de sécurité.
Références:
What I Talk About When I Talk About Bridges
https://medium.com/coinmonks/what-i-talk-about-when-i-talk-about-bridges-429c16015774
Proof of Consensus Bridging between Ethereum and Gnosis Chain
https://blog.succinct.xyz/post/2022/10/29/gnosis-bridge/
Bringing IBC to Ethereum using ZK-Snarks
https://ethresear.ch/t/bringing-ibc-to-ethereum-using-zk-snarks/13634
zkBridge: Trustless Cross-chain Bridges Made Practical
https://rdi.berkeley.edu/zkp/zkBridge/zkBridge.html
=nil; zkLLVM Circuit Compiler
https://blog.nil.foundation/2023/02/02/circuit-compiler.html