Un rollup est un réseau de couche 2 qui exécute les transactions hors d'Ethereum, les regroupe, puis republie les données sur Ethereum. Cet article explique comment cela fonctionne, en quoi les rollups optimistes et les rollups à preuve de connaissance nulle (zero-knowledge) diffèrent, et pourquoi chaque frais de rollup inclut un coût pour Ethereum.
Pour une vue d'ensemble des couches, voir couche 1, couche 2 et couche 3 expliquées.
Comment un rollup regroupe les transactions
Quand vous envoyez une transaction sur un rollup comme Base, elle ne va pas directement sur Ethereum. Elle va à l'opérateur du rollup, qui l'exécute et met à jour l'état propre au rollup, comme les soldes. Quelques secondes plus tard, de nombreuses transactions de ce type sont compressées en un lot (batch). Le lot est ensuite publié sur Ethereum en une seule transaction.
L'expression « roll up » (enrouler) décrit cela : de nombreuses transactions sont enroulées en une seule. Le coût de la transaction Ethereum est partagé entre tous ceux qui se trouvent dans le lot, ce qui est la principale raison pour laquelle les frais sont plus bas que sur Ethereum lui-même.
Le séquenceur
Le séquenceur (sequencer) est le serveur qui reçoit les transactions sur un rollup, les met en ordre, les exécute et produit les blocs L2. Il donne aussi aux utilisateurs des confirmations rapides, souvent en bien moins d'une seconde, avant que quoi que ce soit n'atteigne Ethereum.
La plupart des grands rollups actuels font fonctionner un seul séquenceur, exploité par l'équipe derrière la chaîne. C'est simple et rapide. Cela entraîne aussi des compromis, décrits ici de façon neutre :
- Pouvoir d'ordonnancement. Le séquenceur choisit l'ordre des transactions : en théorie, il pourrait donc les retarder ou les réordonner.
- Indisponibilité. Si le séquenceur s'arrête, l'usage normal du rollup s'arrête. Les rollups ont une solution de repli : les utilisateurs peuvent soumettre des transactions via un contrat sur Ethereum, même si c'est plus lent et plus coûteux.
- Ne peut pas voler des fonds à lui seul. Le séquenceur ne peut pas créer un retrait valide pour de l'argent qu'il ne possède pas, car les preuves ou les vérifications sur Ethereum le rejetteraient.
Dans toute l'industrie, les équipes parlent de décentraliser les séquenceurs avec le temps. L'état actuel diffère selon les chaînes : consultez donc la documentation de chaque projet.
Publier les données sur Ethereum : calldata et blobs
Un rollup doit publier ses données sur Ethereum pour que n'importe qui puisse vérifier la chaîne. Historiquement, il le faisait dans la calldata, un champ d'une transaction Ethereum ordinaire. La calldata est permanente et entre en concurrence avec toute l'autre activité d'Ethereum, elle était donc chère.
En 2024, Ethereum a ajouté les blobs avec l'EIP-4844. Un blob est un gros bloc de données que les nœuds Ethereum conservent pendant une courte durée, pas pour toujours, et il a son propre marché de frais, distinct du gas normal. C'est bien moins cher pour les rollups, et cela a fait baisser le coût typique des transactions L2. Vous pouvez lire la spécification sur eips.ethereum.org.
Rollups optimistes
Un rollup optimiste (optimistic rollup) suppose que les lots publiés sont corrects tant que personne ne prouve le contraire. C'est l'optimisme du nom.
- Après la publication d'un lot, il y a une fenêtre de contestation (challenge window). Pendant celle-ci, quiconque repère un résultat invalide peut soumettre une preuve de fraude (fraud proof) à Ethereum.
- Si la preuve de fraude est valide, le mauvais résultat est écarté.
- Si personne ne conteste, le résultat est définitif sur Ethereum une fois la fenêtre close.
La fenêtre de contestation est d'environ 7 jours pour les retraits vers Ethereum via le pont officiel. L'usage quotidien sur le rollup n'est pas retardé. Seul le retour des fonds vers la L1 via le pont canonique doit attendre. Les ponts tiers rapides peuvent accélérer cela moyennant des frais, et les ponts et leurs risques explique comment.
Trois chaînes de ChainMonitor sont des rollups optimistes : Arbitrum One, Base et OP Mainnet. Base et OP Mainnet utilisent l'OP Stack. Arbitrum utilise sa pile Nitro. Voir les guides Arbitrum, Base et Optimism.
Rollups à preuve de connaissance nulle (ZK)
Un rollup ZK (zero-knowledge rollup) ne repose pas sur une fenêtre de contestation. À la place, chaque lot est accompagné d'une preuve de validité (validity proof), une preuve mathématique que le nouvel état découle de l'ancien selon les règles. Ethereum vérifie la preuve avec un contrat intelligent. Si elle est valide, le lot est accepté.
Les avantages sont une finalité plus rapide sur la L1, car aucune longue période d'attente n'est nécessaire, et une forte garantie qu'un état invalide ne peut pas être accepté. Les inconvénients sont que la génération des preuves exige beaucoup de calcul, et que la technologie est plus complexe à construire, surtout pour prendre en charge toutes les fonctionnalités d'Ethereum. Ce domaine évolue rapidement, et plusieurs rollups ZK existent. Aucune des sept chaînes de ChainMonitor n'est un rollup ZK.
| Caractéristique | Optimiste | ZK |
|---|---|---|
| Hypothèse de base | Correct sauf contestation | Prouvé correct |
| Comment les erreurs sont détectées | Preuve de fraude | Une preuve de validité est requise |
| Retrait vers la L1 | Environ 7 jours (pont canonique) | Plus rapide, après vérification de la preuve |
| Charge de calcul | Plus faible | Plus élevée pour les preuves |
| Sur ChainMonitor | Arbitrum, Base, OP Mainnet | Aucun |
Les frais de données L1 dans chaque frais de L2
Les frais d'une transaction L2 comportent deux parties :
- Frais d'exécution L2. Ils paient l'exécution de votre transaction sur le rollup. Ils sont généralement minuscules.
- Frais de données L1. Ils paient votre part de la publication des données sur Ethereum. C'est souvent la plus grosse part des frais.
Les frais de données L1 changent quand le coût des données sur Ethereum change : les frais totaux sur une L2 peuvent donc bouger même quand la L2 elle-même est calme. Sur le suivi du gas, les chiffres des L2 incluent ces frais de données L1, de sorte que vous voyez le vrai coût. Pour approfondir, lisez gas et frais.
Ce que cela signifie pour vous
- Pour un usage quotidien, les rollups optimistes et ZK se ressemblent : rapides et bon marché.
- Si vous prévoyez de ramener des fonds vers Ethereum, vérifiez combien de temps cela prend. Pour les rollups optimistes, prévoyez environ 7 jours ou utilisez un pont et lisez ses risques.
- Vos fonds sont détenus par des contrats sur Ethereum, mais un rollup a quand même son propre code, son séquenceur et ses propres règles de mise à jour. Ce sont des risques distincts.
Questions fréquentes
Qu'est-ce qu'un rollup en crypto ?
Un rollup est un réseau de couche 2 qui traite les transactions hors d'Ethereum, les regroupe en lots et publie les données sur Ethereum afin d'hériter de la sécurité d'Ethereum.
Pourquoi un retrait d'Arbitrum, de Base ou d'Optimism prend-il 7 jours ?
Ce sont des rollups optimistes. Après qu'un retrait est demandé via le pont officiel, il y a une fenêtre de contestation d'environ 7 jours pendant laquelle n'importe qui pourrait prouver qu'il est invalide. Les fonds sont libérés à la fin de la fenêtre.
Quelle est la différence entre rollups optimistes et rollups ZK ?
Les rollups optimistes supposent que les résultats sont corrects et autorisent des contestations pendant une période. Les rollups ZK joignent à chaque lot une preuve de validité mathématique, donc aucune période d'attente pour les contestations n'est nécessaire.
Qu'est-ce qu'un séquenceur ?
Un séquenceur est le serveur qui ordonne et exécute les transactions sur un rollup et donne des confirmations rapides. La plupart des grands rollups utilisent un seul séquenceur exploité par l'équipe du projet, ce qui est rapide mais constitue un point de centralisation.
Qu'est-ce que les blobs sur Ethereum ?
Les blobs sont des pièces jointes de données bon marché et temporaires introduites par l'EIP-4844. Les rollups les utilisent pour publier leurs données sur Ethereum à un coût inférieur à celui de la calldata.