Um dos desafios que o Ethereum enfrenta é que, por padrão, a expansão e a complexidade de qualquer protocolo de blockchain tendem a aumentar com o tempo. Isso ocorre em dois lugares:
Dados históricos: Todas as transações realizadas e todas as contas criadas em qualquer momento da história devem ser armazenadas permanentemente por todos os clientes e baixadas por qualquer novo cliente, a fim de serem totalmente sincronizadas com a rede. Isso fará com que a carga do cliente e o tempo de sincronização aumentem continuamente ao longo do tempo, mesmo que a capacidade da cadeia permaneça inalterada.
Função do protocolo: adicionar novas funcionalidades é muito mais fácil do que remover funcionalidades antigas, levando a um aumento da complexidade do código ao longo do tempo.
Para que o Ethereum possa se manter a longo prazo, precisamos exercer uma forte pressão contrária a essas duas tendências, reduzindo a complexidade e a expansão ao longo do tempo. Mas, ao mesmo tempo, precisamos preservar uma das características-chave que torna a blockchain grandiosa: a persistência. Você pode colocar um NFT, uma carta de amor em um dado de chamada de transação, ou um contrato inteligente contendo 1.000.000 de dólares na cadeia, entrar em uma caverna por dez anos e ao sair descobrir que ainda está lá, esperando por você para ler e interagir. Para que os DApps possam se descentralizar completamente e remover as chaves de atualização, eles precisam ter certeza de que suas dependências não serão atualizadas de maneira a quebrá-las - especialmente a L1 em si.
Se nos decidirmos firmemente a equilibrar essas duas demandas e a minimizar ou reverter a gordura, a complexidade e o declínio enquanto mantemos a continuidade, isso é absolutamente possível. Os organismos podem fazer isso: embora a maioria dos organismos envelheça com o tempo, alguns poucos sortudos não o fazem. Mesmo os sistemas sociais podem ter uma vida útil muito longa. Em certos casos, o Ethereum já teve sucesso: a prova de trabalho desapareceu, o código de operação SELFDESTRUCT desapareceu na maior parte, e os nós da cadeia de beacon armazenaram dados antigos por até seis meses. Encontrar esse caminho para o Ethereum de uma forma mais genérica e caminhar em direção a um resultado final de estabilidade a longo prazo é o desafio supremo para a escalabilidade a longo prazo do Ethereum, a sustentabilidade técnica e até a segurança.
The Purge: objetivo principal.
Reduzir os requisitos de armazenamento do cliente, eliminando ou diminuindo a necessidade de cada nó armazenar permanentemente todos os históricos e até mesmo o estado final.
Reduzir a complexidade do protocolo eliminando funcionalidades desnecessárias.
Índice do artigo:
Histórico de expiração
Expiração do estado
Limpeza de características
Expiração da história
Resolve que problema?
Até o momento em que este artigo foi escrito, um nó Ethereum totalmente sincronizado requer aproximadamente 1,1 TB de espaço em disco para executar o cliente, além de centenas de GB de espaço em disco para o cliente de consenso. A maior parte disso é histórica: dados sobre blocos históricos, transações e recibos, a maior parte dos quais tem vários anos de idade. Isso significa que, mesmo que o limite de Gas não aumente, o tamanho do nó continuará a aumentar centenas de GB a cada ano.
O que é, como funciona?
Uma característica chave que simplifica o problema do armazenamento histórico é que, como cada bloco aponta para o bloco anterior através de um link hash (e outras estruturas), é suficiente alcançar consenso sobre o atual para alcançar consenso sobre o histórico. Desde que a rede alcance consenso sobre o bloco mais recente, qualquer bloco histórico, transação ou estado (saldo da conta, número aleatório, código, armazenamento) pode ser fornecido por qualquer participante único, juntamente com a prova Merkle, e essa prova permite que qualquer outra pessoa verifique sua correção. O consenso é um modelo de confiança N/2-of-N, enquanto o histórico é um modelo de confiança N-of-N.
Isto nos oferece muitas opções sobre como armazenar o histórico. Uma escolha natural é uma rede onde cada nó armazena apenas uma pequena parte dos dados. Este é o modo como as redes de sementes operam há décadas: embora a rede armazene e distribua milhões de arquivos, cada participante armazena e distribui apenas alguns deles. Talvez contra a intuição, este método pode até não reduzir a robustez dos dados. Se, ao tornar a operação dos nós mais econômica, pudermos construir uma rede com 100.000 nós, onde cada nó armazena aleatoriamente 10% do histórico, então cada dado será copiado 10.000 vezes - exatamente o mesmo fator de cópia de uma rede de 10.000 nós, onde cada nó armazena tudo.
Atualmente, o Ethereum começou a se afastar do modelo em que todos os nós armazenam permanentemente todo o histórico. Blocos de consenso (ou seja, a parte relacionada ao consenso de prova de participação) armazenam apenas cerca de 6 meses. Blobs armazenam apenas cerca de 18 dias. O EIP-4444 visa introduzir um período de armazenamento de um ano para blocos históricos e recibos. O objetivo de longo prazo é estabelecer um período unificado (possivelmente cerca de 18 dias), durante o qual cada nó é responsável por armazenar tudo, e depois estabelecer uma rede ponto a ponto composta por nós do Ethereum, para armazenar dados antigos de forma distribuída.
Os códigos de apagamento podem ser usados para aumentar a robustez, mantendo o fator de replicação o mesmo. Na verdade, o Blob já implementou códigos de apagamento para suportar amostragem de disponibilidade de dados. A solução mais simples pode ser reutilizar esses códigos de apagamento e também colocar a execução e os dados do bloco de consenso no blob.
tem que relação com as pesquisas existentes?
EIP-4444;
Torrents e EIP-4444;
Rede de portal;
Portal Network e EIP-4444;
Armazenamento e recuperação distribuídos de objetos SSZ no Portal;
Como aumentar o limite de gas (Paradigm).
O que mais precisa ser feito, o que precisa ser ponderado?
O trabalho principal restante inclui a construção e integração de uma solução distribuída específica para armazenar registros históricos------ pelo menos o histórico de execução, mas eventualmente também incluindo consenso e blob. A solução mais simples é (i) simplesmente introduzir uma biblioteca torrent existente, assim como (ii) chamada solução nativa do Ethereum chamada Portal Network. Uma vez que qualquer um deles seja introduzido, podemos abrir o EIP-4444. O EIP-4444 em si não requer um hard fork, mas de fato requer uma nova versão do protocolo de rede. Portanto, é valioso ativá-lo simultaneamente para todos os clientes, caso contrário, há o risco de clientes falharem por se conectarem a outros nós esperando baixar o histórico completo, mas na verdade não o obtendo.
Os principais trade-offs envolvem como nos esforçamos para fornecer dados históricos "antigos". A solução mais simples é parar de armazenar dados históricos antigos amanhã e confiar nos nós de arquivo existentes e em vários provedores centralizados para replicação. Isso é fácil, mas enfraquece a posição do Ethereum como um local de registro permanente. Um caminho mais difícil, mas mais seguro, é primeiro construir e integrar uma rede torrent para armazenar o histórico de forma distribuída. Aqui, "quanto nos esforçamos" tem duas dimensões:
Como nos esforçamos para garantir que o maior conjunto de nós realmente armazene todos os dados?
Quão profunda é a integração do armazenamento histórico no protocolo?
Um método extremamente obsessivo para (1) envolveria a prova de custódia: na prática, exigindo que cada validador de prova de participação armazenasse uma proporção específica de registros históricos e verificasse regularmente, de forma criptografada, se o faz. Um método mais brando seria estabelecer um padrão voluntário para a porcentagem de histórico armazenado por cada cliente.
Para (2), a implementação básica envolve apenas o trabalho que já foi concluído hoje: o Portal já armazenou arquivos ERA que contêm toda a história do Ethereum. Uma implementação mais completa envolveria realmente conectá-lo ao processo de sincronização, de modo que, se alguém quisesse sincronizar um nó de armazenamento de histórico completo ou um nó de arquivo, mesmo que não haja outros nós de arquivo online, eles poderiam fazê-lo através da sincronização direta da rede do portal.
Como interage com outras partes do roteiro?
Se quisermos tornar a execução ou o início dos nós extremamente fácil, então reduzir a necessidade de armazenamento histórico pode ser considerado mais importante do que a ausência de estado: nos 1,1 TB necessários para o nó, cerca de 300 GB são estado, enquanto os restantes cerca de 800 GB tornaram-se históricos. Apenas alcançando a ausência de estado e o EIP-4444 é que podemos realizar a visão de executar um nó Ethereum em um smartwatch e configurá-lo em apenas alguns minutos.
A limitação do armazenamento histórico torna a implementação de nós Ethereum mais viável, suportando apenas a versão mais recente do protocolo, o que os torna mais simples. Por exemplo, agora é possível remover com segurança muitas linhas de código, pois todos os slots de armazenamento vazios criados durante o ataque DoS de 2016 foram removidos. Uma vez que a transição para a prova de participação se tornou história, os clientes podem remover com segurança todo o código relacionado à prova de trabalho.
Expiração de estado
Resolve que problema?
Mesmo que eliminemos a necessidade de os clientes armazenarem o histórico, a demanda de armazenamento do cliente continuará a crescer, cerca de 50 GB por ano, à medida que o estado continua a crescer: saldos de conta e números aleatórios, código do contrato e armazenamento do contrato. Os usuários podem pagar uma taxa única, o que trará uma carga para os clientes de Ethereum atuais e futuros.
O estado é mais difícil de "expirar" do que a história, porque a EVM foi projetada fundamentalmente em torno da suposição de que, uma vez criado o objeto de estado, ele sempre existirá e poderá ser lido a qualquer momento por qualquer transação. Se introduzirmos a ausência de estado, alguns acreditam que esse problema talvez não seja tão grave assim: apenas classes de construtores de blocos especializados precisariam realmente armazenar o estado, enquanto todos os outros nós (inclusive aqueles que geram listas!) poderiam operar sem estado. No entanto, há uma perspectiva que considera que não queremos depender demais da ausência de estado e, em última análise, poderíamos querer fazer o estado expirar para manter a descentralização do Ethereum.
O que é isso, como funciona?
Hoje, quando você cria um novo objeto de estado (que pode ocorrer de uma das três maneiras a seguir: (i) enviando ETH para uma nova conta, (ii) criando uma nova conta usando código, (iii) configurando um slot de armazenamento que nunca foi tocado antes), esse objeto de estado permanece nesse estado para sempre. Em vez disso, o que queremos é que o objeto expire automaticamente com o tempo. O desafio crucial é fazer isso de uma maneira que atenda a três objetivos:
Eficiência: não é necessário um grande cálculo adicional para executar o processo de vencimento.
Facilidade de uso: se alguém entrar numa caverna durante cinco anos e voltar, não deverá perder o acesso a posições de ETH, ERC20, NFT, CDP...
Amigabilidade para desenvolvedores: os desenvolvedores não precisam mudar para um modelo de pensamento totalmente desconhecido. Além disso, as aplicações que estão atualmente rígidas e não atualizadas devem continuar a funcionar normalmente.
Não atender a esses objetivos torna fácil resolver problemas. Por exemplo, você pode fazer com que cada objeto de estado armazene também um contador de data de expiração (que pode ser estendido queimando ETH, o que pode ocorrer automaticamente a qualquer momento durante a leitura ou escrita), e ter um processo que percorre o estado para remover objetos de estado com datas de expiração. No entanto, isso introduz um cálculo adicional (e até mesmo demandas de armazenamento), e definitivamente não pode atender aos requisitos de facilidade de uso. Os desenvolvedores também têm dificuldade em raciocinar sobre casos extremos onde os valores armazenados às vezes são redefinidos para zero. Se você configurar um temporizador de expiração dentro do escopo do contrato, isso tecnicamente tornaria a vida dos desenvolvedores mais fácil, mas tornaria a economia mais difícil: os desenvolvedores devem considerar como "transferir" o custo contínuo de armazenamento para os usuários.
Estes são problemas que a comunidade de desenvolvimento central do Ethereum tem trabalhado para resolver ao longo dos anos, incluindo propostas como "aluguel de blockchain" e "renovação". No final, combinámos as melhores partes das propostas e concentrámo-nos em duas categorias de "soluções conhecidas como as menos piores":
Solução para parte do estado expirado
Sugestão de expiração de estado baseada no ciclo de endereço.
Expiração parcial do estado
Algumas propostas de estado expirado seguem os mesmos princípios. Dividimos o estado em blocos. Cada um armazena permanentemente o "mapeamento de topo".
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.
16 Curtidas
Recompensa
16
7
Compartilhar
Comentário
0/400
GasFeeCrier
· 07-11 06:47
Quando é que vai haver mesmo um purge?
Ver originalResponder0
DecentralizedElder
· 07-09 20:51
Finalmente vou emagrecer!
Ver originalResponder0
consensus_failure
· 07-08 22:25
A cadeia está muito gorda, precisa emagrecer.
Ver originalResponder0
PositionPhobia
· 07-08 09:59
A sincronização de luz está tão travada que dá vontade de chorar!
Ver originalResponder0
GasFeeVictim
· 07-08 09:59
A velocidade de sincronização está um pouco lenta... velha sepultura
Ethereum futuro plano: The Purge Gota complexidade e carga histórica
Vitalik: O possível futuro do Ethereum, The Purge
Um dos desafios que o Ethereum enfrenta é que, por padrão, a expansão e a complexidade de qualquer protocolo de blockchain tendem a aumentar com o tempo. Isso ocorre em dois lugares:
Dados históricos: Todas as transações realizadas e todas as contas criadas em qualquer momento da história devem ser armazenadas permanentemente por todos os clientes e baixadas por qualquer novo cliente, a fim de serem totalmente sincronizadas com a rede. Isso fará com que a carga do cliente e o tempo de sincronização aumentem continuamente ao longo do tempo, mesmo que a capacidade da cadeia permaneça inalterada.
Função do protocolo: adicionar novas funcionalidades é muito mais fácil do que remover funcionalidades antigas, levando a um aumento da complexidade do código ao longo do tempo.
Para que o Ethereum possa se manter a longo prazo, precisamos exercer uma forte pressão contrária a essas duas tendências, reduzindo a complexidade e a expansão ao longo do tempo. Mas, ao mesmo tempo, precisamos preservar uma das características-chave que torna a blockchain grandiosa: a persistência. Você pode colocar um NFT, uma carta de amor em um dado de chamada de transação, ou um contrato inteligente contendo 1.000.000 de dólares na cadeia, entrar em uma caverna por dez anos e ao sair descobrir que ainda está lá, esperando por você para ler e interagir. Para que os DApps possam se descentralizar completamente e remover as chaves de atualização, eles precisam ter certeza de que suas dependências não serão atualizadas de maneira a quebrá-las - especialmente a L1 em si.
Se nos decidirmos firmemente a equilibrar essas duas demandas e a minimizar ou reverter a gordura, a complexidade e o declínio enquanto mantemos a continuidade, isso é absolutamente possível. Os organismos podem fazer isso: embora a maioria dos organismos envelheça com o tempo, alguns poucos sortudos não o fazem. Mesmo os sistemas sociais podem ter uma vida útil muito longa. Em certos casos, o Ethereum já teve sucesso: a prova de trabalho desapareceu, o código de operação SELFDESTRUCT desapareceu na maior parte, e os nós da cadeia de beacon armazenaram dados antigos por até seis meses. Encontrar esse caminho para o Ethereum de uma forma mais genérica e caminhar em direção a um resultado final de estabilidade a longo prazo é o desafio supremo para a escalabilidade a longo prazo do Ethereum, a sustentabilidade técnica e até a segurança.
The Purge: objetivo principal.
Reduzir os requisitos de armazenamento do cliente, eliminando ou diminuindo a necessidade de cada nó armazenar permanentemente todos os históricos e até mesmo o estado final.
Reduzir a complexidade do protocolo eliminando funcionalidades desnecessárias.
Índice do artigo:
Histórico de expiração
Expiração do estado
Limpeza de características
Expiração da história
Resolve que problema?
Até o momento em que este artigo foi escrito, um nó Ethereum totalmente sincronizado requer aproximadamente 1,1 TB de espaço em disco para executar o cliente, além de centenas de GB de espaço em disco para o cliente de consenso. A maior parte disso é histórica: dados sobre blocos históricos, transações e recibos, a maior parte dos quais tem vários anos de idade. Isso significa que, mesmo que o limite de Gas não aumente, o tamanho do nó continuará a aumentar centenas de GB a cada ano.
O que é, como funciona?
Uma característica chave que simplifica o problema do armazenamento histórico é que, como cada bloco aponta para o bloco anterior através de um link hash (e outras estruturas), é suficiente alcançar consenso sobre o atual para alcançar consenso sobre o histórico. Desde que a rede alcance consenso sobre o bloco mais recente, qualquer bloco histórico, transação ou estado (saldo da conta, número aleatório, código, armazenamento) pode ser fornecido por qualquer participante único, juntamente com a prova Merkle, e essa prova permite que qualquer outra pessoa verifique sua correção. O consenso é um modelo de confiança N/2-of-N, enquanto o histórico é um modelo de confiança N-of-N.
Isto nos oferece muitas opções sobre como armazenar o histórico. Uma escolha natural é uma rede onde cada nó armazena apenas uma pequena parte dos dados. Este é o modo como as redes de sementes operam há décadas: embora a rede armazene e distribua milhões de arquivos, cada participante armazena e distribui apenas alguns deles. Talvez contra a intuição, este método pode até não reduzir a robustez dos dados. Se, ao tornar a operação dos nós mais econômica, pudermos construir uma rede com 100.000 nós, onde cada nó armazena aleatoriamente 10% do histórico, então cada dado será copiado 10.000 vezes - exatamente o mesmo fator de cópia de uma rede de 10.000 nós, onde cada nó armazena tudo.
Atualmente, o Ethereum começou a se afastar do modelo em que todos os nós armazenam permanentemente todo o histórico. Blocos de consenso (ou seja, a parte relacionada ao consenso de prova de participação) armazenam apenas cerca de 6 meses. Blobs armazenam apenas cerca de 18 dias. O EIP-4444 visa introduzir um período de armazenamento de um ano para blocos históricos e recibos. O objetivo de longo prazo é estabelecer um período unificado (possivelmente cerca de 18 dias), durante o qual cada nó é responsável por armazenar tudo, e depois estabelecer uma rede ponto a ponto composta por nós do Ethereum, para armazenar dados antigos de forma distribuída.
Os códigos de apagamento podem ser usados para aumentar a robustez, mantendo o fator de replicação o mesmo. Na verdade, o Blob já implementou códigos de apagamento para suportar amostragem de disponibilidade de dados. A solução mais simples pode ser reutilizar esses códigos de apagamento e também colocar a execução e os dados do bloco de consenso no blob.
tem que relação com as pesquisas existentes?
EIP-4444;
Torrents e EIP-4444;
Rede de portal;
Portal Network e EIP-4444;
Armazenamento e recuperação distribuídos de objetos SSZ no Portal;
Como aumentar o limite de gas (Paradigm).
O que mais precisa ser feito, o que precisa ser ponderado?
O trabalho principal restante inclui a construção e integração de uma solução distribuída específica para armazenar registros históricos------ pelo menos o histórico de execução, mas eventualmente também incluindo consenso e blob. A solução mais simples é (i) simplesmente introduzir uma biblioteca torrent existente, assim como (ii) chamada solução nativa do Ethereum chamada Portal Network. Uma vez que qualquer um deles seja introduzido, podemos abrir o EIP-4444. O EIP-4444 em si não requer um hard fork, mas de fato requer uma nova versão do protocolo de rede. Portanto, é valioso ativá-lo simultaneamente para todos os clientes, caso contrário, há o risco de clientes falharem por se conectarem a outros nós esperando baixar o histórico completo, mas na verdade não o obtendo.
Os principais trade-offs envolvem como nos esforçamos para fornecer dados históricos "antigos". A solução mais simples é parar de armazenar dados históricos antigos amanhã e confiar nos nós de arquivo existentes e em vários provedores centralizados para replicação. Isso é fácil, mas enfraquece a posição do Ethereum como um local de registro permanente. Um caminho mais difícil, mas mais seguro, é primeiro construir e integrar uma rede torrent para armazenar o histórico de forma distribuída. Aqui, "quanto nos esforçamos" tem duas dimensões:
Como nos esforçamos para garantir que o maior conjunto de nós realmente armazene todos os dados?
Quão profunda é a integração do armazenamento histórico no protocolo?
Um método extremamente obsessivo para (1) envolveria a prova de custódia: na prática, exigindo que cada validador de prova de participação armazenasse uma proporção específica de registros históricos e verificasse regularmente, de forma criptografada, se o faz. Um método mais brando seria estabelecer um padrão voluntário para a porcentagem de histórico armazenado por cada cliente.
Para (2), a implementação básica envolve apenas o trabalho que já foi concluído hoje: o Portal já armazenou arquivos ERA que contêm toda a história do Ethereum. Uma implementação mais completa envolveria realmente conectá-lo ao processo de sincronização, de modo que, se alguém quisesse sincronizar um nó de armazenamento de histórico completo ou um nó de arquivo, mesmo que não haja outros nós de arquivo online, eles poderiam fazê-lo através da sincronização direta da rede do portal.
Como interage com outras partes do roteiro?
Se quisermos tornar a execução ou o início dos nós extremamente fácil, então reduzir a necessidade de armazenamento histórico pode ser considerado mais importante do que a ausência de estado: nos 1,1 TB necessários para o nó, cerca de 300 GB são estado, enquanto os restantes cerca de 800 GB tornaram-se históricos. Apenas alcançando a ausência de estado e o EIP-4444 é que podemos realizar a visão de executar um nó Ethereum em um smartwatch e configurá-lo em apenas alguns minutos.
A limitação do armazenamento histórico torna a implementação de nós Ethereum mais viável, suportando apenas a versão mais recente do protocolo, o que os torna mais simples. Por exemplo, agora é possível remover com segurança muitas linhas de código, pois todos os slots de armazenamento vazios criados durante o ataque DoS de 2016 foram removidos. Uma vez que a transição para a prova de participação se tornou história, os clientes podem remover com segurança todo o código relacionado à prova de trabalho.
Expiração de estado
Resolve que problema?
Mesmo que eliminemos a necessidade de os clientes armazenarem o histórico, a demanda de armazenamento do cliente continuará a crescer, cerca de 50 GB por ano, à medida que o estado continua a crescer: saldos de conta e números aleatórios, código do contrato e armazenamento do contrato. Os usuários podem pagar uma taxa única, o que trará uma carga para os clientes de Ethereum atuais e futuros.
O estado é mais difícil de "expirar" do que a história, porque a EVM foi projetada fundamentalmente em torno da suposição de que, uma vez criado o objeto de estado, ele sempre existirá e poderá ser lido a qualquer momento por qualquer transação. Se introduzirmos a ausência de estado, alguns acreditam que esse problema talvez não seja tão grave assim: apenas classes de construtores de blocos especializados precisariam realmente armazenar o estado, enquanto todos os outros nós (inclusive aqueles que geram listas!) poderiam operar sem estado. No entanto, há uma perspectiva que considera que não queremos depender demais da ausência de estado e, em última análise, poderíamos querer fazer o estado expirar para manter a descentralização do Ethereum.
O que é isso, como funciona?
Hoje, quando você cria um novo objeto de estado (que pode ocorrer de uma das três maneiras a seguir: (i) enviando ETH para uma nova conta, (ii) criando uma nova conta usando código, (iii) configurando um slot de armazenamento que nunca foi tocado antes), esse objeto de estado permanece nesse estado para sempre. Em vez disso, o que queremos é que o objeto expire automaticamente com o tempo. O desafio crucial é fazer isso de uma maneira que atenda a três objetivos:
Eficiência: não é necessário um grande cálculo adicional para executar o processo de vencimento.
Facilidade de uso: se alguém entrar numa caverna durante cinco anos e voltar, não deverá perder o acesso a posições de ETH, ERC20, NFT, CDP...
Amigabilidade para desenvolvedores: os desenvolvedores não precisam mudar para um modelo de pensamento totalmente desconhecido. Além disso, as aplicações que estão atualmente rígidas e não atualizadas devem continuar a funcionar normalmente.
Não atender a esses objetivos torna fácil resolver problemas. Por exemplo, você pode fazer com que cada objeto de estado armazene também um contador de data de expiração (que pode ser estendido queimando ETH, o que pode ocorrer automaticamente a qualquer momento durante a leitura ou escrita), e ter um processo que percorre o estado para remover objetos de estado com datas de expiração. No entanto, isso introduz um cálculo adicional (e até mesmo demandas de armazenamento), e definitivamente não pode atender aos requisitos de facilidade de uso. Os desenvolvedores também têm dificuldade em raciocinar sobre casos extremos onde os valores armazenados às vezes são redefinidos para zero. Se você configurar um temporizador de expiração dentro do escopo do contrato, isso tecnicamente tornaria a vida dos desenvolvedores mais fácil, mas tornaria a economia mais difícil: os desenvolvedores devem considerar como "transferir" o custo contínuo de armazenamento para os usuários.
Estes são problemas que a comunidade de desenvolvimento central do Ethereum tem trabalhado para resolver ao longo dos anos, incluindo propostas como "aluguel de blockchain" e "renovação". No final, combinámos as melhores partes das propostas e concentrámo-nos em duas categorias de "soluções conhecidas como as menos piores":
Expiração parcial do estado
Algumas propostas de estado expirado seguem os mesmos princípios. Dividimos o estado em blocos. Cada um armazena permanentemente o "mapeamento de topo".