Paradigme : explication détaillée des problèmes et solutions de croissance historique d’Ethereum
Article original de Storm Slivkoff et Georgios Konstantopoulos
Traduction originale : Luffy, Foresight News
La croissance historique est actuellement le plus gros goulot d’étranglement pour l’expansion d’Ethereum. Étonnamment, la croissance historique est devenue un problème plus important que la croissance de l’État. D’ici quelques années, les données historiques dépasseront la capacité de stockage de nombreux nœuds Ethereum.
La bonne nouvelle est :
-
La croissance historique est un problème beaucoup plus facile à résoudre que la croissance de l’État.
-
A solution is already under active development.
-
Résoudre le problème de la croissance historique atténuera le problème de la croissance de l’État.
Dans cet article, nous poursuivons notre enquête sur la mise à l’échelle d’Ethereum depuis la première partie, en déplaçant désormais notre attention de la croissance de l’État vers la croissance historique. À l’aide d’un ensemble de données affinées, nos objectifs sont de 1) comprendre techniquement les goulots d’étranglement de mise à l’échelle d’Ethereum et 2) d’aider à éclairer la discussion autour de la solution optimale à la limite de gaz d’Ethereum.
Qu’est-ce que la croissance historique ?
L’historique est la collection de tous les blocs et transactions exécutés par Ethereum tout au long de son cycle de vie. Ce sont toutes les données du bloc de genèse au bloc actuel. La croissance historique est l’accumulation de nouveaux blocs et de nouvelles transactions au fil du temps.
Figure 1 shows the relationship between history growth and various protocol metrics and Ethereum node hardware constraints. History growth is limited by a different set of hardware constraints than state growth. History growth puts pressure on network IO because new blocks and transactions must be transmitted throughout the network. History growth also puts pressure on node storage space because each Ethereum node stores a complete copy of the history. If history growth is fast enough to exceed these hardware constraints, the node will no longer be able to reach a stable consensus with its peers. For an overview of state growth and other scaling bottlenecks, see Partie 1 de cette série.
Figure 1 : Goulot d’étranglement lié à la mise à l’échelle d’Ethereum
Jusqu'à récemment, la majeure partie du débit réseau de chaque nœud était utilisée pour transférer l'historique (comme les nouveaux blocs et transactions). Cela a changé avec l’introduction des blobs dans le hard fork de Dencun. Les blobs représentent désormais une grande partie de l’activité du réseau de nœuds. Cependant, les blobs ne sont pas considérés comme faisant partie de l’historique car 1) ils ne sont stockés par les nœuds que pendant 2 semaines puis supprimés, et 2) ils n’ont pas besoin de répéter les données de la genèse d’Ethereum. En raison de (1), les blobs n’augmentent pas de manière significative la charge de stockage de chaque nœud Ethereum. Nous discuterons des blobs plus loin dans cet article.
Dans cet article, nous nous concentrerons sur la croissance historique et discuterons de la relation entre l’histoire et l’État. Étant donné que la croissance de l’État et la croissance historique ont des contraintes matérielles qui se chevauchent, ce sont des problèmes liés et la résolution de l’un peut aider à résoudre l’autre.
À quelle vitesse la croissance historique a-t-elle été ?
La figure 2 montre le taux de croissance historique depuis la genèse d'Ethereum. Chaque ligne verticale représente un mois de croissance. L'axe des y représente le nombre de gigaoctets de croissance historique pour ce mois. Les transactions sont classées selon leur « adresse de destination » et sont dimensionnées à l'aide d'octets RLP (https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/). Les contrats qui ne peuvent pas être facilement identifiés sont classés comme « inconnus ». La catégorie « autres » comprend une série de petites catégories telles que les infrastructures et les jeux.
Figure 2 : Taux de croissance historique d’Ethereum au fil du temps
Quelques points clés à retenir du tableau ci-dessus :
-
L'histoire croît 6 à 8 fois plus vite que l'État : la croissance de l'histoire a récemment culminé à 36,0 Gio/mois et est actuellement de 19,3 Gio/mois. La croissance de l'État a culminé à environ 6,0 Gio/mois et se situe actuellement à 2,5 Gio/mois. Une comparaison de l’histoire et de l’état en termes de croissance et de taille cumulée est décrite plus loin dans cet article.
-
Avant Decun, le taux de croissance historique s’était accéléré : alors que l’État avait connu une croissance à peu près linéaire pendant de nombreuses années (voir partie 1), l’histoire était superlinéaire. Étant donné qu’un taux de croissance linéaire conduirait à une croissance quadratique de la taille globale, un taux de croissance superlinéaire conduirait à une croissance plus que quadratique de la taille globale. Cette accélération s'est arrêtée brusquement après Dencun. C’est la première fois qu’Ethereum connaît une baisse significative du taux de croissance historique.
-
La majeure partie de la croissance historique récente provient des Rollups : chaque L2 publie une copie de ses transactions sur le réseau principal. Cela génère une grande quantité d’historique et a fait des Rollups le contributeur le plus important à la croissance historique au cours de l’année écoulée. Cependant, Dencun permet aux L2 de publier leurs données de transaction en utilisant des blobs au lieu de l'historique, de sorte que les Rollups ne génèrent plus la majorité de l'historique d'Ethereum. Nous aborderons les rollups plus en détail plus loin dans cet article.
Qui est le plus grand contributeur à la croissance historique d’Ethereum ?
Le nombre historique de contrats générés par différentes catégories de contrats révèle comment les modèles d’utilisation d’Ethereum ont évolué au fil du temps. La figure 3 montre la contribution relative des différentes catégories de contrats. Il s'agit des mêmes données que la figure 2, normalisées.
Figure 3 : Contribution des différents types de contrats à la croissance historique
Les données révèlent quatre périodes distinctes de modèles d’utilisation d’Ethereum :
-
Début (violet) : les premières années d'Ethereum ont vu peu d'activité en chaîne. La plupart de ces premiers contrats sont difficiles à identifier aujourd’hui et sont marqués comme « inconnus » dans le graphique.
-
Ère ERC-20 (vert) : La norme ERC-20 a été finalisée fin 2015, mais n'a pris une ampleur significative qu'en 2017 et 2018. Les contrats ERC-20 ont été la plus grande source de croissance historique en 2019.
-
DEX/DeFi Era (Brown) : les contrats DEX et DeFi sont apparus sur la chaîne dès 2016 et ont commencé à gagner du terrain en 2017. Mais ce n'est qu'à l'été DeFi 2020 qu'ils sont devenus la catégorie la plus importante en termes de croissance historique. Les contrats DeFi et DEX représentaient plus de 50% de croissance historique en 2021 et une partie de 2022.
-
Rollup Era (Gray) : les rollups L2 commencent à exécuter plus de transactions que le réseau principal au début de 2023. Dans les mois précédant Dencun, ils ont généré environ les 2/3 de l'historique d'Ethereum.
Chaque époque représente un modèle d’utilisation d’Ethereum plus complexe que celui qui la précède. La complexité peut être considérée comme une forme d’évolution d’Ethereum au fil du temps, qui ne peut pas être mesurée par de simples mesures telles que les transactions par seconde.
Au cours du mois de données le plus récent (avril 2024), les cumuls ne génèrent plus la majorité de l'historique. On ne sait pas si l’histoire future viendra de DEX et DeFi, ou si un nouveau modèle d’utilisation émergera.
Et les blobs ?
Le hard fork de Dencun a introduit des blobs, modifiant considérablement la dynamique de croissance historique en permettant aux Rollups de publier des données en utilisant des blobs bon marché au lieu d'enregistrements historiques. La figure 4 fait un zoom sur les taux de croissance historiques avant et après la mise à niveau de Dencun. Ce graphique est similaire à la figure 2, sauf que chaque ligne verticale représente un jour au lieu d'un mois.
Figure 4 : Impact de Dencun sur la croissance historique
Nous pouvons tirer plusieurs conclusions clés de ce graphique :
-
Depuis Dencun, la croissance historique des rollups a diminué d'environ 2/3 : la plupart des rollups sont passés des données d'appel aux blobs, ce qui a considérablement réduit la quantité d'historique qu'ils génèrent. Cependant, en avril 2024, certains cumuls n'ont pas encore été convertis des données d'appel en blobs.
-
La croissance historique totale a chuté d'environ 1/3 depuis Dencun : Dencun n'a réduit la croissance historique que pour les cumuls. La croissance historique des autres catégories de contrats a légèrement augmenté. Même après Dencun, la croissance historique est encore 8 fois supérieure à la croissance de l’État (voir la section suivante pour plus de détails).
Bien que les blobs aient réduit le taux de croissance historique, ils restent une nouvelle fonctionnalité d’Ethereum et on ne sait pas exactement à quel niveau le taux de croissance historique se stabilisera avec les blobs en place.
À quelle vitesse la croissance historique est-elle acceptable ?
L'augmentation de la limite de gaz augmentera le taux de croissance historique. Par conséquent, les propositions visant à augmenter la limite de gaz (telles que Pomper le gaz ) doit prendre en compte la relation entre la croissance historique et le goulot d'étranglement matériel de chaque nœud.
Pour déterminer un taux de croissance historique acceptable, nous devons d’abord comprendre combien de temps le matériel du nœud actuel peut durer en termes de mise en réseau et de stockage. Le matériel réseau peut probablement maintenir le statu quo indéfiniment, car il est peu probable que le taux de croissance historique revienne à son sommet d'avant Dencun avant que la limite de gaz ne soit augmentée. Cependant, la charge de stockage de l’histoire continuera d’augmenter avec le temps. Dans le cadre de la stratégie de stockage actuelle, il est inévitable que le disque dur de stockage de chaque nœud soit éventuellement rempli d'enregistrements historiques.
La figure 5 montre la charge de stockage des nœuds Ethereum au fil du temps et prédit la croissance de la charge de stockage au cours des 3 prochaines années. Les prévisions font référence au taux de croissance d'avril 2024. Le taux de croissance pourrait augmenter ou diminuer à mesure que les modes d'utilisation ou les limites de gaz changent à l'avenir.
Figure 5 : Taille de l'historique, état et charge de stockage complète des nœuds
Nous pouvons tirer plusieurs conclusions clés de ce chiffre :
-
L’histoire occupe environ 3 fois plus d’espace de stockage que l’État. Cette différence s’accroît avec le temps, l’histoire se développant environ 8 fois plus vite que l’État.
-
1,8 TiB est le seuil critique et de nombreux nœuds seront obligés de mettre à niveau leurs disques durs de stockage. 2 To est une taille de disque dur de stockage courante, qui ne fournit que 1,8 TiB d'espace libre. Notez que To (1 billion d'octets) est une unité différente de TiB (= 1024 ^ 4 octets). Pour de nombreux opérateurs de nœuds, le véritable seuil critique est encore plus bas, car après la fusion, les validateurs doivent gérer un client de consensus avec le client d'exécution.
-
Le seuil critique sera atteint dans 2-3 ans. Augmenter la limite de gaz de n’importe quelle quantité accélérera ce temps en conséquence. Atteindre ce seuil imposera une charge de maintenance importante aux opérateurs de nœuds et nécessitera l'achat de matériel supplémentaire (tel que des disques NVME $300).
Contrairement aux données d'état, les données d'historique sont uniquement ajoutées et sont consultées beaucoup moins fréquemment. Par conséquent, en théorie, les données historiques peuvent être stockées séparément des données d’état sur des supports de stockage moins chers. Ceci peut être réalisé par certains clients tels que Geth.
Outre la capacité de stockage, les E/S réseau constituent une autre limitation majeure à la croissance historique. Contrairement à la capacité de stockage, les limitations d'E/S du réseau ne poseront pas de problèmes aux nœuds à court terme, mais ces limitations deviendront importantes à mesure que les limites de gaz augmenteront à l'avenir.
Pour comprendre le degré de croissance historique que la capacité réseau d'un nœud Ethereum typique peut supporter, il faut connaître la relation entre la croissance historique et diverses mesures de santé du réseau, telles que le taux de réorganisation, les échecs d'emplacement, les échecs de finalité, les échecs de preuve, les échecs du comité de synchronisation et bloquer la latence de soumission. L’analyse de ces métriques dépasse le cadre de cet article, mais plus d’informations peuvent être trouvées dans des enquêtes précédentes sur l’état de santé de la couche de consensus. En outre, le projet Ethereum Foundations Xatu a créé des ensembles de données publiques pour accélérer une telle analyse.
Comment résoudre le problème de la croissance historique ?
La croissance historique est un problème beaucoup plus facile à résoudre que la croissance de l’État. Ce problème peut être presque entièrement résolu par la proposition candidate EIP-4444. Cet EIP modifie chaque nœud de la sauvegarde de l’intégralité de l’historique d’Ethereum à une seule sauvegarde d’un an d’historique. Après la mise en œuvre de l'EIP-4444, le stockage des données ne sera plus un goulot d'étranglement pour l'expansion d'Ethereum, et l'augmentation des limites de gaz ne sera plus une contrainte à long terme. EIP -4444 est nécessaire pour la durabilité à long terme du réseau, sinon le taux de croissance historique sera très rapide et le matériel des nœuds du réseau devra être régulièrement mis à jour.
La figure 6 montre l'impact de l'EIP-4444 sur la charge de stockage de chaque nœud au cours des 3 prochaines années. C'est la même chose que la figure 4, mais avec l'ajout d'une ligne plus claire représentant la charge de stockage après la mise en œuvre d'EIP-4444.
Figure 6 : L'impact de l'EIP-4444 sur la charge de stockage des nœuds Ethereum
Certaines conclusions clés peuvent être tirées de ce graphique :
-
EIP-4444 réduira de moitié la charge de stockage actuelle. La charge de stockage passera de 1,2 TiB à 633 GiB.
-
EIP-4444 stabilisera la charge de stockage de l'historique. En supposant un taux de croissance de l'historique constant, les données de l'historique seront supprimées au rythme où elles sont générées.
-
Après EIP-4444, il faudra de nombreuses années pour que la charge de stockage des nœuds atteigne les niveaux actuels. En effet, la croissance de l’État sera le seul facteur augmentant la charge de stockage et la croissance de l’État est plus lente que la croissance historique.
Après la mise en œuvre d'EIP-4444, la croissance de l'historique entraînera encore un certain degré de charge de stockage, car le nœud stockera un an d'historique. Cependant, même si Ethereum atteint l’échelle mondiale, ce fardeau n’est pas difficile à résoudre. Une fois que la méthode de préservation de l'historique s'est avérée fiable, le délai d'expiration d'un an de l'EIP-4444 peut être raccourci à quelques mois, semaines, voire moins.
Comment préserver l’historique d’Ethereum ?
L'EIP-4444 soulève la question suivante : si l'historique n'est pas conservé par les nœuds Ethereum eux-mêmes, alors comment doit-il être conservé ? L’histoire joue un rôle central dans la vérification, la comptabilité et l’analyse d’Ethereum, il est donc essentiel de la préserver. Heureusement, la préservation de l’historique est un problème simple qui ne nécessite qu’un seul fournisseur de données honnête. Cela contraste fortement avec le problème du consensus étatique, qui nécessite qu’un tiers à deux tiers des participants soient honnêtes. Les opérateurs de nœuds peuvent vérifier l'authenticité des ensembles de données historiques en 1) rejouant toutes les transactions depuis le bloc de genèse et 2) en vérifiant que ces transactions reproduisent la même racine d'état que la fin actuelle de la blockchain.
Il existe de nombreuses façons de sauvegarder l'historique.
-
Torrents/P2P : Les torrents sont la méthode la plus simple et la plus fiable. Les nœuds Ethereum peuvent périodiquement regrouper des parties de l’historique et les partager sous forme de fichiers torrent publics. Par exemple, un nœud peut créer un nouveau fichier torrent historique tous les 100 000 blocs. Les clients de nœud comme Erigon effectuent déjà ce processus de manière quelque peu non standardisée. Afin de standardiser ce processus, tous les nœuds clients doivent utiliser le même format de données, les mêmes paramètres et le même réseau P2P. Les nœuds pourront choisir de participer ou non à ce réseau en fonction de leurs capacités de stockage et de bande passante. Les torrents ont l’avantage d’utiliser un standard ouvert très lindy et déjà pris en charge par un grand nombre d’outils de données.
-
Réseau de portail : Réseau de portail est un nouveau réseau conçu spécifiquement pour héberger les données Ethereum. Il s'agit d'une approche de type Torrent tout en fournissant également des fonctionnalités supplémentaires pour faciliter la vérification des données. L'avantage de Portal Network est que ces couches de vérification supplémentaires permettent aux clients légers de vérifier et d'interroger efficacement les ensembles de données partagés.
-
Hébergement cloud : les services de stockage cloud tels que S3 d'AWS ou R2 de Cloudflare offrent une option bon marché et performante pour préserver les enregistrements historiques. Cependant, cette approche comporte davantage de risques juridiques et opérationnels, car rien ne garantit que ces services cloud soient toujours disposés et capables d'héberger des données cryptées.
Les défis restants en matière de mise en œuvre sont plus sociaux que techniques. La communauté Ethereum doit coordonner les détails de mise en œuvre spécifiques afin qu'ils puissent être intégrés directement dans chaque client de nœud. En particulier, effectuer une synchronisation complète à partir du bloc Genesis (plutôt qu'une synchronisation d'instantané) nécessitera de récupérer l'historique auprès d'un fournisseur d'historique plutôt que d'un nœud Ethereum. Ces changements ne nécessitent techniquement pas de hard fork, ils peuvent donc être mis en œuvre plus tôt que le prochain hard fork d’Ethereum, Pectra.
Toutes ces méthodes de préservation de l'historique peuvent également être utilisées par L2 pour préserver les données blob qu'elles publient sur le réseau principal. Par rapport à la préservation de l’historique, la préservation des blobs est 1) plus difficile car la quantité totale de données est beaucoup plus importante ; 2) moins important car les blobs ne sont pas nécessaires pour rejouer l'historique du réseau principal. Cependant, la préservation des blobs est toujours nécessaire pour que chaque L2 puisse rejouer sa propre histoire. Par conséquent, une certaine forme de préservation des blobs est importante pour l’ensemble de l’écosystème Ethereum. De plus, si L2 développe une solide infrastructure de stockage d’objets blob, ils pourront également stocker facilement les données historiques de L1.
Il serait utile de comparer directement les ensembles de données stockés par diverses configurations de nœuds avant et après EIP-4444. La figure 7 montre la charge de stockage des différents types de nœuds Ethereum. Les données d'état sont des comptes et des contrats, les données d'historique sont des blocs et des transactions, et les données d'archives sont un ensemble facultatif d'index de données. Le nombre d'octets dans ce tableau est basé sur un instantané reth récent, mais les nombres pour les autres clients de nœud devraient être à peu près comparables.
Figure 7 : Charge de stockage des différents types de nœuds Ethereum
autrement dit,
-
Les nœuds d'archive stockent les données d'état et les données historiques ainsi que les données d'archive. Les nœuds d'archives peuvent être utilisés lorsque quelqu'un souhaite pouvoir interroger facilement l'état de la chaîne historique.
-
Les nœuds complets stockent uniquement les données historiques et d'état. Aujourd’hui, la plupart des nœuds sont des nœuds complets. La charge de stockage d'un nœud complet est environ la moitié de celle d'un nœud d'archive.
-
Après EIP-4444, les nœuds complets stockent uniquement les données d'état et les données historiques de l'année dernière. Cela réduit la charge de stockage des nœuds de 1,2 TiB à 633 GiB et amène l'espace de stockage pour les données historiques à une valeur stable.
-
Les nœuds sans état, également appelés « nœuds légers », ne stockent aucun ensemble de données et sont capables de vérifier immédiatement à la fin de la chaîne. Ce type de nœud deviendra possible une fois que les tentatives de Verkle ou d’autres programmes d’engagement de l’État seront ajoutés à Ethereum.
Enfin, il existe quelques EIP supplémentaires qui limitent le taux de croissance historique plutôt que de simplement s’adapter au taux de croissance actuel. Cela permet de respecter les contraintes d'E/S du réseau à court terme et les contraintes de stockage à long terme. Bien que l'EIP-4444 soit toujours nécessaire pour la durabilité à long terme du réseau, ces autres EIP aideront Ethereum à évoluer plus efficacement à l'avenir :
-
EIP-7623 : retarification des données d'appel, ce qui rend certaines transactions contenant trop de données d'appel plus coûteuses. Rendre ces modèles d'utilisation plus coûteux obligera certains d'entre eux à convertir les données d'appel en blobs. Cela réduira le taux de croissance historique.
-
EIP-4488 : imposez une limite à la quantité totale de données d'appel pouvant être incluses dans chaque bloc. Cela imposera des limites plus strictes à la vitesse à laquelle l’histoire peut se développer.
Ces EIP sont plus faciles à mettre en œuvre que l'EIP-4444, ils peuvent donc servir de mesure provisoire à court terme avant que l'EIP-4444 n'entre en production.
Conclusion
Le but de cet article est d’utiliser les données pour comprendre 1) comment fonctionne la croissance historique et 2) comment résoudre le problème. De nombreuses données présentées dans cet article sont difficiles à obtenir par les moyens traditionnels. Nous espérons donc que leur publication pourra fournir de nouvelles informations sur le problème de la croissance historique.
La croissance historique en tant que goulot d’étranglement pour l’expansion d’Ethereum n’a pas reçu suffisamment d’attention. Même sans augmenter la limite de gaz, la pratique actuelle d’Ethereum consistant à préserver l’historique obligera de nombreux nœuds à mettre à niveau leur matériel dans quelques années. Heureusement, ce n’est pas un problème difficile à résoudre. Il existe déjà une solution claire dans EIP-4444. Nous pensons que la mise en œuvre de cet EIP devrait être accélérée pour laisser la place à de futures augmentations des limites de gaz.
Cet article provient d'Internet : Paradigme : explication détaillée des problèmes et solutions de croissance historique d'Ethereum.
En bref Le Bitcoin de cette année a été réduit de moitié pour réduire la récompense minière à 3,125 BTC, remettant en question la rentabilité des mineurs. CryptoQuant rapporte une baisse du prix du hachage du mineur 30% depuis la dernière réduction de moitié, et une nouvelle baisse est attendue. La concurrence et les coûts augmentent, le hashrate du réseau Bitcoin atteignant 600 EH/s, affectant les bénéfices. Dans environ 10 jours, la communauté Bitcoin sera témoin d’un événement important, à savoir la réduction de moitié du Bitcoin. Ce phénomène réduira de moitié la récompense pour l'extraction d'un bloc Bitcoin de 6,25 à 3,125 Bitcoins, mettant ainsi la pression sur la rentabilité des mineurs. Les mineurs sont désormais engagés dans une course contre la montre, exigeant des prix Bitcoin plus élevés pour maintenir leurs revenus. Pourquoi les mineurs de Bitcoin seront confrontés à des défis Selon un rapport de CryptoQuant partagé avec BeInCrypto, le prix du hachage des mineurs a chuté de 30% depuis la dernière réduction de moitié en mai 2020. Actuellement évalué à $0,11 par Terahash par seconde, ce…