Une preuve à connaissance nulle (ZKP) est une méthode cryptographique qui permet à une partie, appelée le prouveur, de convaincre une autre partie, le vérificateur, qu'une affirmation est vraie sans révéler d'informations au-delà de la vérité de l'affirmation elle-même. En termes techniques, un ZKP satisfait trois propriétés fondamentales : complétude, solidité et connaissance nulle. La complétude garantit que des prouveurs honnêtes peuvent toujours convaincre le vérificateur si l'affirmation est vraie. La solidité garantit que des prouveurs malhonnêtes ne peuvent pas tromper le vérificateur en acceptant une affirmation fausse. La connaissance nulle signifie que le vérificateur n'apprend rien au-delà de la validité de la revendication.
Ce concept n'est pas seulement théorique. Les preuves à connaissance nulle sont déjà utilisées dans les systèmes cryptographiques modernes pour vérifier les identités, valider les transactions et appliquer des politiques sans révéler de données privées. Elles sont particulièrement adaptées aux applications blockchain, où la confidentialité et la décentralisation sont essentielles.
Les blockchains publiques comme Ethereum et Bitcoin fonctionnent sur le principe de la transparence totale. Chaque nœud du réseau doit réexécuter chaque transaction pour la valider. Bien que ce modèle garantisse la sécurité et le consensus, il a un coût en termes d'évolutivité et de confidentialité. Les preuves à connaissance nulle répondent à ces deux limitations.
Pour la confidentialité, les ZKPs permettent aux utilisateurs de prouver quelque chose - par exemple, qu'une transaction est valide - sans exposer le contenu de la transaction. Cela permet des transactions confidentielles et une logique de contrat intelligent privée tout en maintenant la vérifiabilité publique. Pour l'évolutivité, les ZKPs compressent le calcul en une preuve succincte. Cette preuve peut être vérifiée rapidement sur la chaîne, même si le calcul original était coûteux et long. Au lieu d'exécuter la logique complète sur chaque nœud, seule la preuve doit être vérifiée. Cela réduit considérablement les coûts de gaz et améliore le débit.
La technologie à connaissance nulle permet de mettre à l'échelle les blockchains sans sacrifier la confiance, et de construire des applications privées sans introduire d'intermédiaires centralisés. À mesure que les blockchains deviennent plus complexes et sont adoptées pour un usage grand public, ces capacités deviennent essentielles.
Les contrats intelligents ont transformé les blockchains en plateformes programmables. Ils permettent aux développeurs de créer des applications décentralisées qui exécutent automatiquement des logiques basées sur des règles prédéfinies. Cependant, les contrats intelligents sont contraints par les limites computationnelles de la blockchain elle-même. Ils doivent s'exécuter sur la chaîne, où chaque opération est coûteuse et publique.
À mesure que les applications décentralisées deviennent plus complexes, ces contraintes deviennent plus problématiques. Effectuer de grands calculs ou accéder à d'immenses ensembles de données sur la chaîne est impraticable. En même temps, les utilisateurs exigent de plus en plus de confidentialité, ce que les contrats intelligents standard ne peuvent pas fournir.
Pour y remédier, les développeurs ont commencé à déplacer le calcul hors chaîne tout en préservant la confiance grâce à des preuves cryptographiques. C'est là que les preuves à divulgation nulle de connaissance entrent en jeu. Au lieu d'exécuter toute la logique sur chaîne, le calcul lourd est effectué hors chaîne, et seule une preuve succincte du résultat est soumise à la blockchain. Cela maintient la blockchain sécurisée et vérifiable tout en améliorant de manière spectaculaire les performances et la confidentialité.
Cette transition de la logique on-chain à la vérification off-chain marque un changement majeur dans l'architecture blockchain. Elle permet aux applications de se développer au-delà des limites de la Machine Virtuelle Ethereum et prend en charge de nouveaux cas d'utilisation qui seraient autrement impossibles.
Le coprocesseur à connaissance nulle est un système spécialisé hors chaîne qui effectue des calculs et génère des preuves cryptographiques de leur exactitude. Contrairement aux contrats intelligents, qui s'exécutent directement sur la blockchain, un coprocesseur ZK fonctionne de manière externe. Il traite les entrées, exécute un calcul à l'aide d'un zkVM ou d'un circuit personnalisé, et produit une preuve à connaissance nulle. Cette preuve peut ensuite être soumise sur la chaîne pour prouver que le calcul a été exécuté correctement.
L'idée d'un coprocesseur est empruntée au matériel informatique. Dans les systèmes traditionnels, un coprocesseur est un processeur séparé utilisé pour gérer des tâches spécifiques comme les graphiques ou l'arithmétique en virgule flottante. De manière similaire, un coprocesseur ZK décharge la logique complexe de la blockchain, permettant à la chaîne principale de se concentrer sur la vérification plutôt que sur l'exécution.
Les coprocesseurs ZK introduisent un environnement d'exécution modulaire. Les développeurs peuvent construire de la logique dans des environnements d'exécution off-chain spécialisés, effectuer de grands calculs ou des calculs privés, puis soumettre le résultat vérifié à n'importe quelle blockchain. Cette modularité permet la composition entre les chaînes, améliore les performances et soutient une conception d'application plus flexible.
Dans l'architecture moderne de la blockchain, les coprocesseurs ZK occupent une couche intermédiaire entre les contrats intelligents on-chain et les sources de données ou de calcul externes. À la base, vous avez la blockchain elle-même, qui enregistre l'état, applique les règles et vérifie les preuves. Au-dessus se trouvent les contrats intelligents, qui définissent la logique de l'application à interface publique et acceptent des entrées des utilisateurs ou d'autres contrats.
Les coprocesseurs ZK fonctionnent parallèlement ou en dessous de ces contrats intelligents. Ils reçoivent des entrées — souvent sous la forme de calldata ou de messages signés — de l'utilisateur ou du contrat, exécutent la logique hors chaîne et génèrent une preuve à divulgation nulle de connaissance. La preuve est soumise de nouveau au contrat intelligent, qui la vérifie à l'aide d'une clé de vérification. Si elle est valide, le contrat met à jour son état ou déclenche une réponse.
Cette architecture est de plus en plus modulaire. Un coprocesseur peut servir plusieurs contrats ou applications. De même, un contrat peut travailler avec plusieurs coprocesseurs. Le système est également extensible à travers les chaînes. Un coprocesseur ZK peut calculer une preuve pour des données sur une chaîne et la soumettre à une autre, permettant l'interopérabilité entre chaînes avec de fortes garanties.