Les attaques sur les blockchains modulaires - Censorship.wtf
Source : https://www.youtube.com/watch?v=fh6T9PQf5p4
The Motivation
Nashqueue (l'orateur) est un ingénieur de recherche chez Celestial Labs et un contributeur à Rollkit
Les rollups utilisent désormais des couches de disponibilité des données (DA) décentralisées, des séquenceurs partagés et des prouveurs. Si cela permet aux rollups d'améliorer leur fonctionnement, il n'empêche que ces couches spécialisées ont leur propre niveau de résistance à la censure.
Il existe des attaques potentielles qui illustrent la façon dont la dépendance des rollups à d'autres protocoles affecte leur résistance à la censure.
Qu'est-ce qu'un rollup ? (1:15)
Comment les choses se passent :
- Un utilisateur soumet une transaction à un séquenceur, qui regroupe les transactions.
- Les nœuds complets du rollup voient le lot
- Les nœuds légers s'appuient sur l'en-tête avec un engagement/garantie cryptographique pour la finalité.
Bloc du Rollup = Données du Rollup + En-tête du Rollup. Les blocs du Rollup sont constitués de données Rollup (lot de transactions ou différences d'état) et d'en-têtes Rollup (métadonnées sur le bloc, y compris un engagement sur les transactions).
Les rollups délèguent différentes étapes :
- La disponibilité des données est déléguée
- Inclusion : quelles transactions sont dans le bloc
- Ordonnancement : ordre des transactions
- Exécution : racine d'état après exécution des transactions
- Preuve : preuves cryptographiques validant les métadonnées
Il y a de la souplesse dans la façon dont les rollups divisent ces responsabilités :
- Le séquenceur fait l'inclusion et l'ordonnancement en regroupant les transactions.
- Le producteur d'en-tête peut faire l'exécution et la preuve.
Attaque #1 : censurer l'utilisateur final (3:15)
Dans le rollup le plus basique, les transactions sont postées directement sur la couche de disponibilité des données (DA), et les nœuds complets du rollup peuvent lire les transactions à partir de la couche DA.
Cela signifie que la couche DA obtient toute la MEV (valeur maximale extractible). La couche DA peut réorganiser, censurer, etc.
Au lieu de la couche de base, la MEV pourrait fuir vers un séquenceur partagé : le séquenceur partagé peut fournir des confirmations rapides, mais la finalité vient toujours de la couche DA et des nœuds complets du rollup.
Donc le séquenceur partagé est également incité à extraire la MEV et à recevoir des pots-de-vin pour manipuler les transactions.
Attack #2 : retarder la finalité (4:15)
Si le séquenceur partagé ne fournit pas de confirmations rapides, les nœuds du rollup lisent à partir de la couche DA pour forcer la publication :
- La couche DA et le séquenceur peuvent colluder et censurer - le séquenceur bloque les lots afin que les nœuds du rollup ne puissent pas atteindre la chaîne canonique.
- La couche DA ne réorganise pas les transactions, puisqu'elles ne sont pas encore publiées. La finalité est retardée.
Attack #1+#2 : la couche DA censure le séquenceur (5:15)
S'il existe deux schémas, à savoir séquenceur partagé et couche de base, il peut y avoir une "échappatoire" priorisant le lot du séquenceur partagé.
Mais avoir un mécanisme de séquencement de secours n'est pas suffisant, car la couche de données peut toujours retarder les lots sélectivement pour déjouer la solution de repli.
En fin de compte, la couche de données contrôle l'ordre des transactions et la censure avant la finalité, permettant l'extraction de MEV.
La couche d'exécution (6:15)
À propos de l'exécution :
- Les rollups ont des nœuds complets qui exécutent toutes les transactions pour vérifier la validité (rollups pessimistes).
- Les nœuds légers n'exécutent pas les transactions. Ils s'appuient sur les producteurs d'en-têtes pour fournir des résumés des lots de transactions.
Un producteur d'en-tête centralisé peut réorganiser les transactions d'un lot pour s'attribuer la MEV avant de valider l'en-tête.
Pour empêcher qu'un seul producteur d'en-tête n'extraie toute la valeur, il peut y avoir une compétition grâce à une production d'en-tête permissionless.
Différents producteurs d'en-tête peuvent appliquer différentes fonctions objectives pour réorganiser les transactions, comme maximiser l'extraction de MEV, le gas brûlé, l'exéprience utilisateur ou les récompenses communautaires.
Les règles de choix de fork déterminent quelle chaîne d'en-têtes est canoniquement acceptée. Les règles pourraient favoriser les en-têtes maximisant des objectifs spécifiques.
Les producteurs d'en-têtes contrôlent l'ordre des transactions avant la validation du lot, permettant l'extraction de MEV à moins que l'ordre ne soit appliqué au niveau de la couche de données.
Attack #3 : la couche DA censure les headers (07:50)
S'il y a plusieurs producteurs d'en-têtes par hauteur de rollup, la MEV fuit à nouveau vers la couche de données via une censure rentable.
Les producteurs d'en-têtes peuvent soudoyer la couche de données pour censurer d'autres en-têtes lorsque leur MEV est la plus élevée, créant un système malicieux où le "plus offrant" l'emporte.
Attack #5 : le prouveur censure la génération de preuve (08:45)
Pour les Validity Rollups, il existe un marché de preuves décentralisé pour inciter à créer des preuves pour la couche DA
- La couche DA fait toujours l'ordonnancement et l'inclusion.
- Le producteur d'en-tête fait l'exécution.
Il y aurait une attaque qui censure la propagation des preuves pour retarder la finalité pour les nœuds légers des utilisateurs.
Cela peut être atténué avec des incitations et une propagation en P2P. Mais le vrai problème, ce sont les clients légers on-chain nécessaires pour la communication cross-chain
Les transactions initialisant un bridge doivent inclure des preuves ZK. Ces transactions passent à travers la pipeline de la blockchain de destination
Cela permet à la couche DA de la chaîne de destination de réorganiser et censurer les transactions du bridge avant l'exécution et la finalité.
Donc même avec un marché de preuve décentralisé, la couche DA et le producteur d'en-tête de la chaîne de destination peuvent extraire de la MEV des transactions du bridge en contrôlant l'ordre et l'inclusion.
Attack #6 : retarder la finalité du bridge (10:50)
Avec les bridges de rollup optimistes, la résistance à la censure dépend de la fenêtre de la challenge period (le temps autorisé pour soumettre des preuves de fraude)
La couche DA et le producteur d'en-tête de la chaînede destination peuvent contrôler l'ordre des transactions et l'inclusion pour les transactions sur le bridge. Cela leur permet d'extraire de la MEV, par exemple en censurant une transaction pour débloquer un collatéral et provoquer une liquidation.
La challenge period doit être suffisamment longue pour tenir compte d'une éventuelle censure des transactions de bridge
Mais plus de protocoles et d'étapes impliqués rendent le calcul de la fenêtre plus difficile. Si elle est trop courte, la censure pourrait empêcher de signaler les fraudes
Il faut plus de recherche sur la façon de définir correctement les challenges period pour garantir la résistance à la censure dans la communication cross-chain.
Combiner le tout (12:45)
Dans un système de blockchain modulaire avec des séquenceurs partagés, des couches DA, des producteurs d'en-tête, des preuves ZK et des bridges, il existe de nombreux vecteurs d'attaque potentiels pour la censure de transactions et l'extraction de MEV.
La couche DA est critique. Elle doit avoir une forte résistance à la censure pour empêcher l'extraction systémique de MEV sur les transactions avant la finalité.
Les méthodes pour améliorer la résistance à la censure de la couche DA comprennent :
- Le chiffrement à seuil pour que les proposants ne connaissent pas le contenu des transactions
- Plusieurs proposeurs par bloc pour diviser le risque de censure
- Priorisation des lots du séquenceur partagé sur les lots du séquenceur de base
Dans l'ensemble, les searchers et la couche DA résistants à la censure sont essentiels pour empêcher l'extraction de MEV à travers les rollups, les validiums, les preuves ZK et et les bridges dans un système de blockchain modulaire.
Conférences recommandées pour plus de détails :