
Comment améliorer l'efficacité de la génération de preuves grâce au « modèle en pipeline » ?
TechFlow SélectionTechFlow Sélection

Comment améliorer l'efficacité de la génération de preuves grâce au « modèle en pipeline » ?
Cet article explorera en profondeur l'application de la génération de preuves à connaissance nulle selon une approche pipeline dans les zkRollup.
Rédaction : Kang Shuiyue, PDG de Fox Tech ; Meng Xuanji, scientifique en chef chez Fox Tech
Relecture : Lin Yanxi, CTO de Fox Tech
Préface
À l’ère numérique actuelle, avec le développement rapide de la technologie blockchain, l'attention portée à la confidentialité et à la sécurité des données ne cesse de croître. Pour permettre des applications blockchain plus efficaces et évolutives, plusieurs solutions ont été proposées, dont l’une est la technique de preuve à connaissance nulle (Zero-Knowledge Proof). Outil cryptographique puissant, la preuve à connaissance nulle permet de vérifier la véracité d’un énoncé sans divulguer d’informations sensibles.
Ces dernières années, zkRollup, considéré comme une innovation majeure dans les technologies de mise à échelle de la blockchain, a suscité un vif intérêt. zkRollup regroupe un grand nombre de transactions, les exécute hors chaîne, puis utilise les propriétés des preuves à connaissance nulle pour valider leur exactitude, améliorant ainsi significativement le débit et l’évolutivité de la blockchain. Dans la mise en œuvre de zkRollup, la manière dont les transactions sont réparties, groupées et transformées en preuves constitue un élément fondamental du système.
Dans les systèmes Layer1, les transactions sont regroupées sous forme de blocs et traitées par les mineurs. Dans les systèmes Layer2, en revanche, la façon dont les transactions sont regroupées — autrement dit, comment un bloc Layer2 est produit — nécessite une réflexion spécifique.
FOX est un projet de mise à l'échelle Layer2 basé sur zkEVM utilisant la technologie zkRollup. Pour résoudre ce problème, FOX explore actuellement un traitement parallélisé en mode pipeline afin de traiter les transactions par lots, ce qui devrait considérablement améliorer l'efficacité.
Cet article examine en profondeur l’application du mode pipeline dans la génération de preuves à connaissance nulle au sein de zkRollup. Nous analyserons d’abord les méthodes classiques de regroupement des transactions, puis nous concentrerons sur la technique de génération de preuves en mode pipeline, en détaillant ses principes et ses cas d’utilisation.
Méthode classique de regroupement des transactions
Dans les systèmes blockchain traditionnels, la confirmation et le regroupement des transactions constituent un processus long et gourmand en ressources. Généralement, chaque transaction est validée individuellement avant d'être ajoutée à un bloc, puis un consensus est atteint via un algorithme de consensus, mettant ainsi à jour l'état de la blockchain. Toutefois, cette approche séquentielle présente des limites évidentes, notamment un faible débit et une latence élevée.
Dans le processus classique de regroupement des transactions, une série de transactions en attente sont d’abord collectées, qu’il s’agisse de transactions soumises par des utilisateurs ou provenant d’autres chaînes. Ensuite, ces transactions sont validées pour garantir leur légalité et leur validité. Cette validation inclut la vérification des signatures, ainsi que la conformité et la cohérence des transactions. Une fois validées, elles sont regroupées en lot pour former un bloc en attente de soumission.
Dans un système zkRollup, les transactions soumises par les utilisateurs sont tout d’abord placées dans un pool de transactions en attente. Dans le système FOX, le Sequencer récupère régulièrement les transactions depuis ce pool, les exécute localement et les trie, formant ainsi un paquet de transactions — autrement dit, un bloc. À ce stade, les résultats d’exécution sont envoyés à Layer1, tandis que ces résultats combinés aux données de transaction sont transmis aux nœuds Folder chargés de générer les preuves.
Selon notre compréhension fondamentale des algorithmes de preuve à connaissance nulle (le lecteur peut se reporter aux articles précédents de FOX), le nœud Folder a besoin des données d’entrée et des résultats d’exécution complets pour générer une preuve. Cela implique que, selon la méthode classique, il faut attendre que le Sequencer ait terminé l’exécution de toutes les transactions avant de les transmettre au Folder. Afin d’optimiser davantage l’utilisation des ressources de calcul, nous souhaitons que le Sequencer transmette immédiatement une partie des résultats intermédiaires au Folder dès qu’un lot de transactions a été exécuté, permettant ainsi le démarrage anticipé de la génération de preuve.
Le modèle de traitement en pipeline exploré par FOX
Pour atteindre cet objectif, nous devons permettre au Sequencer d’exécuter les transactions par lots et d’envoyer immédiatement les résultats intermédiaires au Folder après chaque lot.
Concrètement, supposons qu’un paquet de transactions contienne 100 transactions, divisées en lots de 10 transactions chacun. Le traitement en mode pipeline peut être représenté par le schéma suivant :

