Name:  Capturar 1.PNG
Views: 22
Size:  329.2 KB



• A maior parte do ecossistema DeFi da Ethereum escureceu hoje cedo depois que um bug latente no código Ethereum dividiu o histórico de transações da rede em dois.
• A divisão resultou de uma mudança de código que foi secretamente inserida em uma atualização anterior do Geth; alguns operadores de nó Ethereum ignoraram a atualização, que ironicamente tinha o objetivo de evitar a própria divisão que ocorreu.
• Os nós que não foram atualizados tinham a impressão de que a atualização era pequena e não sabiam que incluía uma mudança no design de consenso da Ethereum.
• Uma autópsia divulgada hoje por Geth indica que o bug foi acionado intencionalmente. O caso é talvez o maior desafio do Ethereum desde a bifurcação DAO 2016, e levanta questões sobre a descentralização frequentemente elogiada do Ethereum e a eficácia de sua coordenação de desenvolvedor indo para o Ethereum 2.0.
No início, era um problema aparente com o Infura, os servidores executados pelo ConsenSys que mantêm a maioria dos aplicativos financeiros descentralizados (DeFi) sincronizados com a rede Ethereum.
O Infura caiu por volta das 8:00 UTC de quarta-feira e, com ele, alguns dos aplicativos mais populares do Ethereum, como Metamask, MakerDAO, Uniswap, Compound e MyCrypto, entre outros. Pouco depois, a Binance interrompeu a negociação da Ethereum após perceber transações conflitantes em seu nó Ethereum. Como outras bolsas também suspenderam a negociação, o verdadeiro problema ficou claro: um bug no cliente Go Ethereum (Geth), cujo código sustenta 80% dos aplicativos da Ethereum, dividiu o blockchain Ethereum em dois.
Inscreva-se no Blockchain Bites, nossa atualização diária com as últimas histórias.
SE INSCREVER
Ao se inscrever, você receberá e-mails sobre os produtos CoinDesk e concorda com nossos termos e condições e política de privacidade.
Leia mais: Ethereum Developers Atrasam Berlin Hard Fork para eliminar preocupações de centralização do cliente
Os dois históricos de transações conflitantes significavam que os usuários Etheruem interagiam temporariamente com diferentes versões do blockchain Ethereum. Mais do que causar atrasos, isso colocava os fundos do usuário em risco ao bloquear a maioria dos aplicativos DeFi da Ethereum por algumas horas.
O Infura corrigiu o problema, assim como outros provedores de serviços afetados pelo problema, atualizando seus nós. Essas partes interessadas estavam executando uma versão mais antiga do Geth, que continha um bug que os desenvolvedores do Ethereum corrigiram silenciosamente na atualização recente - uma atualização que o Infura e o Blockchair, entre outros, ignoraram.
Além desses dois provedores de serviços, outros usuários do Ethereum e provedores de carteira também foram afetados porque não atualizaram seu código, disseram os desenvolvedores ao CoinDesk.
O fiasco tem críticos desafiando a descentralização percebida de Ethereum, enquanto as partes interessadas estão se perguntando por que a mudança foi empurrada em segredo, sem coordenação entre Geth e outras equipes de desenvolvimento.
Para alguns, a divisão é o desafio mais urgente para Ethereum desde o infame hack DAO de 2016.
A divisão da cadeia de Ethereum: como aconteceu
Em um post-mortem recém-publicado, Péter Szilágyi, líder de equipe da Ethereum, escreveu que uma bifurcação "foi (deliberadamente) acionada na rede Ethereum".
Um representante da Optimism, um projeto de escalonamento da Ethereum, postou recentemente que o projeto ativou propositalmente o bug que a atualização Geth corrigiu, desencadeando o fork.
Quando a bifurcação ocorreu, ele criou duas versões do livro razão de transações Ethereum: uma com transações de clientes Geth atualizados e outra com transações de clientes Geth mais antigos (como Infura).

