Vitalik : 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 et tous les comptes créés à tout moment dans le passé 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 augmentation continue de la charge du client et du temps de synchronisation au fil du temps, même si la capacité de la chaîne reste inchangée.
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é croissante du code au fil du 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 propriétés clés qui rendent la blockchain formidable : la durabilité. Vous pouvez mettre un NFT, une lettre d'amour dans les 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 sortant, découvrir qu'il est toujours là, attendant que vous le lisiez et interagissiez. Pour que les DApps puissent se décentraliser complètement et supprimer les clés de mise à jour en toute confiance, ils doivent être sûrs que leurs dépendances ne seront pas mises à jour de manière à les nuire - en particulier L1 lui-même.
Si nous nous engageons à trouver un équilibre entre 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 réussi : la preuve de travail a disparu, le code d'opération SELFDESTRUCT a disparu dans sa plus grande partie, et les nœuds de la chaîne de balises ont stocké jusqu'à six mois de données anciennes. Trouver ce chemin pour Ethereum de manière plus générale et aller vers un résultat final stable à long terme est le défi ultime pour la scalabilité à 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 conserver de manière permanente tous les historiques, voire l'état final.
Réduire la complexité du protocole en éliminant les fonctionnalités inutiles.
Table des matières :
Histoire d'expiration
État d'expiration(状态到期)
Nettoyage des fonctionnalités
Historique d'expiration
résout quel problème ?
Au moment de la rédaction de cet article, un nœud Ethereum complètement synchronisé nécessite environ 1,1 To d'espace disque pour exécuter le client, et il faut également plusieurs centaines de Go d'espace disque pour le client de consensus. La grande majorité de cela est historique : des données sur les blocs, les transactions et les reçus historiques, dont la plupart datent de 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 la simplification des problèmes de stockage historique est que, puisque chaque bloc est lié au bloc précédent par un lien de hachage (et d'autres structures), il suffit d'atteindre un consensus sur le bloc actuel pour parvenir à un consensus sur l'historique. Tant que le réseau parvient à un consensus sur le dernier bloc, tout bloc historique, transaction ou état (solde de compte, nombre aléatoire, code, stockage) peut être fourni par n'importe quel participant individuel ainsi qu'une preuve Merkle, et cette preuve permet à tout autre de vérifier sa validité. Le consensus est un modèle de confiance N/2-of-N, tandis que l'historique est un modèle de confiance N-of-N.
Cela nous offre de nombreuses options sur la façon de stocker les enregistrements historiques. 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 semences 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 méthode ne réduit même pas nécessairement la robustesse des données. Si nous pouvons établir un réseau de 100 000 nœuds, chacun stockant aléatoirement 10 % des enregistrements historiques, alors chaque donnée sera copiée 10 000 fois - tout à fait identique au facteur de copie d'un réseau de 10 000 nœuds, où chaque nœud stocke tout.
Aujourd'hui, Ethereum a commencé à se débarrasser du modèle où tous les nœuds stockent de manière permanente toute l'historique. Les blocs de consensus (c'est-à-dire la partie liée au consensus de 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), durant laquelle chaque nœud est responsable du stockage de tout, puis de créer un réseau pair à pair composé de nœuds Ethereum, stockant 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 facteur de réplication identique. En fait, le Blob a déjà été codé avec 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 l'exécution et les données des blocs de consensus dans le blob.
a quels liens a-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 Portal ;
Comment augmenter la limite de gas (Paradigm).
que faut-il encore faire, quels éléments doivent être pris en compte ?
Les travaux principaux restants comprennent la construction et l'intégration d'une solution distribuée concrète pour stocker l'historique ------ au moins l'historique d'exécution, mais finalement aussi le consensus et le blob. La solution la plus simple est (i) d'introduire simplement une bibliothèque torrent existante, ainsi que (ii) une solution native à Ethereum appelée réseau Portal. Une fois l'un ou l'autre introduit, nous pouvons ouvrir l'EIP-4444. L'EIP-4444 lui-même ne nécessite pas de hard fork, mais il nécessite effectivement une nouvelle version du protocole réseau. Par conséquent, il est utile de l'activer simultanément pour tous les clients, sinon il existe un risque que les clients échouent en raison de la connexion à d'autres nœuds, s'attendant à télécharger l'historique complet mais ne l'obtenant en réalité pas.
Les principaux compromis concernent notre façon de nous efforcer de fournir des données historiques "anciennes". La solution la plus simple consiste à cesser de stocker des historiques anciens dès demain et à s'appuyer sur les nœuds d'archive existants et divers fournisseurs centralisés pour la réplication. C'est facile, mais cela affaiblit le statut 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, "dans quelle mesure 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 d'extrême paranoïa pour (1) impliquerait la preuve de garde : exigeant en fait que chaque validateur de preuve d'enjeu stocke un certain pourcentage d'historique et vérifie régulièrement de manière cryptographique s'ils le font. Une approche plus douce consiste à établir une norme volontaire pour le pourcentage d'historique stocké par chaque client.
Pour (2), l'implémentation de base ne concerne que le travail déjà réalisé aujourd'hui : le Portal a déjà stocké des fichiers ERA contenant l'ensemble de l'historique d'Ethereum. Une implémentation 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 depuis le réseau Portal.
Comment interagit-il avec les autres parties de la feuille de route ?
Si nous voulons rendre l'exécution ou le démarrage des nœuds extrêmement facile, alors réduire les besoins de stockage historique peut être considéré comme plus important que la non-état : sur les 1,1 To nécessaires au nœud, environ 300 Go sont l'état, le reste, soit environ 800 Go, est devenu historique. Ce n'est qu'en réalisant la non-état et l'EIP-4444 que la vision de faire fonctionner un nœud Ethereum sur une montre intelligente et de le configurer en quelques minutes peut être atteinte.
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, de nombreuses lignes de code peuvent désormais être supprimées en toute sécurité, car tous les slots de stockage vides créés lors de l'attaque DoS de 2016 ont été supprimés. Maintenant que le passage à la preuve d'enjeu est devenu une réalité historique, les clients peuvent supprimer en toute sécurité tout le code lié à la preuve de travail.
Expiration de l'état
résout quel problème ?
Même si nous avons éliminé le besoin de stocker l'historique côté client, la demande de stockage du client continuera d'augmenter, d'environ 50 Go par an, en raison de la croissance continue de l'état : soldes de compte et nombres aléatoires, code de contrat et stockage de contrat. Les utilisateurs peuvent payer des frais uniques, ce qui impose un fardeau aux clients Ethereum actuels et futurs.
L'état est plus difficile à "expirer" que l'historique, car l'EVM est fondamentalement conçu autour de l'hypothèse selon laquelle : 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 l'absence d'état, certains pensent que ce problème n'est peut-être pas si grave : seuls les constructeurs de blocs spécialisés ont réellement besoin de stocker l'état, tandis que tous les autres nœuds (y compris 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 l'absence d'état, et finalement, nous pourrions vouloir faire expirer l'état pour maintenir la décentralisation d'Ethereum.
Qu'est-ce que c'est, comment ça fonctionne
Aujourd'hui, lorsque vous créez un nouvel objet d'état (cela 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 avec du code, (iii) en définissant un emplacement de stockage qui n'a pas été touché auparavant), cet objet d'état reste dans cet état indéfiniment. 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 réalise 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...
Facilité 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 très 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 de la lecture ou de l'écriture), et avoir un processus qui parcourt l'état pour supprimer les objets d'état avec des dates d'expiration. Cependant, cela introduit un calcul supplémentaire (voire des besoins de stockage), et cela ne peut certainement pas répondre aux exigences de convivialité. Les développeurs ont également du mal à raisonner sur les cas limites impliquant des valeurs de stockage qui sont parfois réinitialisées à zéro. Si vous définissez un minuteur d'expiration dans le cadre du contrat, cela rendra techniquement la vie des développeurs plus facile, mais cela compliquera l'économie : les développeurs doivent réfléchir à la manière de "transférer" le coût de stockage continu aux utilisateurs.
Ces problèmes sont ceux sur lesquels la communauté de développement d'Ethereum a travaillé pendant des années, y compris des propositions telles que "loyer blockchain" et "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 mauvaises" :
Solutions pour l'expiration de certains états
Suggestions sur l'expiration de l'état basé sur le cycle d'adresse.
Expiration partielle de l'état
Certaines propositions d'état d'expiration suivent tous le même principe. Nous divisons l'état en blocs. Chacun stocke de manière permanente "la carte supérieure",
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.
13 J'aime
Récompense
13
6
Partager
Commentaire
0/400
DecentralizedElder
· Il y a 12h
Enfin, je vais maigrir.
Voir l'originalRépondre0
consensus_failure
· 07-08 22:25
La chaîne est trop grosse, elle doit perdre du poids.
Voir l'originalRépondre0
PositionPhobia
· 07-08 09:59
La synchronisation de la lumière est tellement lente que j'ai envie de pleurer !
Voir l'originalRépondre0
GasFeeVictim
· 07-08 09:59
La vitesse de synchronisation est un peu lente... vieux cimetière.
Voir l'originalRépondre0
ResearchChadButBroke
· 07-08 09:56
Ah, laisser le vieux v s'inquiéter autant.
Voir l'originalRépondre0
CryptoAdventurer
· 07-08 09:38
Plan de perte de poids : faire des squats pendant un mois
Avenir d'Ethereum : The Purge Goutte la complexité et le fardeau historique
Vitalik : 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 et tous les comptes créés à tout moment dans le passé 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 augmentation continue de la charge du client et du temps de synchronisation au fil du temps, même si la capacité de la chaîne reste inchangée.
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é croissante du code au fil du 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 propriétés clés qui rendent la blockchain formidable : la durabilité. Vous pouvez mettre un NFT, une lettre d'amour dans les 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 sortant, découvrir qu'il est toujours là, attendant que vous le lisiez et interagissiez. Pour que les DApps puissent se décentraliser complètement et supprimer les clés de mise à jour en toute confiance, ils doivent être sûrs que leurs dépendances ne seront pas mises à jour de manière à les nuire - en particulier L1 lui-même.
Si nous nous engageons à trouver un équilibre entre 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 réussi : la preuve de travail a disparu, le code d'opération SELFDESTRUCT a disparu dans sa plus grande partie, et les nœuds de la chaîne de balises ont stocké jusqu'à six mois de données anciennes. Trouver ce chemin pour Ethereum de manière plus générale et aller vers un résultat final stable à long terme est le défi ultime pour la scalabilité à 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 conserver de manière permanente tous les historiques, voire l'état final.
Réduire la complexité du protocole en éliminant les fonctionnalités inutiles.
Table des matières :
Histoire d'expiration
État d'expiration(状态到期)
Nettoyage des fonctionnalités
Historique d'expiration
résout quel problème ?
Au moment de la rédaction de cet article, un nœud Ethereum complètement synchronisé nécessite environ 1,1 To d'espace disque pour exécuter le client, et il faut également plusieurs centaines de Go d'espace disque pour le client de consensus. La grande majorité de cela est historique : des données sur les blocs, les transactions et les reçus historiques, dont la plupart datent de 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 la simplification des problèmes de stockage historique est que, puisque chaque bloc est lié au bloc précédent par un lien de hachage (et d'autres structures), il suffit d'atteindre un consensus sur le bloc actuel pour parvenir à un consensus sur l'historique. Tant que le réseau parvient à un consensus sur le dernier bloc, tout bloc historique, transaction ou état (solde de compte, nombre aléatoire, code, stockage) peut être fourni par n'importe quel participant individuel ainsi qu'une preuve Merkle, et cette preuve permet à tout autre de vérifier sa validité. Le consensus est un modèle de confiance N/2-of-N, tandis que l'historique est un modèle de confiance N-of-N.
Cela nous offre de nombreuses options sur la façon de stocker les enregistrements historiques. 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 semences 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 méthode ne réduit même pas nécessairement la robustesse des données. Si nous pouvons établir un réseau de 100 000 nœuds, chacun stockant aléatoirement 10 % des enregistrements historiques, alors chaque donnée sera copiée 10 000 fois - tout à fait identique au facteur de copie d'un réseau de 10 000 nœuds, où chaque nœud stocke tout.
Aujourd'hui, Ethereum a commencé à se débarrasser du modèle où tous les nœuds stockent de manière permanente toute l'historique. Les blocs de consensus (c'est-à-dire la partie liée au consensus de 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), durant laquelle chaque nœud est responsable du stockage de tout, puis de créer un réseau pair à pair composé de nœuds Ethereum, stockant 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 facteur de réplication identique. En fait, le Blob a déjà été codé avec 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 l'exécution et les données des blocs de consensus dans le blob.
a quels liens a-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 Portal ;
Comment augmenter la limite de gas (Paradigm).
que faut-il encore faire, quels éléments doivent être pris en compte ?
Les travaux principaux restants comprennent la construction et l'intégration d'une solution distribuée concrète pour stocker l'historique ------ au moins l'historique d'exécution, mais finalement aussi le consensus et le blob. La solution la plus simple est (i) d'introduire simplement une bibliothèque torrent existante, ainsi que (ii) une solution native à Ethereum appelée réseau Portal. Une fois l'un ou l'autre introduit, nous pouvons ouvrir l'EIP-4444. L'EIP-4444 lui-même ne nécessite pas de hard fork, mais il nécessite effectivement une nouvelle version du protocole réseau. Par conséquent, il est utile de l'activer simultanément pour tous les clients, sinon il existe un risque que les clients échouent en raison de la connexion à d'autres nœuds, s'attendant à télécharger l'historique complet mais ne l'obtenant en réalité pas.
Les principaux compromis concernent notre façon de nous efforcer de fournir des données historiques "anciennes". La solution la plus simple consiste à cesser de stocker des historiques anciens dès demain et à s'appuyer sur les nœuds d'archive existants et divers fournisseurs centralisés pour la réplication. C'est facile, mais cela affaiblit le statut 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, "dans quelle mesure 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 d'extrême paranoïa pour (1) impliquerait la preuve de garde : exigeant en fait que chaque validateur de preuve d'enjeu stocke un certain pourcentage d'historique et vérifie régulièrement de manière cryptographique s'ils le font. Une approche plus douce consiste à établir une norme volontaire pour le pourcentage d'historique stocké par chaque client.
Pour (2), l'implémentation de base ne concerne que le travail déjà réalisé aujourd'hui : le Portal a déjà stocké des fichiers ERA contenant l'ensemble de l'historique d'Ethereum. Une implémentation 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 depuis le réseau Portal.
Comment interagit-il avec les autres parties de la feuille de route ?
Si nous voulons rendre l'exécution ou le démarrage des nœuds extrêmement facile, alors réduire les besoins de stockage historique peut être considéré comme plus important que la non-état : sur les 1,1 To nécessaires au nœud, environ 300 Go sont l'état, le reste, soit environ 800 Go, est devenu historique. Ce n'est qu'en réalisant la non-état et l'EIP-4444 que la vision de faire fonctionner un nœud Ethereum sur une montre intelligente et de le configurer en quelques minutes peut être atteinte.
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, de nombreuses lignes de code peuvent désormais être supprimées en toute sécurité, car tous les slots de stockage vides créés lors de l'attaque DoS de 2016 ont été supprimés. Maintenant que le passage à la preuve d'enjeu est devenu une réalité historique, les clients peuvent supprimer en toute sécurité tout le code lié à la preuve de travail.
Expiration de l'état
résout quel problème ?
Même si nous avons éliminé le besoin de stocker l'historique côté client, la demande de stockage du client continuera d'augmenter, d'environ 50 Go par an, en raison de la croissance continue de l'état : soldes de compte et nombres aléatoires, code de contrat et stockage de contrat. Les utilisateurs peuvent payer des frais uniques, ce qui impose un fardeau aux clients Ethereum actuels et futurs.
L'état est plus difficile à "expirer" que l'historique, car l'EVM est fondamentalement conçu autour de l'hypothèse selon laquelle : 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 l'absence d'état, certains pensent que ce problème n'est peut-être pas si grave : seuls les constructeurs de blocs spécialisés ont réellement besoin de stocker l'état, tandis que tous les autres nœuds (y compris 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 l'absence d'état, et finalement, nous pourrions vouloir faire expirer l'état pour maintenir la décentralisation d'Ethereum.
Qu'est-ce que c'est, comment ça fonctionne
Aujourd'hui, lorsque vous créez un nouvel objet d'état (cela 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 avec du code, (iii) en définissant un emplacement de stockage qui n'a pas été touché auparavant), cet objet d'état reste dans cet état indéfiniment. 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 réalise 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...
Facilité 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 très 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 de la lecture ou de l'écriture), et avoir un processus qui parcourt l'état pour supprimer les objets d'état avec des dates d'expiration. Cependant, cela introduit un calcul supplémentaire (voire des besoins de stockage), et cela ne peut certainement pas répondre aux exigences de convivialité. Les développeurs ont également du mal à raisonner sur les cas limites impliquant des valeurs de stockage qui sont parfois réinitialisées à zéro. Si vous définissez un minuteur d'expiration dans le cadre du contrat, cela rendra techniquement la vie des développeurs plus facile, mais cela compliquera l'économie : les développeurs doivent réfléchir à la manière de "transférer" le coût de stockage continu aux utilisateurs.
Ces problèmes sont ceux sur lesquels la communauté de développement d'Ethereum a travaillé pendant des années, y compris des propositions telles que "loyer blockchain" et "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 mauvaises" :
Expiration partielle de l'état
Certaines propositions d'état d'expiration suivent tous le même principe. Nous divisons l'état en blocs. Chacun stocke de manière permanente "la carte supérieure",