Figure 1 : Génération de preuve en mode pipeline
Analysons maintenant brièvement la différence de temps nécessaire entre les deux méthodes, et discutons des conditions dans lesquelles l’approche en pipeline est plus efficace. Par souci de simplification, nous négligeons ici le temps de transmission des données du Sequencer vers le Folder.
Soit n le nombre total de transactions dans un paquet, k le nombre de lots, la fonction de temps d’exécution du Sequencer notée exe(), la fonction de génération de preuve du Folder notée prove(), et la fonction d’agrégation des preuves notée aggr(). Notons Sum1 le temps total selon la méthode classique, et Sum2 le temps total selon la méthode en pipeline.
Ainsi, selon le processus décrit, la méthode classique dépend de l’exécution complète par le Sequencer avant que le Folder ne commence à générer la preuve. Le temps total requis est donc :
Sum1 = exe(n) + prove(n)
En revanche, le temps requis pour la méthode en pipeline comprend : le temps d’exécution du premier lot par le Sequencer, le maximum entre le temps de génération des preuves pour les k lots et le temps d’exécution des (k-1) lots restants, ainsi que le temps final d’agrégation :
Sum2 = exe(n/k) + max{k × prove(n/k), (k−1) × exe(n/k)} + aggr(k)
En comparant les deux durées totales, on peut approximer la fonction d’exécution exe() par une fonction linéaire. Quant à prove(), puisque l’algorithme de preuve utilisé par FOX produit des temps de génération linéaires, la fonction prove() est également linéaire.
On peut donc conclure :
-
Si exe(n) > prove(n), alors lorsque prove(n) > aggr(k), on a Sum1 > Sum2.
-
Si exe(n) < prove(n), alors lorsque (k−1) × exe(n/k) > aggr(k), on a Sum1 > Sum2.
Par conséquent, si le temps d’agrégation aggr(k) est suffisamment petit et que le temps de génération de preuve est linéaire, l’approche en pipeline contribue fortement à améliorer l’efficacité du système et à réduire le temps total de génération de preuve.
Cette analyse n’est valable que pour les algorithmes de preuve dont le temps de calcul est linéaire, soulignant ainsi l’importance du choix par FOX d’un algorithme à temps de preuve linéaire.

