Share this article

Bloat de Blockchain: Como o Ethereum está lidando com problemas de armazenamento

Com correções de longo prazo, como sharding, ainda distantes, os desenvolvedores do Ethereum estão fazendo o software rodar de forma mais eficiente para aliviar os crescentes requisitos de armazenamento.

shutterstock_134428790

24.270 tokens. 27.358 transações pendentes. 463.713gatinhos digitais.

O Ethereum tem sido palco de muita atividade ultimamente e, embora muitos entusiastas de Cripto vejam isso como um sinal positivo, à medida que o uso da rede aumenta, sua história fica mais longa e seu blockchain mais indisciplinado.

STORY CONTINUES BELOW
Don't miss another story.Subscribe to the Crypto for Advisors Newsletter today. See all newsletters

E embora o congestionamento da rede, que leva a atrasos nas transações e aumento nas taxas, tenha ganhado destaque, há outro problema que essa escala causa: um banco de dados crescente que gera custos significativos de armazenamento para usuários que desejam executar um nó completo.

Esse banco de dados, chamado de estado Ethereum , contém todos os cálculos que precisam ser memorizados pelos computadores que dão suporte à plataforma e ao próprio blockchain Ethereum . E com os custos (tanto em tempo quanto em dinheiro) de armazenar o estado aumentando, cada vez menos pessoas estão escolhendo executar nós completos, o que muitos temem que centralizará a rede nas mãos de apenas alguns árbitros.

E os desenvolvedores reconhecem o problema.

Por um lado, os desenvolvedores do Ethereum estão bem encaminhados na engenharia de mudanças no nível do protocolo, como fragmentação, com o objetivo de minimizar o banco de dados.

Mas como essas tecnologias ainda estão em desenvolvimento, outras partes interessadas, principalmente aquelas que executam clientes Ethereum – o software necessário para que os usuários se comuniquem com o blockchain – estão sob nova pressão para lidar com o crescimento do banco de dados do estado.

"O fato de que melhorar essas coisas é crítico é conhecido desde o final de 2016, as ideias estão flutuando por meio ano a mais de um ano. Onde estão as implementações?" disse o criador do Ethereum Vitalik Buterin em um canal de desenvolvedor recentemente.

A frustração é palpável tanto com Buterin quanto com Afri Schoedon, que gerencia comunicações técnicas no provedor de software cliente Ethereum Parity. Schoedon disse ao CoinDesk:

"No ritmo de crescimento atual, é previsível que o estado cresça muito rápido este ano, a um ponto em que seria dificilmente administrável em dispositivos pequenos."

Em um esforço para limitar os efeitos do estado difícil de manejar, os dois clientes Ethereum mais populares – Geth e Parity – lançaram recentemente atualizações que tentam melhorar a situação.

Turboalimentado

O primeira atualização, lançado na semana passada pela Parity, reduziu os requisitos de armazenamento ao eliminar arquivos temporários desnecessários produzidos enquanto o software memoriza o histórico do Ethereum.

Ao minimizar amplamente os requisitos de armazenamento, os usuários que se conectam para executar nós completos experimentam tempos de sincronização mais rápidos. E com isso, a empresa disse que seu software Ethereum agora pode ser executado em um disco rígido em vez de um unidade de estado sólido (SSD), um feito particularmente notável, já que os longos tempos de sincronização fizeram com que o Ethereum não pudesse ser executado em um disco rígido desde o verão passado.

A atualização até recebeu uma resposta animada de Buterin, que disse em um canal de desenvolvedor: "Uau. Como vocês conseguiram isso?"

Como resultado da atualização, os usuáriostêm relatadouma experiência muito melhorada.

Ao mesmo tempo, o desenvolvedor independente Alexey Akhunov tem trabalhado em uma reescrita do cliente geth, chamado "turbo geth". Descrito por Akhunov como um"obsessão,"o projeto visa remover muitas repetições desnecessárias na forma como os clientes do ethereums processam o estado geral.

Embora ainda não esteja nem NEAR de estar pronto, ele abriu alguns caminhos interessantes de "otimização especulativa", disse Akhunov em um bate-papo recente com desenvolvedores.

Por exemplo, Akhunov sugere “codificar” certas informações sobre o estado do Ethereum nos próprios clientes. Em última análise, o objetivo é adaptar o software para simplesmente rodar usando memória de acesso aleatório, ou RAM, o que poderia tornar os clientes muito mais rápidos – permitindo que eles potencialmente sincronizem com a rede instantaneamente.

Os desenvolvedores do próprio Geth também estão trabalhando em otimizações, para ONE corrigir uma peculiaridade em como as informações são armazenadas quando um cliente sincroniza com a rede no que é chamado de modo "rápido". Descrito pelo desenvolvedor CORE do Geth, Péter Szilágyi, como "realmente horrível", o código existente provavelmente será substituído junto com um monte de atualizações que tornam a sincronização muito mais rápida e menos intensiva em armazenamento.

Os limites

Também há pesquisas sendo feitas sobre um tipo de cliente chamado "clientes sem estado", que armazenam apenas uma compressão do estado geral.

Até Buterin se interessou pela ideia, recentementerealizando um estudoque descreve um cenário onde "mineradores e nós completos em geral não precisam mais armazenar nenhum estado". Além disso, Buterin disse mais tarde em um canal de desenvolvedor, clientes sem estado também aliviariam a necessidade de limpar o estado por outras medidas, como podar dados antigos e irrelevantes, por exemplo, contas vazias ou há muito inativas.

"Agora sou a favor da abordagem de cliente sem estado", escreveu Buterin.

E há até mesmo especulações de que clientes sem estado podem ser possíveis sem fazer alterações no nível do protocolo.

Promovendo esses clientes como uma possível solução para os obstáculos de escala enfrentados pelo Ethereum após o sucesso do CryptoKitties, Akhunov escreveu em um recente postagem de blog: "Acredito que (clientes sem estado) já podem ser implementados, sem qualquer hard fork, 'simplesmente' alterando os clientes Ethereum ... Isso significa que os nós não precisam acessar o armazenamento a partir de arquivos e os tempos de validação de blocos devem cair significativamente."

No entanto, as otimizações do cliente T podem ser a única coisa em que a rede pode confiar para diminuir as preocupações com o estado.

Segundo Szilágyi

, eventualmente, as otimizações de clientes atingirão seu limite. E então os desenvolvedores terão que voltar sua atenção para tecnologias em andamento, como sharding, que divide o banco de dados Ethereum em pedaços menores armazenados em diferentes nós, em um esforço para aliviar a pressão de armazenar o banco de dados completo em clientes individuais.

Talvez em resposta às tensões recentes na rede, o desenvolvimento de fragmentação avançou nos últimos meses, com uma especificação de estágio inicial esboçada emGithub.

"Podemos otimizar o banco de dados e torná-lo dez vezes mais rápido e otimizado, o que nos dá espaço para crescer dez vezes nosso tamanho atual", disse Szilágyi, acrescentando:

"Mas, eventualmente, chegaremos ao ponto em que T poderemos mais fazer otimizações de banco de dados e, nessa altura, precisaremos ser capazes de fragmentar nossos dados."

Disco rígidoimagem via Shutterstock

Rachel-Rose O'Leary

Rachel-Rose O'Leary é uma codificadora e escritora na Dark Renaissance Technologies. Ela foi redatora de tecnologia líder para a CoinDesk 2017-2018, cobrindo tecnologia de Política de Privacidade e Ethereum. Ela tem formação em arte digital e filosofia, e escreve sobre Cripto desde 2015.

Rachel-Rose O'Leary