
Auteur: Michael Zhu (A16Z Crypto Research Engineer), Sam Ragsdale (A16Z Crypto Investment Engineer);
Le 9 avril 2024, l’équipe de recherche et d’ingénierie A16Z Engypyping a publié la secousse préliminaire de la secousse initialeaccomplirIl s’agit d’une nouvelle méthode de conception de snark, qui est deux fois plus rapide que la technologie existante, et il y aura plus d’améliorations.
La vérification du calcul (communément appelé ZK) est une technologie très puissante, qui convient à la fois pour la blockchain et le non-blockchain.Il permet à un ordinateur (personne de vérification du vérification) de confier le calcul à un autre ordinateur plus puissant (preuve de la prover) et de vérifier efficacement si le calcul est correctement exécuté.
Dans l’industrie du cryptage, l’application qui peut être vérifiée (en particulier les nuages) comprend:
La blockchain de couche 2 (L2) utilise des SNARKS pour assurer l’intégrité de sa conversion d’état.
-
Le pont cross-chain utilise des grondements pour prouver un transfert de dépôt / retrait vers une autre chaîne.
-
Un «processeur d’associé ZK» (défini par Axiom) utilise des SNARKS pour prouver que certaines données sur les données de la chaîne sont calculées.
Il existe de nombreux exemples intéressants non-blockchain qui ne sont guère explorés.Par exemple, les fournisseurs de services cloud peuvent prouver à leur client qu’ils exécutent correctement certains calculs confiés à leurs serveurs.Le registre des logiciels comme NPM ou Crates.io peut prouver que les fichiers binaires sont compilés à partir d’un code source spécifique, ce qui réduit le risque d’attaques de chaîne d’approvisionnement logiciels.Ou une personne peut prouver que leurs outils « Super Mario Brothers » Auxiliary Racing (TAS) ont battu le record du monde (Risc Zero a également décrit cette idée).
Beaucoup de ces applications ont de nombreux programmes trop compliqués et ne peuvent pas être convertis en Imagine de circuit DSL (langage de domaine spécifique), par exemple, en utilisant le langage Circom pour réécrire l’intégralité du compilateur ou du simulateur NES.Cependant, si le programme se compile en un ensemble d’instructions pris en charge par ZKVM, il n’a pas besoin d’être transformé par circuit d’écriture manuscrite ou DSL: les programmeurs doivent uniquement utiliser le langage de programmation avancé qu’ils choisissent d’écrire le programme pour traiter les travaux restants par ZKVM.
Ensuite, le défi restant est les performances de ZKVM Prover: il a besoin de assez rapidement pour être utile.Ceci est particulièrement important pour les exemples de blockchain, car le temps de prover affectera le retard et affectera l’expérience utilisateur.
Il peut être vérifié et calculé qu’il a été présenté comme la solution ultime qui devrait être l’expansion de la blockchain depuis longtemps, mais cette technologie a connu trois obstacles majeurs en termes d’adoption:
-
performance:Par rapport à l’exécution native, l’exécution du programme de preuve introduira quelques frais généraux quantitatifs.
-
Complexité:La complexité des SNARKS a suscité des inquiétudes concernant sa sécurité, car la garantie de sécurité des actifs sur les milliards de dollars sur la chaîne.
-
Disponibilité:Les connaissances professionnelles requises par des langages de domaine spécifiques comme Circom ne sont pas en mesure d’obtenir la plupart des développeurs de logiciels.
Le développement de la machine virtuelle Zero-Knowledge (ZKVMS) surmonte le troisième obstacle (disponible), car ZKVMS permet aux développeurs d’écrire des programmes en utilisant des langages de programmation avancés tels que Rust ou Go sans avoir besoin de prouver son exécution sans aucun snark sous-jacent.Cependant, l’amélioration de la disponibilité ZKVMS a également conduit à des frais généraux élevés (8 à 9 quantités) et à un déploiement complexe.
L’année dernière, un article de Jolt a introduit un nouveau paradigme à ZKVMS, promettant de surmonter les deux défis des frais généraux de performance et de déploiement.Par rapport aux idées existantes de Stark, les antécédents théoriques de Jolt.En utilisant Lasso pour interroger les paramètres et autres technologies SumCheck, Jolt peut prouver le programme plus rapidement qu’auparavant, et il est plus facile de déployer de nouvelles instructions VM qu’auparavant.
Aujourd’hui, nous sommes heureux de publier un déploiement open source Jolt pour l’ensemble d’instructions RV32I et de réaliser la promesse faite dans l’article Jolt.
-
rapide:Notre déploiement est plus de 5 fois plus rapide que Risc Zero, ce qui est deux fois plus rapide que le SP1 qui vient d’être libéré dans le test de référence préliminaire.
-
(Relatif) simple:L’ensemble de la bibliothèque de code est inférieur à 25 000 lignes (moins de la moitié des autres ZKVMS) et une seule instruction CPU peut être implémentée en seulement 50 lignes.
Ci-dessous, regardons la référence de performance ensemble.Nous fournissons également des conseils aux développeurs qui sont intéressés à développer des applications à l’aide de Jolt. et plus facile à utiliser.
L’équipe A16Z Engineering Engineering est basée sur une solide croyance en valeur open source.Jolt en tant que produit public open source accélérera la recherche ZKVM, la recherche plus large et le développement de l’ensemble de l’industrie Web3.Construire une technologie de chiffrement dans les îles du code source fermé (le code ne peut pas être examiné par le public), ce qui apporte généralement la confiance au système incroyable.
1,performance
Par rapport à l’exécution native, les ZKVMS apporteront environ 8 frais généraux quantitatifs, ce qui rend de nombreuses applications vérifiées et informatiques non réalisées.La version actuelle de Jolt a réduit ces dépenses à moins de 6 commandes.
Bien que nous ayons déjà les performances les plus avancées, la technologie sous-jacente de Jolt (basée sur l’accord de Sumcheck) n’a pas reçu l’attention d’ingénieurs comme la technologie plus populaire (basé FRI).Cela montre que Jolt a encore plus d’espace de développement – nous avons mis une certaine optimisation sur la feuille de route, et nous nous attendons à ce qu’il n’y ait aucune chance de découverte.
Notre test de référence A16Z / ZKVM a déterminé Jolt, SP1 et RISC Zero sur divers programmes de rouille différents.En conséquence, la performance relative est similaire dans de nombreux programmes RV32 similaires.La figure ci-dessous fera référence à un programme qui exécute la chaîne de hachage SHA2.
Les résultats de ces tests de référence sont présentés ci-dessous.Le test de référence fonctionne sur le AWS R7G.Tous les tests de référence sont uniquement pour le CPU.
Le système continu de continuations fait face à l’équilibre entre le temps du prover et les avantages et la taille de la preuve – lorsqu’il est prouvé qu’il est divisé en plus de « tranches de fragment » (ou « paragraphe »), le prover devient plus rapide (parce que les éclats sont entre les éclats, il est parallèle), mais il a une preuve plus importante avant la récursivité.Prouvez que la taille de la taille est indiquée ci-dessous, les résultats du SP1 sont paramétrés par le nombre de pièces: SP1 (Shard_count).Risc Zero a une taille fixe, donc son comptage de fragment augmente cachée avec le nombre de cycle du programme.Risc Zero prend en charge récursif (SP1 et Jolt n’ont pas été pris en charge), mais le test de référence ci-dessous est un test de performance effectué sans récursivité.Nous n’utilisons pas de «pré-compilation», donc le test de référence reflète les performances du système de preuve ZKVM central.
2Comment c’estSecousseDéveloppement et construction
Afin de faire en sorte que Jolt l’utilise le plus facile à utiliser autant que possible, Jolt SDK fournit un simple emballage de fonctions de noyau Jolt par le partenaire d’ingénierie cryptographique A16Z Noah Citron).Tout ce que vous avez à faire est d’ajouter Jolt_sdk :: Provisible Propriété à la fonction à prouver.
Vous pourrez alors utiliser la fonction build_ * pour créer un provocateur et un vérificateur.
Veuillez vérifier l’exemple complet de Fibonacci (et autres) dans la bibliothèque de code.
Afin d’en savoir plus sur l’architecture Jolt, Jolt Book (WIP) est un document de sélection de conception et de mise à jour en temps réel sur la sélection de conception et la bibliothèque de code qui n’enregistre pas dans les articles Jolt.Au cours des prochaines semaines, nous publierons plus de contenu pour les développeurs intéressés à développer et à construire sur Jolt ou à vouloir connaître le mécanisme interne de Jolt.
3Quelle est la prochaine chose
Bien que Jolt soit une étape importante dans le champ ZKVM, nous avons encore un long chemin à parcourir.Prenez du recul, notre test de référence de performance montre que Jolt Prover (sur le M3 MAX) prouve que la vitesse d’un programme est aussi rapide que le processeur de 100 kHz – il s’agit des deux de la capacité informatique de l’embarquement de vol Apollo n ° 11. Plus que.Faites une comparaison humble, 150 fois plus lente que la calculatrice graphique TI-84.
Afin d’obtenir des performances de niveau informatique, nous avons beaucoup de travail à faire.Nous continuerons d’améliorer les performances et la disponibilité de Jolt afin de fournir aux développeurs la meilleure expérience de développement.Les tâches principales suivantes sur la feuille de route nous font nous sentir excités:
-
BiniusLeBen Diamond et Jim Posen ont récemment proposé une solution d’engagement polynomiale multi-linéaire.La combinaison de l’algorithme Sumcheck de Binius et Justin Thaler améliorera considérablement les performances du prover de la secousse (nous devrions être 5 à 10 fois).
-
Plus d’instructions:La bibliothèque de code JOLT est actuellement déployée RV32I, mais la structure Jolt est très flexible.Nous prévoyons d’ajouter une extension RISC-V « M » pour soutenir la méthode de multiplication et d’élimination des entiers, comme décrit dans l’article de Jolt.De plus, Jolt peut facilement prendre en charge les variantes de 64 bits RV64IM.
-
Contenance Système continu:À l’heure actuelle, en raison de la limite de la mémoire, Jolt ne peut pas prouver le calcul d’une longueur.Nous utiliserons les continuations pour diviser le long calcul en blocs de calcul plus petits, et chaque bloc peut être prouvé par secousse.Cela réduira l’utilisation de la mémoire et prendra en charge un parallélisme supplémentaire lorsqu’il prouve un seul calcul.
-
Certificat récursif:En combinant la secousse avec un autre système de preuve, nous avons encore réduit la taille et le temps de vérification.Par exemple, le dispositif de vérification Jolt peut être implémenté dans le langage Circom pour générer la preuve groth16 de taille constante qui peut être vérifiée efficacement sur la chaîne.