Au début, Ethereum avait deux stratégies de mise à l'échelle dans sa feuille de route. Une (par exemple, voirce premier papierà partir de 2015) était le "sharding": au lieu de vérifier et stocker l'ensemble des transactions de la chaîne, chaque nœud aurait seulement besoin de vérifier et stocker une petite fraction des transactions. C'est ainsi que fonctionne tout autre réseau pair à pair (par exemple BitTorrent), donc nous pourrions sûrement faire fonctionner les blockchains de la même manière. Un autre concept était celui des protocoles de couche 2: des réseaux qui se situeraient au-dessus d'Ethereum de manière à leur permettre de bénéficier pleinement de sa sécurité, tout en conservant la plupart des données et des calculs en dehors de la chaîne principale. Les "protocoles de couche 2" signifiaientcanaux d'étaten 2015, Plasmaen 2017, et ensuiterollupsEn 2019. Les Rollups sont plus puissants que les canaux d'état ou Plasma, mais ils nécessitent une grande quantité de bande passante de données on-chain. Heureusement, d'ici 2019, la recherche sur le sharding avait résolule problème de vérification de la « disponibilité des données » à grande échelle. En conséquence, les deux chemins ont convergé, et nous avons obtenu le Feuille de route centrée sur le cumulqui continue d'être la stratégie de mise à l'échelle d'Ethereum aujourd'hui.
La montée, édition de la feuille de route 2023.
La feuille de route centrée sur le rollup propose une simple division du travail : l'Ethereum L1 se concentre sur le fait d'être une couche de base robuste et décentralisée, tandis que les L2 prennent en charge la tâche d'aider l'écosystème à se développer. C'est un schéma qui se répète partout dans la société : le système judiciaire (L1) n'est pas là pour être ultra-rapide et efficace, il est là pour protéger les contrats et les droits de propriété, et c'est aux entrepreneurs (L2) de construire par-dessus.robustebasecoucheet emmener l'humanité vers Mars (de manière métaphorique et littérale).
Cette année, la feuille de route centrée sur le rollup a connu d'importants succès : la bande passante des données Ethereum L1 a considérablement augmenté avecblocs EIP-4844, et plusieurs rollups EVM sont maintenant à l'étape 1. Un très implémentation hétérogène et pluraliste du sharding, où chaque L2 agit comme une « shard » avec ses propres règles et sa logique interne, est maintenant une réalité. Mais comme nous l'avons vu, emprunter cette voie présente des défis uniques. Ainsi, notre tâche est maintenant de mener à bien la feuille de route centrée sur le rollup et de résoudre ces problèmes, tout en préservant la robustesse et la décentralisation qui rendent l'Ethereum L1 spécial.
Le trilemme de la scalabilité était une idée introduit en 2017, qui a fait valoir qu’il existe une tension entre trois propriétés d’une blockchain : la décentralisation (plus précisément : faible coût d’exploitation d’un nœud), l’évolutivité (plus précisément : un nombre élevé de transactions traitées) et la sécurité (plus précisément : un attaquant ayant besoin de corrompre une grande partie des nœuds de l’ensemble du réseau pour faire échouer ne serait-ce qu’une seule transaction).
Notamment, le trilemme n'est pas un théorème, et le message introduisant le trilemme n'est pas venu avec une preuve mathématique. Il a donné un argument mathématique heuristique : si un nœud favorable à la décentralisation (par exemple un ordinateur portable grand public) peut vérifier N transactions par seconde, et que vous avez une chaîne qui traite k*N transactions par seconde, alors soit (i) chaque transaction n'est vue que par 1/k des nœuds, ce qui implique qu'un attaquant n'a besoin de corrompre que quelques nœuds pour faire passer une mauvaise transaction, soit (ii) vos nœuds vont être costauds et votre chaîne pas décentralisée. Le but du message n'était jamais de montrer que briser le trilemme est impossible ; plutôt, c'était de montrer que briser le trilemme est difficile - cela nécessite de penser d'une manière qui sort du cadre que l'argument implique.
Pendant de nombreuses années, il a été courant pour certaines chaînes à haute performance de prétendre résoudre le trilemme sans rien faire d'intelligent au niveau de l'architecture fondamentale, généralement en utilisant des astuces d'ingénierie logicielle pour optimiser le nœud. Cela est toujours trompeur, et exécuter un nœud dans de telles chaînes finit toujours par être beaucoup plus difficile que dans Ethereum.Ce postaborde certaines des nombreuses subtilités qui expliquent pourquoi c'est le cas (et donc, pourquoi l'ingénierie logicielle client L1 seule ne peut pas mettre à l'échelle Ethereum elle-même).
Cependant, la combinaison de l'échantillonnage de la disponibilité des données et des SNARKs résout le trilemme: elle permet à un client de vérifier qu'une certaine quantité de données est disponible, et que certains calculs ont été effectués correctement, tout en ne téléchargeant qu'une petite partie de ces données et en exécutant une quantité beaucoup plus petite de calculs. Les SNARKs sont sans confiance. L'échantillonnage de la disponibilité des données est nuancé Modèle de confiance de N parmi quelques, mais il préserve la propriété fondamentale que les chaînes non évolutives ont, à savoir qu'une attaque de 51% ne peut pas forcer l'acceptation de blocs malveillants par le réseau.
Une autre façon de résoudre le trilemme est les architectures Plasma, qui utilisent des techniques astucieuses pour pousser la responsabilité de surveiller la disponibilité des données à l'utilisateur de manière compatible avec les incitations. De 2017 à 2019, lorsque tout ce que nous avions pour mettre à l'échelle le calcul était des preuves de fraude, Plasma était très limité dans ce qu'il pouvait faire en toute sécurité, mais la popularisation des SNARKs rend les architectures Plasmabeaucoup plus viablepour un éventail plus large de cas d'utilisation qu'auparavant.
Au 13 mars 2024, lorsque le Mise à niveau de DencunDepuis son lancement, la blockchain Ethereum dispose de trois "blobs" d'environ 125 ko par créneau de 12 secondes, soit environ 375 ko par créneau de bande passante de disponibilité de données. En supposant que les données de transaction sont publiées directement onchain, un transfert ERC20 représente environ 180 octets, et donc le TPS maximal des rollups sur Ethereum est :
375000 / 12 / 180 = 173.6 TPS
Si nous ajoutons les calldata d'Ethereum (maximum théorique : 30 millions de gaz par créneau / 16 gaz par octet = 1 875 000 octets par créneau), cela devient 607 TPS. Avec PeerDAS, le plan est d'augmenter l'objectif de décompte de blobs à 8-16, ce qui nous donnerait 463-926 TPS en calldata.
C'est une augmentation importante par rapport à l'Ethereum L1, mais ce n'est pas suffisant. Nous voulons beaucoup plus de scalabilité. Notre objectif à moyen terme est de 16 Mo par slot, ce qui, combiné à des améliorations dans la compression des données rollup, nous donnerait environ 58 000 TPS.
PeerDAS est une mise en œuvre relativement simple de l'échantillonnage en 1D. Chaque blob dans Ethereum est un polynôme de degré 4096 sur un corps premier de 253 bits. Nous diffusons des "parts" du polynôme, où chaque part consiste en 16 évaluations à des coordonnées adjacentes prises dans un ensemble total de 8192 coordonnées. 4096 des 8192 évaluations (avec les paramètres proposés actuels : 64 des 128 échantillons possibles) peuvent récupérer le blob.
PeerDAS fonctionne en demandant à chaque client d'écouter un petit nombre de sous-réseaux, où le i-ème sous-réseau diffuse le i-ème échantillon de n'importe quel blob, et demande également des blobs sur d'autres sous-réseaux dont il a besoin en demandant à ses pairs dans le réseau p2p global (qui écouteraient différents sous-réseaux). Une version plus conservatrice, SubnetDAS, utilise uniquement le mécanisme de sous-réseau, sans la couche supplémentaire de demande aux pairs. Une proposition actuelle consiste à ce que les nœuds participant à la preuve de participation utilisent SubnetDAS, et que les autres nœuds (c'est-à-dire les « clients ») utilisent PeerDAS.
Théoriquement, nous pouvons étendre l'échantillonnage 1D assez loin : si nous augmentons le nombre maximum de blobs à 256 (donc, la cible à 128), alors nous atteindrions notre cible de 16 Mo tandis que l'échantillonnage de disponibilité des données ne coûterait que 16 échantillons à chaque nœud128 blobs512 octets par échantillon par bloc = 1 Mo de bande passante de données par emplacement. C'est à peine dans notre tolérance : c'est faisable, mais cela signifierait que les clients contraints par la bande passante ne peuvent pas échantillonner. Nous pourrions optimiser cela quelque peu en diminuant le nombre de blocs et en augmentant la taille des blocs, mais cela rendrait la reconstruction plus coûteuse.
Et donc finalement nous voulons aller plus loin, et faireÉchantillonnage 2D, qui fonctionne par échantillonnage aléatoire non seulement au sein des blobs, mais aussi entre les blobs. Les propriétés linéaires des engagements KZG sont utilisées pour « étendre » l’ensemble des objets blob d’un bloc avec une liste de nouveaux « objets blob virtuels » qui codent de manière redondante les mêmes informations.
Échantillonnage 2D. Source: a16z crypto
De manière cruciale, calculer l'extension des engagements ne nécessite pas de disposer des blobs, de sorte que le schéma est fondamentalement favorable à la construction de blocs distribués. Le nœud construisant effectivement le bloc aurait seulement besoin d'avoir les engagements de blob KZG, et peut lui-même s'appuyer sur DAS pour vérifier la disponibilité des blobs. 1D DAS est également intrinsèquement favorable à la construction de blocs distribués.
La prochaine étape immédiate consiste à terminer la mise en œuvre et le déploiement de PeerDAS. Ensuite, c'est un travail progressif pour continuer à augmenter le nombre de blobs sur PeerDAS tout en surveillant attentivement le réseau et en améliorant le logiciel pour garantir la sécurité. En même temps, nous voulons davantage de travaux académiques sur la formalisation de PeerDAS et d'autres versions de DAS et leurs interactions avec des problématiques telles que la sécurité de la règle de choix de fork.
Plus loin dans le futur, nous avons besoin de beaucoup plus de travail pour trouver la version idéale de 2D DAS et prouver ses propriétés de sécurité. Nous voulons également migrer finalement loin de KZG vers une alternative résistante à la cryptanalyse quantique et sans installation de confiance. Actuellement, nous ne connaissons pas de candidats qui soient favorables à la construction de blocs distribués. Même la technique coûteuse de la "force brute" consistant à utiliser des STARKs récursifs pour générer des preuves de validité pour la reconstruction des lignes et des colonnes ne suffit pas, car techniquement un STARK est O(log(n) * log(log(n)) hachages de taille (avec STIR), en pratique, un STARK est presque aussi grand qu’un blob entier.
Les voies réalistes que je vois à long terme sont :
Nous pouvons voir ceux-ci le long d'un spectre de compromis :
Notez que ce choix existe même si nous décidons de mettre à l'échelle l'exécution sur L1 directement. Cela est dû au fait que si L1 doit traiter de nombreux TPS, les blocs L1 deviendront très volumineux et les clients voudront un moyen efficace de vérifier qu'ils sont corrects, donc nous devrions utiliser la même technologie qui alimente les rollups (ZK-EVM et DAS) au niveau de L1.
Le besoin de DAS 2D est quelque peu diminué, ou du moins retardé, si la compression des données (voir ci-dessous) est mise en œuvre, et il est encore plus réduit si Plasma est largement utilisé. DAS pose également un défi aux protocoles et mécanismes de construction de blocs distribués: bien que DAS soit théoriquement favorable à la reconstruction distribuée, cela doit être combiné en pratique avecliste d'inclusionpropositions et leurs mécanismes de choix de fourchette environnants.
Chaque transaction dans un rollup prend une quantité significative d'espace de données onchain : un transfert ERC20 prend environ 180 octets. Même avec un échantillonnage idéal de disponibilité des données, cela limite la scalabilité des protocoles de couche 2. Avec 16 Mo par créneau, nous obtenons :
16000000 / 12 / 180 = 7407 TPS
Et si, en plus de s'attaquer au numérateur, nous pouvions également nous attaquer au dénominateur et faire en sorte que chaque transaction dans un rollup prenne moins d'octets onchain?
La meilleure explication à mon avis est ce diagrammedepuis deux ans :
Les gains les plus simples ne sont que la compression de zéro-octet : remplaçant chaque longue séquence de zéros par deux octets représentant combien de zéros il y a. Pour aller plus loin, nous profitons des propriétés spécifiques des transactions :
La principale chose à faire est en fait de mettre en œuvre les schémas ci-dessus. Les principaux compromis sont :
L'adoption de ERC-4337, et éventuellement la consécration de certaines de ses parties dans les L2 EVM, peut grandement accélérer le déploiement des techniques d'agrégation. La consécration de certaines parties de ERC-4337 sur L1 peut accélérer son déploiement sur les L2.
Même avec des blobs de 16 Mo et une compression de données, 58 000 TPS n'est pas nécessairement suffisant pour prendre pleinement en charge les paiements des consommateurs, les réseaux sociaux décentralisés ou d'autres secteurs à haut débit, et cela devient particulièrement vrai si nous commençons à prendre en compte la confidentialité, ce qui pourrait réduire la scalabilité de 3 à 8 fois. Pour les applications à fort volume et faible valeur, une option aujourd'hui est unevalidium, qui conserve les données hors chaîne et présente un modèle de sécurité intéressant où l'opérateur ne peut pas voler les fonds des utilisateurs, mais peut disparaître et geler temporairement ou définitivement tous les fonds des utilisateurs. Mais nous pouvons faire mieux.
Plasma est une solution d'évolutivité qui implique qu'un opérateur publie des blocs hors chaîne et place les racines de Merkle de ces blocs sur la chaîne (par opposition aux rollups, où le bloc complet est placé sur la chaîne). Pour chaque bloc, l'opérateur envoie à chaque utilisateur une branche de Merkle prouvant ce qui s'est passé, ou ne s'est pas passé, pour les actifs de cet utilisateur. Les utilisateurs peuvent retirer leurs actifs en fournissant une branche de Merkle. Il est important de noter que cette branche n'a pas besoin d'être enracinée dans l'état le plus récent - pour cette raison, même si la disponibilité des données échoue, l'utilisateur peut toujours récupérer ses actifs en retirant le dernier état dont il dispose. Si un utilisateur soumet une branche invalide (par exemple, en sortant un actif qu'il a déjà envoyé à quelqu'un d'autre, ou si l'opérateur crée lui-même un actif à partir de rien), un mécanisme de défi sur chaîne peut statuer sur à qui appartient légitimement l'actif.
Un schéma d'une chaîne Plasma Cash. Les transactions dépensant la pièce i sont placées à la ième position dans l'arbre. Dans cet exemple, en supposant que tous les arbres précédents sont valides, nous savons qu'Eve possède actuellement la pièce 1, David possède la pièce 4 et George possède la pièce 6.
Les premières versions de Plasma ne pouvaient gérer que le cas d'utilisation des paiements et ne pouvaient pas généraliser efficacement davantage. Si nous exigeons que chaque racine soit vérifiée avec un SNARK, cependant, Plasma devient beaucoup plus puissant. Chaque jeu de défi peut être considérablement simplifié, car nous éliminons la plupart des chemins possibles pour l'opérateur tricher. De nouveaux chemins s'ouvrent également pour permettre aux techniques de Plasma d'être étendues à une classe d'actifs beaucoup plus générale. Enfin, dans le cas où l'opérateur ne triche pas, les utilisateurs peuvent retirer leurs fonds instantanément, sans avoir besoin d'attendre une période de défi d'une semaine.
Une façon (pas la seule façon) de créer une chaîne de plasma EVM : utiliser un ZK-SNARK pour construire un arbre UTXO parallèle qui reflète les changements de solde effectués par l'EVM, et définit une correspondance unique de ce qui est “la même pièce” à différents moments de l'histoire. Une construction Plasma peut alors être construite dessus.
L’une des idées clés est que le système Plasma n’a pas besoin d’être parfait. Même si vous ne pouvez protéger qu’un sous-ensemble d’actifs (par exemple, même seulement des pièces qui n’ont pas bougé au cours de la semaine écoulée), vous avez déjà grandement amélioré le statu quo de l’EVM ultra-évolutif, qui est un validium.
Une autre classe de constructions est celle des plasma/rollups hybrides, tels que Intmax. Ces constructions mettent une très petite quantité de données par utilisateur sur la chaîne (par exemple, 5 octets), et ce faisant, obtiennent des propriétés qui se situent quelque part entre le plasma et les cumuls : dans le cas d’Intmax, vous obtenez un très haut niveau d’évolutivité et de confidentialité, bien que même dans le monde de 16 Mo, la capacité soit théoriquement plafonnée à environ 16 000 000 / 12 / 5 = 266 667 TPS.
La tâche principale restante est de mettre en production les systèmes Plasma. Comme mentionné ci-dessus, “plasma vs validium” n'est pas binaire : tout validium peut voir ses propriétés de sécurité améliorées au moins un peu en ajoutant des fonctionnalités Plasma dans le mécanisme de sortie. La partie recherche consiste à obtenir des propriétés optimales (en termes d'exigences de confiance, de coût en gaz L1 dans le pire des cas et de vulnérabilité aux attaques par déni de service) pour un EVM, ainsi que des constructions spécifiques d'application alternatives. De plus, la plus grande complexité conceptuelle du Plasma par rapport aux rollups doit être abordée directement, à la fois par la recherche et par la construction de cadres généralisés meilleurs.
Le principal compromis dans l'utilisation des conceptions Plasma est qu'elles dépendent davantage des opérateurs et sont plus difficiles à réaliser.basé« Bien que les conceptions hybrides plasma/rollup puissent souvent éviter cette faiblesse.
Plus les solutions Plasma sont efficaces, moins il y a de pression sur le L1 pour avoir une fonctionnalité de disponibilité des données haute performance. Le fait de déplacer l'activité vers le L2 réduit également la pression MEV sur le L1.
Aujourd'hui, la plupart des rollups ne sont pas encore réellement sans confiance; il existe un conseil de sécurité qui a la capacité de passer outre le comportement du (optimiste ou de la validité)système de preuve. Dans certains cas, le système de preuve n'est même pas encore en direct, ou s'il l'est, il n'a qu'une fonctionnalité "conseil". Les plus avancés sont (i) quelques rollups spécifiques à une application, tels que Fuel, qui sont sans confiance, et (ii) au moment de la rédaction du présent document, Optimism et Arbitrum, deux rollups complets de l'EVM qui ont atteint une étape partiellement sans confiance connue sous le nom de "stage 1". La raison pour laquelle les rollups n'ont pas progressé davantage est la préoccupation concernant les bugs dans le code. Nous avons besoin de rollups sans confiance, et donc nous devons affronter ce problème de front.
Tout d’abord, récapitulons le système de « scène », introduit à l’origine dans cette publication. Il y a des exigences plus détaillées, mais en résumé :
L'objectif est d'atteindre l'étape 2. Le principal défi pour atteindre l'étape 2 est d'avoir suffisamment confiance que le système de preuve est effectivement assez fiable. Il existe deux façons principales de le faire :
Diagramme stylisé d'un multi-vérificateur, combinant un système de preuve optimiste, un système de preuve de validité et un conseil de sécurité.
Pour la vérification formelle, beaucoup. Nous devons créer une version formellement vérifiée d'un prouveur SNARK entier d'un EVM. Il s'agit d'un projet incroyablement complexe, bien que ce soit celui qui nous avons déjà commencé. Il y a un tour qui simplifie considérablement la tâche : nous pouvons faire un prouveur SNARK formellement vérifié d'une VM minimale, par exemple. RISC-VouLe Caire, et ensuite écrire une implémentation de l'EVM dans ce VM minimal (et prouver formellement son équivalence à une autre spécification de l'EVM).
Pour les multi-éprouveurs, il reste deux éléments principaux. Tout d'abord, nous devons avoir suffisamment confiance dans au moins deux systèmes de preuve différents, à la fois qu'ils sont raisonnablement sûrs individuellement et que s'ils échouent, ils échoueraient pour des raisons différentes et non liées (et donc ils ne tomberaient pas en panne en même temps). Deuxièmement, nous devons avoir un très haut niveau d'assurance dans la logique sous-jacente qui fusionne les systèmes de preuve. Il s'agit d'un morceau de code beaucoup plus petit. Il existe des moyens de le rendre extrêmement petit - il suffit de stocker des fonds dans un Contrat multisig sécurisédont les signataires sont des contrats représentant des systèmes de preuve individuels - mais cela se fait au détriment de coûts de gaz élevés sur la chaîne. Un certain équilibre entre efficacité et sécurité devra être trouvé.
Déplacer l'activité vers L2 réduit la pression de l'EMV sur L1.
Un des principaux défis de l'écosystème L2 aujourd'hui est qu'il est difficile pour les utilisateurs de naviguer. De plus, les moyens les plus simples de le faire réintroduisent souvent des hypothèses de confiance : ponts centralisés, clients RPC, et ainsi de suite. Si nous sommes sérieux au sujet de l'idée que les L2 font partie d'Ethereum, nous devons faire en sorte que l'utilisation de l'écosystème L2 soit semblable à l'utilisation d'un écosystème Ethereum unifié.
Un exemple de mauvaise UX pathologique (et même dangereuse : j'ai personnellement perdu 100 $ à cause d'une erreur de sélection de chaîne ici) cross-L2 - même si ce n'est pas la faute de Polymarket, l'interopérabilité cross-L2 devrait être la responsabilité des portefeuilles et de la communauté des normes Ethereum (ERC). Dans un écosystème Ethereum bien fonctionnel, envoyer des pièces de L1 à L2, ou d'un L2 à un autre, devrait se sentir exactement comme envoyer des pièces dans le même L1.
Il existe de nombreuses catégories d'améliorations de l'interopérabilité croisée L2. En général, la manière de les élaborer est de remarquer qu'en théorie, Un Ethereum centré sur le rollup est la même chose qu'un sharding d'exécution L1, et demandez ensuite en quoi l'actuel L2-verse d'Ethereum ne répond pas à cet idéal en pratique. Voici quelques-uns :
Comment un client léger peut mettre à jour sa vue de la chaîne d'en-têtes Ethereum. Une fois que vous avez la chaîne d'en-têtes, vous pouvez utiliser des preuves de Merkle pour valider n'importe quel objet d'état. Et une fois que vous avez les bons objets d'état L1, vous pouvez utiliser des preuves de Merkle (et éventuellement des signatures, si vous voulez vérifier les préconfirmations) pour valider n'importe quel objet d'état sur L2. Helios fait déjà le premier. Étendre au second est un défi de normalisation.
Un diagramme stylisé de fonctionnement des portefeuilles de keystore.
Bon nombre des exemples ci-dessus font face à des dilemmes standards quant à la standardisation et aux couches à standardiser. Si vous standardisez trop tôt, vous risquez de consolider une solution inférieure. Si vous standardisez trop tard, vous risquez de créer une fragmentation inutile. Dans certains cas, il existe à la fois une solution à court terme qui a des propriétés plus faibles mais qui est plus facile à mettre en œuvre, et une solution à long terme qui est "finalement correcte" mais qui prendra quelques années pour y parvenir.
Une façon dont cette section est unique, c'est que ces tâches ne sont pas seulement des problèmes techniques : ce sont aussi (peut-être même principalement !) des problèmes sociaux. Elles nécessitent que les L2 et les portefeuilles et L1 coopèrent. Notre capacité à résoudre ce problème avec succès est un test de notre capacité à rester unis en tant que communauté.
La plupart de ces propositions sont des constructions de "couches supérieures", et n'affectent donc pas beaucoup les considérations de L1. Une exception est le séquençage partagé, qui a des impacts importants sur MEV.
Si les L2 deviennent très évolutifs et réussis mais que le L1 reste capable de traiter seulement un très faible volume de transactions, il existe de nombreux risques pour Ethereum qui pourraient survenir:
Pour ces raisons, il est précieux de continuer à mettre à l'échelle L1 lui-même, et de s'assurer qu'il peut continuer à accueillir un nombre croissant d'utilisations.
Le moyen le plus simple d'évoluer est simplement d'augmenter la limite de gaz. Cependant, cela risque de centraliser le L1 et de affaiblir ainsi l'autre propriété importante qui rend le L1 Ethereum si puissant : sa crédibilité en tant que couche de base robuste. Un débat est en cours sur le degré d'augmentation de la limite de gaz simple qui est durable, et cela change également en fonction des autres technologies mises en œuvre pour faciliter la vérification de blocs plus importants (par exemple, l'expiration de l'historique, la sans-état, les preuves de validité L1 EVM). Une autre chose importante à améliorer est tout simplement l'efficacité du logiciel client Ethereum, qui est bien plus optimisé aujourd'hui qu'il ne l'était il y a cinq ans. Une stratégie efficace d'augmentation de la limite de gaz L1 impliquerait d'accélérer ces technologies de vérification.
Une autre stratégie de mise à l'échelle consiste à identifier des fonctionnalités spécifiques et des types de calcul qui peuvent être rendus moins coûteux sans nuire à la décentralisation du réseau ou à ses propriétés de sécurité. Des exemples incluent :
Ces améliorations seront discutées plus en détail dans un prochain article sur le Splurge.
Enfin, une troisième stratégie consiste en des rollups natifs (ou "rollups consacrés") : essentiellement, créer de nombreuses copies de l'EVM qui s'exécutent en parallèle, ce qui conduit à un modèle équivalent à ce que les rollups peuvent fournir, mais beaucoup plus intégré nativement dans le protocole.
Il existe trois stratégies pour l'évolutivité L1, qui peuvent être poursuivies individuellement ou en parallèle :
Il vaut la peine de comprendre que ce sont des techniques différentes qui ont des compromis différents. Par exemple, les rollups natifs ont de nombreuses faiblesses en termes de composabilité similaires à celles des rollups réguliers : vous ne pouvez pas envoyer une seule transaction qui effectue de manière synchrone des opérations sur beaucoup d'entre eux, comme vous le pouvez avec des contrats sur le même L1 (ou L2). Augmenter la limite de gaz diminue d'autres avantages qui peuvent être obtenus en rendant le L1 plus facile à vérifier, comme augmenter la partie des utilisateurs qui exécutent des nœuds de vérification et augmenter les stakers solo. Rendre des opérations spécifiques dans l'EVM moins chères, selon la manière dont c'est fait, peut augmenter la complexité totale de l'EVM.
Une grande question à laquelle tout plan de mise à l'échelle L1 doit répondre est la suivante : quelle est la vision ultime de ce qui doit figurer sur L1 et de ce qui doit figurer sur L2 ? De toute évidence, il est absurde que tout aille sur L1 : les cas d'utilisation potentiels se chiffrent en centaines de milliers de transactions par seconde, ce qui rendrait L1 complètement invérifiable (à moins que nous empruntions la voie native du rollup). Mais nous avons besoin d'un principe directeur, afin de nous assurer de ne pas créer une situation où nous augmentons la limite de gaz de 10 fois, endommageons considérablement la décentralisation de l'Ethereum L1, et constatons que nous n'avons atteint qu'un monde où au lieu de 99 % de l'activité se trouvant sur L2, 90 % de l'activité se situe sur L2, et donc le résultat semble presque identique, à l'exception d'une perte irréversible de ce qui rend l'Ethereum L1 spécial.
Une vue proposée d'une "division du travail" entre L1 et L2s, source.
Amener plus d'utilisateurs sur L1 implique non seulement d'améliorer l'échelle, mais aussi d'autres aspects de L1. Cela signifie que plus de MEV restera sur L1 (au lieu de devenir un problème uniquement pour les L2), et il sera donc encore plus urgent de le gérer explicitement. Cela augmente considérablement la valeur d'avoir des temps de slot rapides sur L1. Et cela dépend également fortement de la vérification de L1 ("la Verge") se déroulant bien.
Partager
Contenu
Au début, Ethereum avait deux stratégies de mise à l'échelle dans sa feuille de route. Une (par exemple, voirce premier papierà partir de 2015) était le "sharding": au lieu de vérifier et stocker l'ensemble des transactions de la chaîne, chaque nœud aurait seulement besoin de vérifier et stocker une petite fraction des transactions. C'est ainsi que fonctionne tout autre réseau pair à pair (par exemple BitTorrent), donc nous pourrions sûrement faire fonctionner les blockchains de la même manière. Un autre concept était celui des protocoles de couche 2: des réseaux qui se situeraient au-dessus d'Ethereum de manière à leur permettre de bénéficier pleinement de sa sécurité, tout en conservant la plupart des données et des calculs en dehors de la chaîne principale. Les "protocoles de couche 2" signifiaientcanaux d'étaten 2015, Plasmaen 2017, et ensuiterollupsEn 2019. Les Rollups sont plus puissants que les canaux d'état ou Plasma, mais ils nécessitent une grande quantité de bande passante de données on-chain. Heureusement, d'ici 2019, la recherche sur le sharding avait résolule problème de vérification de la « disponibilité des données » à grande échelle. En conséquence, les deux chemins ont convergé, et nous avons obtenu le Feuille de route centrée sur le cumulqui continue d'être la stratégie de mise à l'échelle d'Ethereum aujourd'hui.
La montée, édition de la feuille de route 2023.
La feuille de route centrée sur le rollup propose une simple division du travail : l'Ethereum L1 se concentre sur le fait d'être une couche de base robuste et décentralisée, tandis que les L2 prennent en charge la tâche d'aider l'écosystème à se développer. C'est un schéma qui se répète partout dans la société : le système judiciaire (L1) n'est pas là pour être ultra-rapide et efficace, il est là pour protéger les contrats et les droits de propriété, et c'est aux entrepreneurs (L2) de construire par-dessus.robustebasecoucheet emmener l'humanité vers Mars (de manière métaphorique et littérale).
Cette année, la feuille de route centrée sur le rollup a connu d'importants succès : la bande passante des données Ethereum L1 a considérablement augmenté avecblocs EIP-4844, et plusieurs rollups EVM sont maintenant à l'étape 1. Un très implémentation hétérogène et pluraliste du sharding, où chaque L2 agit comme une « shard » avec ses propres règles et sa logique interne, est maintenant une réalité. Mais comme nous l'avons vu, emprunter cette voie présente des défis uniques. Ainsi, notre tâche est maintenant de mener à bien la feuille de route centrée sur le rollup et de résoudre ces problèmes, tout en préservant la robustesse et la décentralisation qui rendent l'Ethereum L1 spécial.
Le trilemme de la scalabilité était une idée introduit en 2017, qui a fait valoir qu’il existe une tension entre trois propriétés d’une blockchain : la décentralisation (plus précisément : faible coût d’exploitation d’un nœud), l’évolutivité (plus précisément : un nombre élevé de transactions traitées) et la sécurité (plus précisément : un attaquant ayant besoin de corrompre une grande partie des nœuds de l’ensemble du réseau pour faire échouer ne serait-ce qu’une seule transaction).
Notamment, le trilemme n'est pas un théorème, et le message introduisant le trilemme n'est pas venu avec une preuve mathématique. Il a donné un argument mathématique heuristique : si un nœud favorable à la décentralisation (par exemple un ordinateur portable grand public) peut vérifier N transactions par seconde, et que vous avez une chaîne qui traite k*N transactions par seconde, alors soit (i) chaque transaction n'est vue que par 1/k des nœuds, ce qui implique qu'un attaquant n'a besoin de corrompre que quelques nœuds pour faire passer une mauvaise transaction, soit (ii) vos nœuds vont être costauds et votre chaîne pas décentralisée. Le but du message n'était jamais de montrer que briser le trilemme est impossible ; plutôt, c'était de montrer que briser le trilemme est difficile - cela nécessite de penser d'une manière qui sort du cadre que l'argument implique.
Pendant de nombreuses années, il a été courant pour certaines chaînes à haute performance de prétendre résoudre le trilemme sans rien faire d'intelligent au niveau de l'architecture fondamentale, généralement en utilisant des astuces d'ingénierie logicielle pour optimiser le nœud. Cela est toujours trompeur, et exécuter un nœud dans de telles chaînes finit toujours par être beaucoup plus difficile que dans Ethereum.Ce postaborde certaines des nombreuses subtilités qui expliquent pourquoi c'est le cas (et donc, pourquoi l'ingénierie logicielle client L1 seule ne peut pas mettre à l'échelle Ethereum elle-même).
Cependant, la combinaison de l'échantillonnage de la disponibilité des données et des SNARKs résout le trilemme: elle permet à un client de vérifier qu'une certaine quantité de données est disponible, et que certains calculs ont été effectués correctement, tout en ne téléchargeant qu'une petite partie de ces données et en exécutant une quantité beaucoup plus petite de calculs. Les SNARKs sont sans confiance. L'échantillonnage de la disponibilité des données est nuancé Modèle de confiance de N parmi quelques, mais il préserve la propriété fondamentale que les chaînes non évolutives ont, à savoir qu'une attaque de 51% ne peut pas forcer l'acceptation de blocs malveillants par le réseau.
Une autre façon de résoudre le trilemme est les architectures Plasma, qui utilisent des techniques astucieuses pour pousser la responsabilité de surveiller la disponibilité des données à l'utilisateur de manière compatible avec les incitations. De 2017 à 2019, lorsque tout ce que nous avions pour mettre à l'échelle le calcul était des preuves de fraude, Plasma était très limité dans ce qu'il pouvait faire en toute sécurité, mais la popularisation des SNARKs rend les architectures Plasmabeaucoup plus viablepour un éventail plus large de cas d'utilisation qu'auparavant.
Au 13 mars 2024, lorsque le Mise à niveau de DencunDepuis son lancement, la blockchain Ethereum dispose de trois "blobs" d'environ 125 ko par créneau de 12 secondes, soit environ 375 ko par créneau de bande passante de disponibilité de données. En supposant que les données de transaction sont publiées directement onchain, un transfert ERC20 représente environ 180 octets, et donc le TPS maximal des rollups sur Ethereum est :
375000 / 12 / 180 = 173.6 TPS
Si nous ajoutons les calldata d'Ethereum (maximum théorique : 30 millions de gaz par créneau / 16 gaz par octet = 1 875 000 octets par créneau), cela devient 607 TPS. Avec PeerDAS, le plan est d'augmenter l'objectif de décompte de blobs à 8-16, ce qui nous donnerait 463-926 TPS en calldata.
C'est une augmentation importante par rapport à l'Ethereum L1, mais ce n'est pas suffisant. Nous voulons beaucoup plus de scalabilité. Notre objectif à moyen terme est de 16 Mo par slot, ce qui, combiné à des améliorations dans la compression des données rollup, nous donnerait environ 58 000 TPS.
PeerDAS est une mise en œuvre relativement simple de l'échantillonnage en 1D. Chaque blob dans Ethereum est un polynôme de degré 4096 sur un corps premier de 253 bits. Nous diffusons des "parts" du polynôme, où chaque part consiste en 16 évaluations à des coordonnées adjacentes prises dans un ensemble total de 8192 coordonnées. 4096 des 8192 évaluations (avec les paramètres proposés actuels : 64 des 128 échantillons possibles) peuvent récupérer le blob.
PeerDAS fonctionne en demandant à chaque client d'écouter un petit nombre de sous-réseaux, où le i-ème sous-réseau diffuse le i-ème échantillon de n'importe quel blob, et demande également des blobs sur d'autres sous-réseaux dont il a besoin en demandant à ses pairs dans le réseau p2p global (qui écouteraient différents sous-réseaux). Une version plus conservatrice, SubnetDAS, utilise uniquement le mécanisme de sous-réseau, sans la couche supplémentaire de demande aux pairs. Une proposition actuelle consiste à ce que les nœuds participant à la preuve de participation utilisent SubnetDAS, et que les autres nœuds (c'est-à-dire les « clients ») utilisent PeerDAS.
Théoriquement, nous pouvons étendre l'échantillonnage 1D assez loin : si nous augmentons le nombre maximum de blobs à 256 (donc, la cible à 128), alors nous atteindrions notre cible de 16 Mo tandis que l'échantillonnage de disponibilité des données ne coûterait que 16 échantillons à chaque nœud128 blobs512 octets par échantillon par bloc = 1 Mo de bande passante de données par emplacement. C'est à peine dans notre tolérance : c'est faisable, mais cela signifierait que les clients contraints par la bande passante ne peuvent pas échantillonner. Nous pourrions optimiser cela quelque peu en diminuant le nombre de blocs et en augmentant la taille des blocs, mais cela rendrait la reconstruction plus coûteuse.
Et donc finalement nous voulons aller plus loin, et faireÉchantillonnage 2D, qui fonctionne par échantillonnage aléatoire non seulement au sein des blobs, mais aussi entre les blobs. Les propriétés linéaires des engagements KZG sont utilisées pour « étendre » l’ensemble des objets blob d’un bloc avec une liste de nouveaux « objets blob virtuels » qui codent de manière redondante les mêmes informations.
Échantillonnage 2D. Source: a16z crypto
De manière cruciale, calculer l'extension des engagements ne nécessite pas de disposer des blobs, de sorte que le schéma est fondamentalement favorable à la construction de blocs distribués. Le nœud construisant effectivement le bloc aurait seulement besoin d'avoir les engagements de blob KZG, et peut lui-même s'appuyer sur DAS pour vérifier la disponibilité des blobs. 1D DAS est également intrinsèquement favorable à la construction de blocs distribués.
La prochaine étape immédiate consiste à terminer la mise en œuvre et le déploiement de PeerDAS. Ensuite, c'est un travail progressif pour continuer à augmenter le nombre de blobs sur PeerDAS tout en surveillant attentivement le réseau et en améliorant le logiciel pour garantir la sécurité. En même temps, nous voulons davantage de travaux académiques sur la formalisation de PeerDAS et d'autres versions de DAS et leurs interactions avec des problématiques telles que la sécurité de la règle de choix de fork.
Plus loin dans le futur, nous avons besoin de beaucoup plus de travail pour trouver la version idéale de 2D DAS et prouver ses propriétés de sécurité. Nous voulons également migrer finalement loin de KZG vers une alternative résistante à la cryptanalyse quantique et sans installation de confiance. Actuellement, nous ne connaissons pas de candidats qui soient favorables à la construction de blocs distribués. Même la technique coûteuse de la "force brute" consistant à utiliser des STARKs récursifs pour générer des preuves de validité pour la reconstruction des lignes et des colonnes ne suffit pas, car techniquement un STARK est O(log(n) * log(log(n)) hachages de taille (avec STIR), en pratique, un STARK est presque aussi grand qu’un blob entier.
Les voies réalistes que je vois à long terme sont :
Nous pouvons voir ceux-ci le long d'un spectre de compromis :
Notez que ce choix existe même si nous décidons de mettre à l'échelle l'exécution sur L1 directement. Cela est dû au fait que si L1 doit traiter de nombreux TPS, les blocs L1 deviendront très volumineux et les clients voudront un moyen efficace de vérifier qu'ils sont corrects, donc nous devrions utiliser la même technologie qui alimente les rollups (ZK-EVM et DAS) au niveau de L1.
Le besoin de DAS 2D est quelque peu diminué, ou du moins retardé, si la compression des données (voir ci-dessous) est mise en œuvre, et il est encore plus réduit si Plasma est largement utilisé. DAS pose également un défi aux protocoles et mécanismes de construction de blocs distribués: bien que DAS soit théoriquement favorable à la reconstruction distribuée, cela doit être combiné en pratique avecliste d'inclusionpropositions et leurs mécanismes de choix de fourchette environnants.
Chaque transaction dans un rollup prend une quantité significative d'espace de données onchain : un transfert ERC20 prend environ 180 octets. Même avec un échantillonnage idéal de disponibilité des données, cela limite la scalabilité des protocoles de couche 2. Avec 16 Mo par créneau, nous obtenons :
16000000 / 12 / 180 = 7407 TPS
Et si, en plus de s'attaquer au numérateur, nous pouvions également nous attaquer au dénominateur et faire en sorte que chaque transaction dans un rollup prenne moins d'octets onchain?
La meilleure explication à mon avis est ce diagrammedepuis deux ans :
Les gains les plus simples ne sont que la compression de zéro-octet : remplaçant chaque longue séquence de zéros par deux octets représentant combien de zéros il y a. Pour aller plus loin, nous profitons des propriétés spécifiques des transactions :
La principale chose à faire est en fait de mettre en œuvre les schémas ci-dessus. Les principaux compromis sont :
L'adoption de ERC-4337, et éventuellement la consécration de certaines de ses parties dans les L2 EVM, peut grandement accélérer le déploiement des techniques d'agrégation. La consécration de certaines parties de ERC-4337 sur L1 peut accélérer son déploiement sur les L2.
Même avec des blobs de 16 Mo et une compression de données, 58 000 TPS n'est pas nécessairement suffisant pour prendre pleinement en charge les paiements des consommateurs, les réseaux sociaux décentralisés ou d'autres secteurs à haut débit, et cela devient particulièrement vrai si nous commençons à prendre en compte la confidentialité, ce qui pourrait réduire la scalabilité de 3 à 8 fois. Pour les applications à fort volume et faible valeur, une option aujourd'hui est unevalidium, qui conserve les données hors chaîne et présente un modèle de sécurité intéressant où l'opérateur ne peut pas voler les fonds des utilisateurs, mais peut disparaître et geler temporairement ou définitivement tous les fonds des utilisateurs. Mais nous pouvons faire mieux.
Plasma est une solution d'évolutivité qui implique qu'un opérateur publie des blocs hors chaîne et place les racines de Merkle de ces blocs sur la chaîne (par opposition aux rollups, où le bloc complet est placé sur la chaîne). Pour chaque bloc, l'opérateur envoie à chaque utilisateur une branche de Merkle prouvant ce qui s'est passé, ou ne s'est pas passé, pour les actifs de cet utilisateur. Les utilisateurs peuvent retirer leurs actifs en fournissant une branche de Merkle. Il est important de noter que cette branche n'a pas besoin d'être enracinée dans l'état le plus récent - pour cette raison, même si la disponibilité des données échoue, l'utilisateur peut toujours récupérer ses actifs en retirant le dernier état dont il dispose. Si un utilisateur soumet une branche invalide (par exemple, en sortant un actif qu'il a déjà envoyé à quelqu'un d'autre, ou si l'opérateur crée lui-même un actif à partir de rien), un mécanisme de défi sur chaîne peut statuer sur à qui appartient légitimement l'actif.
Un schéma d'une chaîne Plasma Cash. Les transactions dépensant la pièce i sont placées à la ième position dans l'arbre. Dans cet exemple, en supposant que tous les arbres précédents sont valides, nous savons qu'Eve possède actuellement la pièce 1, David possède la pièce 4 et George possède la pièce 6.
Les premières versions de Plasma ne pouvaient gérer que le cas d'utilisation des paiements et ne pouvaient pas généraliser efficacement davantage. Si nous exigeons que chaque racine soit vérifiée avec un SNARK, cependant, Plasma devient beaucoup plus puissant. Chaque jeu de défi peut être considérablement simplifié, car nous éliminons la plupart des chemins possibles pour l'opérateur tricher. De nouveaux chemins s'ouvrent également pour permettre aux techniques de Plasma d'être étendues à une classe d'actifs beaucoup plus générale. Enfin, dans le cas où l'opérateur ne triche pas, les utilisateurs peuvent retirer leurs fonds instantanément, sans avoir besoin d'attendre une période de défi d'une semaine.
Une façon (pas la seule façon) de créer une chaîne de plasma EVM : utiliser un ZK-SNARK pour construire un arbre UTXO parallèle qui reflète les changements de solde effectués par l'EVM, et définit une correspondance unique de ce qui est “la même pièce” à différents moments de l'histoire. Une construction Plasma peut alors être construite dessus.
L’une des idées clés est que le système Plasma n’a pas besoin d’être parfait. Même si vous ne pouvez protéger qu’un sous-ensemble d’actifs (par exemple, même seulement des pièces qui n’ont pas bougé au cours de la semaine écoulée), vous avez déjà grandement amélioré le statu quo de l’EVM ultra-évolutif, qui est un validium.
Une autre classe de constructions est celle des plasma/rollups hybrides, tels que Intmax. Ces constructions mettent une très petite quantité de données par utilisateur sur la chaîne (par exemple, 5 octets), et ce faisant, obtiennent des propriétés qui se situent quelque part entre le plasma et les cumuls : dans le cas d’Intmax, vous obtenez un très haut niveau d’évolutivité et de confidentialité, bien que même dans le monde de 16 Mo, la capacité soit théoriquement plafonnée à environ 16 000 000 / 12 / 5 = 266 667 TPS.
La tâche principale restante est de mettre en production les systèmes Plasma. Comme mentionné ci-dessus, “plasma vs validium” n'est pas binaire : tout validium peut voir ses propriétés de sécurité améliorées au moins un peu en ajoutant des fonctionnalités Plasma dans le mécanisme de sortie. La partie recherche consiste à obtenir des propriétés optimales (en termes d'exigences de confiance, de coût en gaz L1 dans le pire des cas et de vulnérabilité aux attaques par déni de service) pour un EVM, ainsi que des constructions spécifiques d'application alternatives. De plus, la plus grande complexité conceptuelle du Plasma par rapport aux rollups doit être abordée directement, à la fois par la recherche et par la construction de cadres généralisés meilleurs.
Le principal compromis dans l'utilisation des conceptions Plasma est qu'elles dépendent davantage des opérateurs et sont plus difficiles à réaliser.basé« Bien que les conceptions hybrides plasma/rollup puissent souvent éviter cette faiblesse.
Plus les solutions Plasma sont efficaces, moins il y a de pression sur le L1 pour avoir une fonctionnalité de disponibilité des données haute performance. Le fait de déplacer l'activité vers le L2 réduit également la pression MEV sur le L1.
Aujourd'hui, la plupart des rollups ne sont pas encore réellement sans confiance; il existe un conseil de sécurité qui a la capacité de passer outre le comportement du (optimiste ou de la validité)système de preuve. Dans certains cas, le système de preuve n'est même pas encore en direct, ou s'il l'est, il n'a qu'une fonctionnalité "conseil". Les plus avancés sont (i) quelques rollups spécifiques à une application, tels que Fuel, qui sont sans confiance, et (ii) au moment de la rédaction du présent document, Optimism et Arbitrum, deux rollups complets de l'EVM qui ont atteint une étape partiellement sans confiance connue sous le nom de "stage 1". La raison pour laquelle les rollups n'ont pas progressé davantage est la préoccupation concernant les bugs dans le code. Nous avons besoin de rollups sans confiance, et donc nous devons affronter ce problème de front.
Tout d’abord, récapitulons le système de « scène », introduit à l’origine dans cette publication. Il y a des exigences plus détaillées, mais en résumé :
L'objectif est d'atteindre l'étape 2. Le principal défi pour atteindre l'étape 2 est d'avoir suffisamment confiance que le système de preuve est effectivement assez fiable. Il existe deux façons principales de le faire :
Diagramme stylisé d'un multi-vérificateur, combinant un système de preuve optimiste, un système de preuve de validité et un conseil de sécurité.
Pour la vérification formelle, beaucoup. Nous devons créer une version formellement vérifiée d'un prouveur SNARK entier d'un EVM. Il s'agit d'un projet incroyablement complexe, bien que ce soit celui qui nous avons déjà commencé. Il y a un tour qui simplifie considérablement la tâche : nous pouvons faire un prouveur SNARK formellement vérifié d'une VM minimale, par exemple. RISC-VouLe Caire, et ensuite écrire une implémentation de l'EVM dans ce VM minimal (et prouver formellement son équivalence à une autre spécification de l'EVM).
Pour les multi-éprouveurs, il reste deux éléments principaux. Tout d'abord, nous devons avoir suffisamment confiance dans au moins deux systèmes de preuve différents, à la fois qu'ils sont raisonnablement sûrs individuellement et que s'ils échouent, ils échoueraient pour des raisons différentes et non liées (et donc ils ne tomberaient pas en panne en même temps). Deuxièmement, nous devons avoir un très haut niveau d'assurance dans la logique sous-jacente qui fusionne les systèmes de preuve. Il s'agit d'un morceau de code beaucoup plus petit. Il existe des moyens de le rendre extrêmement petit - il suffit de stocker des fonds dans un Contrat multisig sécurisédont les signataires sont des contrats représentant des systèmes de preuve individuels - mais cela se fait au détriment de coûts de gaz élevés sur la chaîne. Un certain équilibre entre efficacité et sécurité devra être trouvé.
Déplacer l'activité vers L2 réduit la pression de l'EMV sur L1.
Un des principaux défis de l'écosystème L2 aujourd'hui est qu'il est difficile pour les utilisateurs de naviguer. De plus, les moyens les plus simples de le faire réintroduisent souvent des hypothèses de confiance : ponts centralisés, clients RPC, et ainsi de suite. Si nous sommes sérieux au sujet de l'idée que les L2 font partie d'Ethereum, nous devons faire en sorte que l'utilisation de l'écosystème L2 soit semblable à l'utilisation d'un écosystème Ethereum unifié.
Un exemple de mauvaise UX pathologique (et même dangereuse : j'ai personnellement perdu 100 $ à cause d'une erreur de sélection de chaîne ici) cross-L2 - même si ce n'est pas la faute de Polymarket, l'interopérabilité cross-L2 devrait être la responsabilité des portefeuilles et de la communauté des normes Ethereum (ERC). Dans un écosystème Ethereum bien fonctionnel, envoyer des pièces de L1 à L2, ou d'un L2 à un autre, devrait se sentir exactement comme envoyer des pièces dans le même L1.
Il existe de nombreuses catégories d'améliorations de l'interopérabilité croisée L2. En général, la manière de les élaborer est de remarquer qu'en théorie, Un Ethereum centré sur le rollup est la même chose qu'un sharding d'exécution L1, et demandez ensuite en quoi l'actuel L2-verse d'Ethereum ne répond pas à cet idéal en pratique. Voici quelques-uns :
Comment un client léger peut mettre à jour sa vue de la chaîne d'en-têtes Ethereum. Une fois que vous avez la chaîne d'en-têtes, vous pouvez utiliser des preuves de Merkle pour valider n'importe quel objet d'état. Et une fois que vous avez les bons objets d'état L1, vous pouvez utiliser des preuves de Merkle (et éventuellement des signatures, si vous voulez vérifier les préconfirmations) pour valider n'importe quel objet d'état sur L2. Helios fait déjà le premier. Étendre au second est un défi de normalisation.
Un diagramme stylisé de fonctionnement des portefeuilles de keystore.
Bon nombre des exemples ci-dessus font face à des dilemmes standards quant à la standardisation et aux couches à standardiser. Si vous standardisez trop tôt, vous risquez de consolider une solution inférieure. Si vous standardisez trop tard, vous risquez de créer une fragmentation inutile. Dans certains cas, il existe à la fois une solution à court terme qui a des propriétés plus faibles mais qui est plus facile à mettre en œuvre, et une solution à long terme qui est "finalement correcte" mais qui prendra quelques années pour y parvenir.
Une façon dont cette section est unique, c'est que ces tâches ne sont pas seulement des problèmes techniques : ce sont aussi (peut-être même principalement !) des problèmes sociaux. Elles nécessitent que les L2 et les portefeuilles et L1 coopèrent. Notre capacité à résoudre ce problème avec succès est un test de notre capacité à rester unis en tant que communauté.
La plupart de ces propositions sont des constructions de "couches supérieures", et n'affectent donc pas beaucoup les considérations de L1. Une exception est le séquençage partagé, qui a des impacts importants sur MEV.
Si les L2 deviennent très évolutifs et réussis mais que le L1 reste capable de traiter seulement un très faible volume de transactions, il existe de nombreux risques pour Ethereum qui pourraient survenir:
Pour ces raisons, il est précieux de continuer à mettre à l'échelle L1 lui-même, et de s'assurer qu'il peut continuer à accueillir un nombre croissant d'utilisations.
Le moyen le plus simple d'évoluer est simplement d'augmenter la limite de gaz. Cependant, cela risque de centraliser le L1 et de affaiblir ainsi l'autre propriété importante qui rend le L1 Ethereum si puissant : sa crédibilité en tant que couche de base robuste. Un débat est en cours sur le degré d'augmentation de la limite de gaz simple qui est durable, et cela change également en fonction des autres technologies mises en œuvre pour faciliter la vérification de blocs plus importants (par exemple, l'expiration de l'historique, la sans-état, les preuves de validité L1 EVM). Une autre chose importante à améliorer est tout simplement l'efficacité du logiciel client Ethereum, qui est bien plus optimisé aujourd'hui qu'il ne l'était il y a cinq ans. Une stratégie efficace d'augmentation de la limite de gaz L1 impliquerait d'accélérer ces technologies de vérification.
Une autre stratégie de mise à l'échelle consiste à identifier des fonctionnalités spécifiques et des types de calcul qui peuvent être rendus moins coûteux sans nuire à la décentralisation du réseau ou à ses propriétés de sécurité. Des exemples incluent :
Ces améliorations seront discutées plus en détail dans un prochain article sur le Splurge.
Enfin, une troisième stratégie consiste en des rollups natifs (ou "rollups consacrés") : essentiellement, créer de nombreuses copies de l'EVM qui s'exécutent en parallèle, ce qui conduit à un modèle équivalent à ce que les rollups peuvent fournir, mais beaucoup plus intégré nativement dans le protocole.
Il existe trois stratégies pour l'évolutivité L1, qui peuvent être poursuivies individuellement ou en parallèle :
Il vaut la peine de comprendre que ce sont des techniques différentes qui ont des compromis différents. Par exemple, les rollups natifs ont de nombreuses faiblesses en termes de composabilité similaires à celles des rollups réguliers : vous ne pouvez pas envoyer une seule transaction qui effectue de manière synchrone des opérations sur beaucoup d'entre eux, comme vous le pouvez avec des contrats sur le même L1 (ou L2). Augmenter la limite de gaz diminue d'autres avantages qui peuvent être obtenus en rendant le L1 plus facile à vérifier, comme augmenter la partie des utilisateurs qui exécutent des nœuds de vérification et augmenter les stakers solo. Rendre des opérations spécifiques dans l'EVM moins chères, selon la manière dont c'est fait, peut augmenter la complexité totale de l'EVM.
Une grande question à laquelle tout plan de mise à l'échelle L1 doit répondre est la suivante : quelle est la vision ultime de ce qui doit figurer sur L1 et de ce qui doit figurer sur L2 ? De toute évidence, il est absurde que tout aille sur L1 : les cas d'utilisation potentiels se chiffrent en centaines de milliers de transactions par seconde, ce qui rendrait L1 complètement invérifiable (à moins que nous empruntions la voie native du rollup). Mais nous avons besoin d'un principe directeur, afin de nous assurer de ne pas créer une situation où nous augmentons la limite de gaz de 10 fois, endommageons considérablement la décentralisation de l'Ethereum L1, et constatons que nous n'avons atteint qu'un monde où au lieu de 99 % de l'activité se trouvant sur L2, 90 % de l'activité se situe sur L2, et donc le résultat semble presque identique, à l'exception d'une perte irréversible de ce qui rend l'Ethereum L1 spécial.
Une vue proposée d'une "division du travail" entre L1 et L2s, source.
Amener plus d'utilisateurs sur L1 implique non seulement d'améliorer l'échelle, mais aussi d'autres aspects de L1. Cela signifie que plus de MEV restera sur L1 (au lieu de devenir un problème uniquement pour les L2), et il sera donc encore plus urgent de le gérer explicitement. Cela augmente considérablement la valeur d'avoir des temps de slot rapides sur L1. Et cela dépend également fortement de la vérification de L1 ("la Verge") se déroulant bien.