Le voyage de transformation d'Ethereum : The Purge explore un nouveau paradigme de gestion des données off-chain.

L'avenir potentiel d'Ethereum : The Purge

L'un des défis auxquels Ethereum est confronté est que, par défaut, l'expansion et la complexité de tout protocole de blockchain augmentent avec le temps. Cela se produit à deux endroits :

Données historiques : Toutes les transactions effectuées à tout moment dans l'histoire et tous les comptes créés doivent être stockés de manière permanente par tous les clients et téléchargés par tout nouveau client, afin d'être complètement synchronisés avec le réseau. Cela entraînera une charge client et un temps de synchronisation qui augmentent au fil du temps, même si la capacité de la chaîne reste constante.

Fonctionnalité du protocole : Ajouter de nouvelles fonctionnalités est beaucoup plus facile que de supprimer d'anciennes fonctionnalités, ce qui entraîne une complexité du code qui augmente avec le temps.

Pour que l'Ethereum puisse se maintenir à long terme, nous devons exercer une forte contre-pression sur ces deux tendances, réduisant la complexité et l'expansion au fil du temps. Mais en même temps, nous devons conserver l'une des caractéristiques clés qui rendent la blockchain formidable : la durabilité. Vous pouvez mettre un NFT, une lettre d'amour dans des données d'appel de transaction, ou un contrat intelligent contenant 1 million de dollars sur la chaîne, entrer dans une grotte pendant dix ans, et en ressortant, découvrir qu'il est toujours là, attendant que vous le lisiez et interagissiez. Pour que les DApp puissent se décentraliser complètement en toute confiance et supprimer les clés de mise à niveau, elles doivent être sûres que leurs dépendances ne seront pas mises à niveau de manière destructrice - en particulier L1 lui-même.

Si nous nous engageons à équilibrer ces deux besoins et à minimiser ou inverser l'encombrement, la complexité et le déclin tout en maintenant la continuité, c'est absolument possible. Les organismes vivants peuvent le faire : bien que la plupart des organismes vieillissent avec le temps, quelques chanceux ne le font pas. Même les systèmes sociaux peuvent avoir une durée de vie très longue. Dans certains cas, Ethereum a déjà réussi : la preuve de travail a disparu, l'opcode SELFDESTRUCT a disparu dans une large mesure, et les nœuds de la chaîne de balise ont stocké jusqu'à six mois de données anciennes. Trouver ce chemin pour Ethereum de manière plus générale et se diriger vers un résultat final stable à long terme est le défi ultime pour l'évolutivité à long terme d'Ethereum, la durabilité technique et même la sécurité.

The Purge : objectif principal.

Réduire les exigences de stockage des clients en diminuant ou en éliminant la nécessité pour chaque nœud de stocker de manière permanente tous les historiques, voire l'état final.

Réduire la complexité du protocole en éliminant les fonctionnalités inutiles.

Vitalik : l'avenir possible d'Ethereum, The Purge

Table des matières :

Historique d'expiration

État d'expiration(状态到期)

Nettoyage des fonctionnalités

Histoire d'expiration

Quel problème résout-il ?

À l'heure où cet article est rédigé, un nœud Ethereum entièrement synchronisé nécessite environ 1,1 To d'espace disque pour exécuter le client, en plus de plusieurs centaines de Go d'espace disque pour le client de consensus. La grande majorité de cela est historique : des données concernant les blocs historiques, les transactions et les reçus, dont la plupart ont plusieurs années. Cela signifie que même si la limite de Gas n'augmente pas du tout, la taille des nœuds continuera d'augmenter de plusieurs centaines de Go chaque année.

Qu'est-ce que c'est et comment ça fonctionne ?

