• Em 6 de novembro, a Ethereum Foundation pediu a desenvolvedores e auditores que verificassem os impactos das especificações do Glamsterdam.
• A EIP-8037 introduz um medidor de gás separado para a criação de estado; a EIP-8038 reajusta o preço do acesso a estados existentes.
• A análise da ChainSecurity, de 13 de outubro, identificou vários projetos vulneráveis às especificações alteradas.
EIP-8037, EIP-8038 e a divisão do gás
Os desenvolvedores e auditores de contratos inteligentes por trás das implantações na Ethereum receberam um pedido direto da Ethereum Foundation em 6 de novembro: verificar como as mudanças planejadas nas especificações para a próxima grande atualização da rede, Glamsterdam, afetariam seus projetos. Para apoiar essa verificação, a Foundation divulgou material de referência que lista oito invariantes — condições que o código em execução pode pressupor silenciosamente — que seriam invalidadas pelas mudanças propostas. Cada item identifica a condição, explica por que ela deixaria de ser válida e mostra onde essa suposição aparece na prática. O pedido se concentra em duas propostas de melhoria da Ethereum: a EIP-8037 altera o custo de gás para criar novos estados na rede, e a EIP-8038 revisa o custo de acesso a estados já existentes. O estado abrange informações da conta e os dados mantidos por um contrato armazenado. Na Ethereum, as taxas de gás medem os recursos computacionais consumidos por uma transação ou execução de contrato. Toda operação na rede, de uma simples transferência a uma chamada aninhada de contrato, consome parte desse orçamento. A EIP-8037 vai além de reajustar os preços: ela introduz um compartimento de medição separado para o gás gasto na criação de estado, distinto do gás gasto no processamento comum, que hoje utiliza um único limite combinado. Na prática, a atualização atribuiria preços separados a dois recursos que hoje são cobertos por um único valor. Portanto, as mudanças podem alterar tanto a quantidade de gás necessária para uma operação quanto a quantidade de gás que permanece disponível após uma operação falhar durante a execução. É esse segundo efeito que representa um risco para o código em execução. O material se destina a contratos já implantados, nos quais uma regra alterada passa a afetar código em produção, em vez de um rascunho. Desenvolvedores e auditores que encontrarem dependência de qualquer uma das oito condições devem entrar em contato diretamente com a Foundation. O pedido foi feito enquanto o preço da Ethereum (ETH) recuava 5,1% nas últimas 24 horas, embora a iniciativa tenha sido motivada pela atualização, e não pela direção do mercado.
A empresa de segurança ChainSecurity já havia rastreado o risco. Uma análise técnica publicada em 13 de outubro identificou vários projetos que poderiam ficar vulneráveis com as especificações alteradas, pois pressupõem que certas invariantes continuem válidas: condições que um contrato precisa manter verdadeiras para funcionar conforme foi escrito. O modo concreto de falha envolve chamadas externas, o mecanismo de que sistemas componíveis dependem para interagir. Hoje, quando uma chamada a um contrato externo falha por falta de gás, a operação seguinte não pode ser concluída, e toda a transação é revertida. De acordo com as especificações propostas, a operação subsequente pode ser concluída enquanto a operação que falhou permanece sem possibilidade de nova tentativa, deixando o contrato em uma condição que seu autor nunca previu. O novo repositório da Foundation registra as oito invariantes que o Glamsterdam quebraria, apresentando cada uma com uma explicação, um exemplo detalhado e sugestões que os desenvolvedores podem usar ao revisar seus próprios projetos. O adiamento do Glamsterdam na testnet Hoodi não é novidade: em 22 de outubro, a Foundation adiou uma ativação inicialmente prevista para 26 de outubro, alegando a necessidade de estudar melhor como a EIP-8037 interage com contratos da mainnet. Não há uma nova data, e a atualização continua suspensa até que as questões em aberto sejam esclarecidas. A análise de impacto conta com o apoio da ChainSecurity e da empresa de auditoria Dedaub, que examinam como as regras alteradas afetam as implantações existentes, além da auditoria interna da Foundation. Ainda assim, a Foundation reconhece que não pode analisar todos os projetos, muito menos o código off-chain que funciona em conjunto com contratos on-chain. A decisão cabe à reunião de desenvolvedores AllCoreDevs, que primeiro precisa de um inventário do que deixaria de funcionar após a ativação e das opções de especificação que poderiam evitar isso. Até que essa reunião chegue a uma conclusão, enfatizou a Foundation, nada na especificação está decidido. O trabalho no Hegota, a atualização que vem depois do Glamsterdam, continua em paralelo e não é afetado.
O ponto de controle da AllCoreDevs
A divisão do gás no cerne da EIP-8037 é uma mudança contábil na própria máquina virtual, o que explica por que a Foundation a trata como um risco no nível do protocolo, e não como um ajuste rotineiro de parâmetros. Para quem implanta contratos, o repositório das oito invariantes transforma uma discussão abstrata em uma lista de verificação: uma equipe pode testar suas premissas diante de oito condições identificadas, em vez de esperar por uma decisão. O fator limitante é a cobertura, como a própria Foundation reconhece, pois é impossível examinar por completo o código on-chain e off-chain. O próximo marco definido é a reunião da AllCoreDevs, na qual a decisão exige que tanto o inventário das falhas quanto as alternativas de especificação estejam em pauta.