“A correção foi implantada há vários meses e só hoje uma transação que causou a divisão ocorreu”, disse Nikitia Zhavoronkov, desenvolvedora líder da Blockchair, exploradora de blocos da Ethereum que foi afetada pelo fork, ao CoinDesk em uma mensagem direta.
Leia mais: O Ethereum aprendeu alguma coisa com o ataque DAO de US $ 55 milhões?
Pensando que a atualização era "uma pequena alteração no código", a Blockchair não se preocupou com a atualização porque não valeria a pena o tempo de inatividade para seus serviços. Porém, mais do que algo menor, os desenvolvedores aparentemente fizeram uma mudança silenciosa no mecanismo de consenso de Geth na atualização também.
“A equipe Geth realmente mudou a implementação de consenso na versão v1.9.17, no entanto, a equipe não criou nenhuma nova regra que a comunidade Ethereum não conhecesse ou concordasse”, escreve Szilágyi no post, dizendo que essas regras foram estabelecidas em uma proposta de melhoria Ethereum há três anos.
“Se você não considerar a introdução acidental de um bug como uma 'atualização de consenso', então você também não deve considerar consertar o referido bug alguns meses depois uma 'atualização de consenso'”, argumentou.
Outro post-mortem publicado pela Fundação Ethereum em 12 de novembro afirma que a exploração ocorreu “no bloco 11234873, transação 0x57f7f9”, acrescentando que a cadeia minoritária para nós fora de sincronia tinha aproximadamente 30 blocos de comprimento.
Um apelo à transparência
Ironicamente, a bifurcação foi causada pelo próprio bug de consenso que a atualização de Geth procurou resolver.
O programa de recompensas Ethereum reconheceu recentemente John Yang, um recém-chegado à comunidade de código aberto do Ethereum, por descobrir esta e outra vulnerabilidade. O desenvolvedor Geth e especialista em segurança da Ethereum, Martin Swende, tuitou as mudanças na correção de atualização dos problemas divulgados, sugerindo que o desastre é um “lembrete para manter seu (s) nó (s) atualizado (s)!”
Swende continua a dizer no tópico do tweet que os desenvolvedores não anunciaram a grande mudança para evitar chamar a atenção para a falha. Em sua própria explicação, Szilágyi disse que consertar o bug "silenciosamente" gerava menos "interrupções".
Ainda assim, outras partes interessadas do Ethereum estão se perguntando por que o bug não pode ter sido divulgado em particular com as equipes que estão construindo em Geth.
Leia mais: Bug de "alta" gravidade em software Bitcoin revelado 2 anos após a correção
“Cada grande projeto com o qual a equipe de desenvolvimento está em contato próximo deve ter um contato de segurança que pode ajudar a gerenciar e coordenar uma atualização tranquila, e devemos trabalhar juntos”, disse Matt Luongo, fundador da Thesis, ao CoinDesk.
“Quando os garfos são uma surpresa, qualquer pessoa que construiu no topo do Ethereum como nós pode perder dinheiro”, continuou ele.
Thesis constrói a Keep Network, que emite tBTC, uma forma de bitcoin tokenizada para o blockchain Ethereum. Luongo disse que o fork colocou os fundos dos usuários do tBTC em risco, mas não por causa da divisão da cadeia, que foi resolvida depois que o Infura e outros atualizaram seus clientes Geth.
É porque o tempo de inatividade significava que os usuários que apostavam no Ethereum na Keep Network não conseguiam coordenar com o Ethereum mainchain; como resultado, eles correram o risco de ter parte de suas participações “cortadas” por não cumprirem seus requisitos fiduciários. Thesis disse à CoinDesk que nenhum bitcoin que colateraliza tokens tBTC jamais esteve em risco.
Além disso, o caso de Tese é apenas um exemplo da interrupção que a bifurcação criou para qualquer um que tentou usar a "cadeia minoritária" durante a divisão.
Apesar dos problemas que a divisão causou, os preços do éter, a criptomoeda nativa da cadeia de blocos Ethereum, subiram 4,6% na quarta-feira após o surgimento da notícia, sugerindo que os comerciantes vêem pouca ameaça sistêmica ou de longo prazo do confuso.
Juntando as peças
Zhavoronkov disse que a confusão não era maliciosa, mas que "se [Geth] soubesse que tal coisa poderia acontecer, eles deveriam ter preparado um guia para operadores de nós". Luongo compartilhou frustrações semelhantes, dizendo que a equipe Geth são "bons desenvolvedores", mas que lhes falta "experiência em execução de infraestrutura" e são "subfinanciados".
Os comentários revelam uma frustração que algumas partes interessadas do Ethereum compartilham sobre por que Geth manteve a mudança de consenso em segredo. Indo mais longe, por que o Infura, a espinha dorsal do ecossistema financeiro descentralizado da Ethereum, entre outros, não sabia sobre um bug de quebra de consenso no código da Ethereum antes de ser acionado?
“Esta é uma área um pouco cinzenta e requer uma discussão caso a caso”, explica Szilágyi em seu post. “Todos concordamos que a transparência reina e que devemos nos esforçar tanto quanto possível para isso, mas também é importante olhar para todos os detalhes antes de começar a rolar as cabeças.


“No caso do Ethereum, leva muito tempo (semanas, meses) para que os operadores de nó atualizem até mesmo para uma bifurcação programada. Destacar que uma versão contém consenso importante ou correções DoS sempre corre o risco de alguém tentar superar os atualizadores e derrubar a rede. Segurança via obscuridade definitivamente não é algo a se almejar, mas atrasar um ataque potencial o suficiente para imunizar a maioria dos operadores de nó pode valer a pena o 'golpe' temporário para a transparência ”, continuou ele.
No final das contas, a equipe de Geth acreditava que havia muito risco em divulgar a vulnerabilidade, então eles decidiram que empurrar a atualização clandestinamente era o menor risco.
“Nós diríamos que realmente funcionou”, diz Szilágyi. Mesmo que a atualização "tenha dado uma virada inesperada com a divisão da rede de ontem", a equipe de Geth ainda acredita que manter o problema em segredo "foi a escolha certa"
Conforme o Ethereum se aproxima de sua maior atualização já no Eth 2.0, o caso pode ser um estudo crítico na coordenação do cliente para o ecossistema Ethereum.
“O mais importante aqui, IMO, é que as pessoas que fizeram essa ligação sejam transparentes quanto ao raciocínio, reconheçam os erros e cresçam”, disse Luongo. “Monero lidou bem com [bugs de consenso] no passado, assim como Bitcoin e Zcash. Existem muitos exemplos e, embora seja sempre difícil de coordenar em um setor, evitar qualquer tipo de coordenação é extremamente perigoso.
“Espero que esta bifurcação conduza a relacionamentos mais estreitos e a repensar como os projetos no Ethereum interagem com o desenvolvimento do cliente.”
Atualização 00:36 UTC de 12 de novembro - Este artigo foi atualizado para transmitir melhor que o “hard fork” não foi uma mudança deliberada de código, mas uma divisão da cadeia que foi acionada pelo bug de consenso que os desenvolvedores do Ethereum corrigiram discretamente no Geth v1. Versão 9.17.
Atualização 21:02 UTC de 12 de novembro - Este artigo foi atualizado para incluir informações de uma autópsia da fundação Ethererum a respeito da divisão.