O blockchain Ethereum se dividiu temporariamente nesta quarta-feira (11), causado por um bug inativo que foi parcialmente corrigido. Os problemas já foram amplamente resolvidos, mas ainda restam dúvidas sobre como lidar com a correção.
O bug causou caos porque afetou o provedor de infraestrutura do Ethereum, Infura. Quando o serviço caiu, muitos serviços que usam o Infura não conseguiram interagir com o blockchain. Muitos outros nodes também foram afetados. Mas como tudo isso aconteceu?
De acordo com Péter Szilágyi, líder da equipe da Fundação Ethereum, o bug estava adormecido há dois anos. John Youngseok Yang, um estudante de Ph.D. no Software Platform Lab, notou o bug e recebeu 20.000 pontos (no valor de US$ 20.000 e normalmente pagos em Ethereum) por encontrar duas vulnerabilidades graves. O bug afetou uma versão da blockchain Ethereum, chamada Go-Ethereum ou Geth.
Vários meses atrás, os desenvolvedores do Ethereum introduziram uma correção e muitos nodes executando a versão mais recente foram protegidos. No entanto, os desenvolvedores não revelaram detalhes do bug, a fim de evitar que um mau ator o explore (em qualquer node que não tenha sido atualizado).
O que deu errado é que alguns nodes não foram atualizados para a versão mais recente. Na verdade, o Infura estava executando uma versão do Geth (1.9.9) que foi lançada em 6 de dezembro de 2019.
E então o bug ocorreu.
Às 4h10, o blockchain se dividiu em uma versão mais longa e uma versão mais curta. Até certo ponto, isso acontece o tempo todo e os nodes aderem à versão mais longa. Mas, neste caso, os nodes que não foram atualizados ficaram com a cadeia menor. Isso significava que eles estavam mostrando blocos diferentes e discordando de outras versões do blockchain.
Com duas versões, houve uma divisão. Isso foi do bloco 11234873 em diante.
“O problema é que em algum ponto alguma mudança no código foi introduzida que levou a uma divisão entre aqueles que atualizaram e aqueles que não o fizeram”, disse Nikita Zhavoronkov, desenvolvedor líder da Ethereum, ao Decrypt.
Vários nodes foram afetados. A Binance, que executa seu próprio node Ethereum, observou a divisão e encerrou temporariamente os saques da bolsa. Blockchair, um explorador de blocos Ethereum, também foi afetado e seus dados estavam mostrando blocos do blockchain menor.
“Os serviços dependentes de Ethereum estão enfrentando interrupções após a recente divisão da cadeia. As retiradas de ETH dos canais de negociação de Nash estão falhando, mas estamos trabalhando para resolver o problema o mais rápido possível ”, tuitou Nash, uma plataforma sem custódia.
Mas a maior perturbação girou em torno do Infura. Ele executa nodes Ethereum em nome de projetos centralizados e descentralizados neste espaço e foi descrito como a espinha dorsal do Ethereum.
De acordo com seu site, muitos projetos importantes usam o Infura, incluindo a carteira Ethereum MetaMask, a carteira sem custódia Coinbase Wallet (que é diferente do aplicativo móvel nativo da Coinbase), o jogo de criação de gatos CryptoKitties e a plataforma de empréstimo Compound.
Então, quando o Infura caiu, muitos desses serviços não puderam se conectar ao blockchain. Aqueles que usavam MetaMask estavam lutando para fazer transações (a menos que manualmente apontassem para um node que não foi afetado).
O Infura, que foi criticado como uma fraqueza potencialmente centralizada na arquitetura descentralizada do Ethereum, foi atacado novamente por causa do problema.
O CTO da Casa Jameson Lopp tuitou: “Três palavras que causam medo nos corações daqueles que constroem no Ethereum: “Infura caiu.””
CSO da Blockstream Samson Mow acrescentou, “Ethereum é Infura. O teatro da descentralização pode parar agora. ”
No entanto, Szilágyi veio em sua defesa, tweetando: “Ei, Internet. Pare de apontar o dedo para Infura usando o antigo Geth. É lógico da perspectiva do operador não utilizar lançamentos mais recentes. ”
Existem algumas lições que podem ser aprendidas. Uma é que as empresas que executam nodes em nome de outros projetos provavelmente devem atualizar seus nodes regularmente. “Este é um lembrete para manter seu(s) node(s) atualizado(s)!” tweetou um programador do Geth conhecido como M H Swende.
A outra é que deve haver mais transparência quando as atualizações de implementação do Ethereum forem lançadas. No entanto, há uma disputa aqui sobre se seria um risco de segurança fornecer muitas informações.
“Dito isso, consertar silenciosamente um bug inativo por mais de 2 anos tem uma chance muito menor de causar uma interrupção do que aumentar a conscientização sobre isso. Nós nos esforçamos para minimizar os danos potenciais ”, disse Szilágyi.
“Se pensássemos que anunciar consensos de de segurança tornaria a exploração menos provável, faríamos isso. Do jeito que está, geralmente não anunciamos essas correções, mas recomendamos que as pessoas mantenham seus nodes atualizados. Dois de nossos lançamentos recentes mencionaram vagamente as correções de segurança”, acrescentou Swende.
Portanto, lembre-se, se você vir menções vagas sobre correções de segurança, provavelmente é melhor atualizar seu node.
*Traduzido e editado com autorização da Decrypt.co