Um dos problemas do Ethereum, ou de qualquer blockchain, é que seu tamanho cresce ao longo do tempo. Isso significa um aumento na complexidade de seu código e em seus requisitos de armazenamento.
Uma blockchain deve reter todos os dados ao longo de sua história, que precisam ser armazenados por todos os clientes e baixados por novos clientes. Isso leva a um aumento constante na carga do cliente e no tempo de sincronização.
Além disso, a complexidade do código aumenta ao longo do tempo porque é “mais fácil adicionar um novo recurso do que remover um antigo”. Portanto, a indústria deve trabalhar para conter essas tendências crescentes, enquanto preserva a permanência do Ethereum. Uma proposta está presente: O Purge — um plano com três partes que visa simplificar a blockchain e reduzir sua carga de dados.
Parte 1: Expiração da História
Um nó Ethereum totalmente sincronizado atualmente requer cerca de 1,1 TB de espaço de armazenamento para o cliente de execução. Ele precisa de algumas centenas a mais de gigabytes para o cliente de consenso. A maior parte desses dados é histórica, como dados sobre blocos, transações e recibos, muitos dos quais têm vários anos. Para armazenar toda essa história, o espaço em disco necessário continua aumentando em centenas de gigabytes a cada ano.
A solução proposta é chamada de Expiração da História.
Cada bloco em uma blockchain aponta para o bloco anterior por meio de um link hash. Isso significa que o consenso no bloco atual indica consenso na história, reduzindo os requisitos de armazenamento.
Enquanto a rede tiver consenso sobre o bloco atual, qualquer dado histórico pode ser fornecido por um único ator através de uma prova Merkle, que permite a verificação da integridade dos dados. Isso significa que, em vez de cada nó armazenar todos os dados, cada nó poderia armazenar uma porcentagem dos dados.
O Ethereum já tomou medidas para reduzir os requisitos de armazenamento — certas informações agora têm uma data de expiração, como blocos de consenso armazenados por seis meses. A proposta de EIP-4444 visa limitar o período de armazenamento para blocos históricos e recibos a um ano.
Parte 2: Expiração do Estado
A remoção da necessidade de armazenar toda a história não resolve completamente o problema do aumento dos requisitos de armazenamento. Um cliente precisa aumentar sua capacidade de armazenamento em cerca de 50GB anualmente devido ao “crescimento contínuo do estado: saldos de contas e nonces, código de contratos e armazenamento de contratos.”
Um novo objeto de estado pode ser criado de três maneiras: criando uma nova conta, enviando ETH para uma nova conta e definindo um slot de armazenamento anteriormente inativo. Uma vez que um objeto de estado é criado, ele permanece no estado para sempre.
A solução para expirar objetos de estado automaticamente ao longo do tempo precisa ser eficiente. Isso implica que não devem ocorrer grandes perdas de acesso aos tokens, e que os desenvolvedores não enfrentem grandes inconvenientes no processo.
Duas proporções são sugeridas para as soluções:
- Soluções de expiração parcial de estado
- Propostas de expiração de estado baseadas em períodos de endereço.
Expiração Parcial do Estado
As propostas funcionam com base na divisão do estado em “chunks”. Os dados dentro dos chunks são armazenados somente se forem acessados recentemente. Um mecanismo de “ressurreição” permite a recuperação de dados em um chunk se não estiverem armazenados, fornecendo prova da existência anterior dos dados.
Expiração de Estado Baseada em Períodos de Endereço
Esta proposta sugere listas crescentes de árvores de estado. Qualquer estado que seja lido ou escrito é atualizado na árvore de estado mais recente. Uma nova árvore de estado é gerada anualmente. As árvores de estado mais antigas estão congeladas e os nós precisam armazenar apenas as duas mais recentes.
Limpeza de Recursos
Com o tempo, todos os protocolos se tornam complexos, não importa quão simples tenham começado.
“Se não quisermos que o Ethereum entre em um buraco negro de complexidade em constante aumento, precisamos fazer uma das duas coisas: (i) parar de fazer mudanças e ossificar o protocolo, (ii) ser capaz de realmente remover recursos e reduzir a complexidade.”
Limpar a complexidade do Ethereum requer várias pequenas correções, como remover opcodes desnecessários e realizar melhorias na análise estática, garantindo um armazenamento de dados mais eficiente na blockchain.
Quais os passos para implementar a Expiração da História no Ethereum?
Para implementar a Expiração da História no Ethereum, vários passos e considerações são delineados nas propostas e discussões em torno desse conceito. Aqui estão os pontos-chave:
Expiração da História (History Expiration)
- Redução dos Requisitos de Armazenamento: A ideia central é reduzir a necessidade de armazenar toda a história da blockchain. Atualmente, um nó Ethereum totalmente sincronizado requer cerca de 1,1 TB de espaço de armazenamento para o cliente de execução, com centenas de gigabytes adicionais para o cliente de consenso.
- Uso de Provas Merkle: A proposta sugere que, enquanto a rede tiver consenso sobre o bloco atual, qualquer dado histórico pode ser fornecido por um único ator através de uma prova Merkle. Isso permite a verificação da integridade dos dados sem que cada nó precise armazenar todos os dados históricos.
- Limitação do Período de Armazenamento: A proposta de EIP-4444 visa limitar o período de armazenamento para blocos históricos e recibos a um ano. Isso significa que certas informações teriam uma data de expiração, reduzindo os requisitos de armazenamento a longo prazo.
Implementação Prática
- Data de Expiração para Dados Históricos: Estabelecer uma data de expiração para os dados históricos, como blocos de consenso armazenados por seis meses ou um ano, dependendo da proposta específica.
- Uso de Árvores de Merkle: Utilizar árvores de Merkle para permitir que os nós verifiquem a integridade dos dados históricos sem precisar armazená-los todos.
- Distribuição dos Dados: Permitir que cada nó armazene apenas uma porcentagem dos dados, com a possibilidade de recuperar dados históricos através de provas Merkle fornecidas por outros atores na rede.
Essas medidas visam reduzir significativamente os requisitos de armazenamento e a complexidade associada ao armazenamento da história completa da blockchain.
Conclusão
A implementação da Expiração da História no Ethereum representa uma solução inovadora para os desafios de armazenamento e dados enfrentados pela rede. Ao adotar práticas como a utilização de provas Merkle e a limitação do período de armazenamento, a comunidade Ethereum pode garantir uma blockchain mais eficiente e sustentável. Essas soluções não apenas facilitam a manutenção da rede, mas também promovem um ambiente mais acessível para novos usuários e desenvolvedores.
Fontes de Pesquisa:
- Proposta de Expiração da História no Ethereum
- EIP-4444: Limitar o período de armazenamento para blocos históricos e recibos
Fonte
#cryptoalch, #Ethereum, #blockchain, #armazenamento, #dados, #soluções