Figure 2 : Diagramme du processus de calcul de preuve
La raison pour laquelle ce mode pipeline est encore en phase d’exploration tient au fait que, plus un paquet de transactions est divisé en lots nombreux, plus le Sequencer doit enregistrer et transmettre de données au Folder, augmentant ainsi les coûts. Pour le Folder, bien que la charge de calcul par lot diminue, le processus d’agrégation devient plus complexe. La manière optimale de découper les lots reste donc un compromis à trouver, dépendant spécifiquement des performances de calcul du Sequencer et du Folder.
L’allocation efficace des transactions et leur regroupement progressif pour une génération par lots de preuves constituent un point clé d’optimisation
Dans la mise en œuvre de zkRollup, l’allocation efficace des transactions, leur regroupement et la génération de preuves constituent un point critique d’optimisation. FOX continue d’améliorer ses méthodes afin de trouver des solutions encore plus performantes. Voici le processus de base adopté par FOX :
-
Collecte des transactions : rassembler les transactions en attente et les stocker dans un pool de transactions. Ces transactions peuvent provenir d’utilisateurs ou d’autres systèmes ou contrats.
-
Tri des transactions : ordonner les transactions du pool selon un certain critère afin d’en déterminer la séquence de traitement. On peut utiliser des algorithmes basés sur la priorité, le timestamp ou d'autres facteurs. L’objectif est de maximiser le débit global et l’efficacité.
-
Allocation des transactions : affecter les transactions triées à des blocs appropriés. Dans zkRollup, un nouveau bloc est généralement créé pour accueillir un certain nombre de transactions. Ce processus peut utiliser un algorithme glouton ou d’autres stratégies d’allocation afin de maximiser l’utilisation de la capacité de chaque bloc.
-
Regroupement en blocs : assembler les transactions allouées pour former un bloc complet. Dans l’architecture Layer2 de FOX, ce bloc contient uniquement un résumé des transactions — tel que leur hachage ou une représentation compacte — et non leurs contenus détaillés. Les informations complètes des transactions sont stockées dans le Ringer de FOX, assurant ainsi la disponibilité des données (DA).
-
Génération de preuve : produire une preuve correspondante pour le bloc regroupé. Cette preuve doit attester de la validité de chaque transaction du bloc ainsi que de la cohérence globale du bloc. Le mode « pipeline » de FOX s’applique principalement à cette étape, permettant une utilisation plus efficace de la puissance de calcul du Folder. Les transactions d’un bloc sont transmises par lots au Folder pour génération de preuve. Le Folder calcule séparément la preuve de correction pour chaque lot, puis agrège l’ensemble. Habituellement, cette preuve repose sur l’algorithme FOAKS, un algorithme de preuve à connaissance nulle rapide et adapté, qui compare les transactions du bloc aux règles de transition d’état afin de vérifier leur conformité aux règles et contraintes du système.
-
Vérification de la preuve : le destinataire peut utiliser la preuve pour valider la légitimité du bloc sans avoir à recalculer l’intégralité du bloc. Ce processus de vérification peut être extrêmement efficace, car il se limite à l’inspection de la preuve, sans nécessiter de calculs complexes sur les transactions.
Le « mode pipeline » de FOX intervient principalement lors de la génération de preuve. Pendant la collecte et le tri des transactions, le Sequencer rassemble les transactions en attente et les ordonne selon une règle prédéfinie afin d’établir leur séquence d’exécution. Ensuite, lors de l’exécution par lots, le Sequencer traite les transactions triées par groupes. Chaque groupe est envoyé au moteur d’exécution, qui simule leur exécution et enregistre les résultats intermédiaires de transition d’état. Dès qu’un lot est exécuté, le Sequencer transmet les résultats intermédiaires au Folder.
Cela peut être réalisé en encodant les résultats intermédiaires — tels que les mises à jour d’état ou les hachages de transactions — et en les envoyant progressivement au Folder via un canal de communication. Dès que le Folder reçoit les résultats intermédiaires de chaque lot, il utilise ces données pour générer progressivement les preuves correspondantes. Ces preuves reposent sur l’algorithme de preuve à connaissance nulle FOAKS développé en interne par FOX, utilisant les résultats intermédiaires comme entrée pour prouver la validité des transactions et la cohérence du bloc entier.
La dernière étape est la vérification de la preuve. Les preuves générées sont envoyées à l’entité de vérification, c’est-à-dire le contrat intelligent Verifier déployé sur Ethereum, afin de valider la légitimité du bloc. Le Verifier utilise un algorithme de vérification pour examiner la preuve et s’assurer de sa justesse et de sa validité.
Grâce à cette approche en pipeline, le Sequencer peut continuellement envoyer les résultats intermédiaires au Folder pendant l’exécution des transactions, permettant ainsi une génération progressive des preuves. Cela améliore l’efficacité globale du système et son débit, tout en réduisant la latence liée à la génération des preuves.
Conclusion
Cet article a présenté une approche innovante dans zkRollup pour le traitement par lots des transactions et la génération de preuves : le mode pipeline. Nous avons analysé en détail les coûts temporels associés, montrant que, pour les algorithmes de preuve à temps linéaire, l’utilisation judicieuse du pipeline permet de réduire significativement le temps total de génération de preuve. Le système de preuve adopté par FOX offre précisément un temps de preuve linéaire, ce qui facilite une génération rapide des preuves et améliore grandement l’expérience utilisateur. L’équipe FOX continuera d’explorer et d’optimiser cette solution.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