Une caractéristique clé de simplification du problème de stockage historique est que, puisque chaque bloc pointe vers le bloc précédent via des liens de hachage (et d'autres structures), il suffit d'atteindre un consensus sur le présent pour atteindre un consensus sur l'histoire. Tant que le réseau parvient à un consensus sur le dernier bloc, n'importe quel bloc, transaction ou état historique (solde de compte, nombre aléatoire, code, stockage) peut être fourni par n'importe quel participant individuel ainsi que par une preuve Merkle, et cette preuve permet à quiconque d'en vérifier la validité. Le consensus est un modèle de confiance N/2-of-N, tandis que l'histoire est un modèle de confiance N-of-N.

Cela nous offre de nombreuses options sur la manière de stocker l'historique. Un choix naturel est un réseau où chaque nœud ne stocke qu'une petite partie des données. C'est ainsi que les réseaux de graines fonctionnent depuis des décennies : bien que le réseau stocke et distribue des millions de fichiers au total, chaque participant ne stocke et ne distribue que quelques-uns de ces fichiers. Peut-être contre-intuitivement, cette approche ne réduit même pas nécessairement la robustesse des données. Si nous pouvons rendre l'exécution des nœuds plus économique, nous pourrions établir un réseau de 100 000 nœuds, où chaque nœud stocke 10 % de l'historique de manière aléatoire, alors chaque donnée sera copiée 10 000 fois - tout à fait identique au facteur de duplication d'un réseau de 10 000 nœuds, où chaque nœud stocke tout.

Aujourd'hui, Ethereum commence à se débarrasser du modèle où tous les nœuds stockent en permanence toute l'historique. Les blocs de consensus (c'est-à-dire la partie liée au consensus par preuve d'enjeu) ne stockent que pendant environ 6 mois. Les Blobs ne sont stockés que pendant environ 18 jours. L'EIP-4444 vise à introduire une période de stockage d'un an pour les blocs historiques et les reçus. L'objectif à long terme est d'établir une période unifiée (probablement d'environ 18 jours), pendant laquelle chaque nœud est responsable du stockage de tout, puis de créer un réseau pair à pair composé de nœuds Ethereum pour stocker les anciennes données de manière distribuée.

Les codes d'effacement peuvent être utilisés pour améliorer la robustesse tout en maintenant le même facteur de réplication. En fait, le Blob a déjà été soumis à des codes d'effacement pour soutenir l'échantillonnage de la disponibilité des données. La solution la plus simple est probablement de réutiliser ces codes d'effacement et d'inclure également les données de bloc d'exécution et de consensus dans le blob.

Vitalik : L'avenir potentiel d'Ethereum, The Purge

Quels liens existe-t-il avec les recherches existantes ?

EIP-4444;

Torrents et EIP-4444;

portail réseau ;

réseau de passerelle et EIP-4444 ;

Stockage et récupération distribués des objets SSZ dans le Portail ;

Comment augmenter la limite de gas (Paradigm).

Que faut-il encore faire, quels compromis faut-il envisager ?

Les principales tâches restantes incluent la construction et l'intégration d'une solution distribuée concrète pour stocker les historiques ------ au moins l'historique d'exécution, mais finalement aussi le consensus et le blob. La solution la plus simple consiste à (i) introduire simplement une bibliothèque torrent existante, ainsi qu'à (ii) une solution native à Ethereum appelée réseau Portal. Une fois l'une ou l'autre introduite, nous pouvons ouvrir l'EIP-4444. L'EIP-4444 lui-même ne nécessite pas de hard fork, mais il nécessite une nouvelle version du protocole réseau. Par conséquent, il est précieux de l'activer simultanément pour tous les clients, sinon il existe un risque que les clients échouent en s'attendant à télécharger l'historique complet en se connectant à d'autres nœuds alors qu'ils ne l'obtiennent en réalité pas.

Les principaux compromis concernent la manière dont nous nous efforçons de fournir des données historiques "anciennes". La solution la plus simple consiste à arrêter de stocker les anciennes données historiques demain et à s'appuyer sur les nœuds d'archivage existants et divers fournisseurs centralisés pour la réplication. C'est facile, mais cela affaiblit la position d'Ethereum en tant que lieu d'enregistrement permanent. Une voie plus difficile mais plus sûre consiste d'abord à construire et à intégrer un réseau torrent pour stocker l'historique de manière distribuée. Ici, "combien nous nous efforçons" a deux dimensions :

Comment nous efforçons-nous de garantir que le plus grand ensemble de nœuds stocke effectivement toutes les données ?

Quelle est la profondeur de l'intégration du stockage historique dans le protocole ?

Une méthode extrême et paranoïaque pour (1) impliquerait une preuve de garde : exigeant en fait que chaque vérificateur de preuve d'enjeu stocke une certaine proportion d'historique et vérifie régulièrement de manière cryptographique s'il le fait. Une approche plus douce serait de définir une norme volontaire pour le pourcentage d'historique stocké par chaque client.

Pour (2), la mise en œuvre de base ne concerne que le travail déjà accompli aujourd'hui : le Portail a déjà stocké les fichiers ERA contenant l'historique complet d'Ethereum. Une mise en œuvre plus complète impliquerait de le connecter réellement au processus de synchronisation, de sorte que, si quelqu'un souhaite synchroniser un nœud de stockage d'historique complet ou un nœud d'archivage, même s'il n'y a pas d'autres nœuds d'archivage en ligne, il peut le faire en synchronisant directement à partir du réseau du portail.

Comment cela interagit-il avec les autres parties de la feuille de route ?

Si nous voulons rendre l'exécution ou le lancement des nœuds extrêmement facile, alors réduire les exigences de stockage historique peut être considéré comme plus important que l'absence d'état : sur les 1,1 To nécessaires pour le nœud, environ 300 Go sont l'état, le reste, soit environ 800 Go, est devenu historique. Ce n'est qu'en réalisant l'absence d'état et l'EIP-4444 que l'on pourra réaliser la vision de faire fonctionner un nœud Ethereum sur une montre intelligente et de le configurer en quelques minutes.

La limitation du stockage historique rend également la mise en œuvre des nœuds Ethereum plus réalisable, ne prenant en charge que la dernière version du protocole, ce qui les rend plus simples. Par exemple, il est désormais possible de supprimer en toute sécurité de nombreuses lignes de code, car les emplacements de stockage vides créés lors de l'attaque par déni de service (DoS) de 2016 ont tous été supprimés. Maintenant que le passage à la preuve d'enjeu est devenu historique, les clients peuvent supprimer en toute sécurité tout code lié à la preuve de travail.

Vitalik : l'avenir possible d'Ethereum, The Purge

État d'expiration

Quel problème résout-il ?

Même si nous éliminons le besoin de stockage historique par le client, les besoins de stockage du client continueront de croître, d'environ 50 Go par an, car l'état continue de croître : les soldes des comptes et les nombres aléatoires, le code des contrats et le stockage des contrats. Les utilisateurs peuvent payer des frais uniques, ce qui imposera un fardeau permanent aux clients Ethereum d'aujourd'hui et de demain.

L'état est plus difficile à "expirer" que l'historique, car l'EVM est fondamentalement conçu autour de cette hypothèse : une fois qu'un objet d'état est créé, il existera toujours et pourra être lu à tout moment par n'importe quelle transaction. Si nous introduisons la sans-état, certains pensent que ce problème n'est peut-être pas si grave : seuls les constructeurs de blocs spécialisés doivent réellement stocker l'état, tandis que tous les autres nœuds (même ceux générant des listes !) peuvent fonctionner sans état. Cependant, il existe un point de vue selon lequel nous ne voulons pas trop dépendre de la sans-état, et finalement, nous pourrions vouloir faire expirer l'état pour maintenir la décentralisation d'Ethereum.

Qu'est-ce que c'est et comment ça fonctionne

Aujourd'hui, lorsque vous créez un nouvel objet d'état (ce qui peut se produire de l'une des trois manières suivantes : (i) en envoyant de l'ETH à un nouveau compte, (ii) en créant un nouveau compte à l'aide de code, (iii) en configurant un emplacement de stockage qui n'a pas été touché auparavant), cet objet d'état reste dans cet état pour toujours. En revanche, ce que nous voulons, c'est que l'objet expire automatiquement avec le temps. Le défi clé est de le faire d'une manière qui atteint trois objectifs :

Efficacité : pas besoin d'un grand nombre de calculs supplémentaires pour exécuter le processus d'expiration.

Facilité d'utilisation : Si quelqu'un entre dans une grotte pendant cinq ans et revient, il ne devrait pas perdre l'accès à ses positions ETH, ERC20, NFT, CDP...

Amabilité pour les développeurs : les développeurs n'ont pas besoin de passer à un modèle de pensée complètement inconnu. De plus, les applications qui sont actuellement rigides et non mises à jour devraient continuer à fonctionner normalement.

Il est facile de résoudre des problèmes si ces objectifs ne sont pas atteints. Par exemple, vous pouvez faire en sorte que chaque objet d'état stocke également un compteur de date d'expiration (qui peut être prolongé en brûlant de l'ETH, ce qui peut se produire automatiquement à tout moment lors d'une lecture ou d'une écriture), et avoir un processus itérant sur l'état pour supprimer les objets d'état avec des dates d'expiration. Cependant, cela introduit des calculs supplémentaires (voire des besoins de stockage) et cela ne peut certainement pas répondre aux exigences de convivialité. Il est également difficile pour les développeurs de raisonner sur les cas limites où la valeur stockée est parfois réinitialisée à zéro. Si vous définissez un minuteur d'expiration dans le contrat, cela facilitera techniquement la vie des développeurs, mais cela compliquera les aspects économiques : les développeurs doivent réfléchir à la façon de "transférer" le coût de stockage continu à l'utilisateur.

Ces problèmes sont ceux que la communauté des développeurs d'Ethereum a cherché à résoudre depuis des années, y compris des propositions telles que "la location de blockchain" et "la régénération". Au final, nous avons combiné les meilleures parties des propositions et nous nous sommes concentrés sur deux catégories de "solutions connues comme étant les moins pires" :

  • Solutions pour le statut expiré partiel
  • Suggestions de statut d'expiration basées sur le cycle d'adresse.

Expiration partielle de l'état

Certaines propositions d'état expirées suivent les mêmes principes. Nous divisons l'état en blocs. Chacun stocke en permanence une "carte de niveau supérieur", où les blocs sont vides ou non vides. Les données dans chaque bloc ne sont stockées que si elles ont été récemment consultées. Il existe un mécanisme de "résurrection" qui s'active si elles ne sont plus stockées.

La principale différence entre ces propositions est : (i) comment nous définissons "récemment",

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 6
  • Partager
Commentaire
0/400
GateUser-3824aa38vip
· Il y a 17h
Jusqu'à quand devrons-nous attendre pour que ce soit fini ?
Voir l'originalRépondre0
CryptoNomicsvip
· Il y a 17h
*sigh* en réalité, le protocole bloat suit une fonction de croissance logarithmique : P(t) = k*ln(t) + c... mais vous n'êtes pas prêts pour cette conversation.
Voir l'originalRépondre0
TokenStormvip
· Il y a 17h
Données off-chain explosent, Ethereum a probablement du mal à tenir.
Voir l'originalRépondre0
DefiVeteranvip
· Il y a 17h
La suppression des données dépend encore de V God
Voir l'originalRépondre0
rug_connoisseurvip
· Il y a 18h
Le fardeau historique est vraiment trop lourd.
Voir l'originalRépondre0
OnchainGossipervip
· Il y a 18h
En termes simples, c'est juste que j'ai pris du poids et que je veux perdre du poids.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)