Partager cet article

O ‘Hard Fork Não Anunciado’ do Ethereum estava tentando evitar a mesma interrupção que causou

Um hard fork que dividiu a cadeia Ethereum em duas foi ativado de propósito, colocando em questão a coordenação do cliente Ethereum.

facepalm1

Conclusão:

La Suite Ci-Dessous
Ne manquez pas une autre histoire.Abonnez vous à la newsletter The Protocol aujourd. Voir Toutes les Newsletters

  • A maior parte do ecossistema DeFi do Ethereum ficou indisponível hoje mais cedo depois que um bug latente no código do Ethereum dividiu o histórico de transações da rede em dois.
  • A divisão resultou de uma alteração de código que foi inserida secretamente em uma atualização anterior do Geth; alguns operadores de nós do Ethereum ignoraram a atualização, que ironicamente tinha como objetivo evitar a 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 ela incluía uma mudança no design de consenso do Ethereum.
  • Uma autópsia divulgado hoje pela Geth indica que o bug foi acionado intencionalmente. O caso é talvez o maior desafio do Ethereum desde o fork do DAO de 2016, e levanta questões sobre a descentralização frequentemente alardeada do Ethereum e a eficácia de sua coordenação de desenvolvedores indo para o Ethereum 2.0.

Inicialmente, era um problema aparente com Infura, os servidores executados pela ConsenSys que KEEP a maioria dos aplicativos de Finanças descentralizadas (DeFi) sincronizados com a rede Ethereum .

Infuracaiu por aí8:00 UTC 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 de Ethereum depois de notar transações conflitantes em seu nó Ethereum . Como outras bolsas também suspenderam as negociações, o problema real ficou claro: um bug no cliente Go Ethereum (Geth), cujo código sustenta 80% das aplicações do Ethereum, dividiu a blockchain Ethereum em duas.

Leia Mais: Desenvolvedores do Ethereum adiam o hard fork de Berlim para conter preocupações com a centralização do cliente

Os dois históricos de transações conflitantes significavam que os usuários do Etheruem estavam temporariamente interagindo com diferentes versões do blockchain Ethereum . Mais do que causar atrasos, isso colocava os fundos dos usuários em risco ao derrubar a maioria dos aplicativos DeFi do Ethereum por algumas horas.

A Infura corrigiu o problema, assim como outros provedores de serviços que foram afetados pelo snafu, 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 em uma atualização recente – uma atualização que a Infura e a Blockchair, entre outras, ignoraram.

Além desses dois provedores de serviços, outros usuários do Ethereum e provedores de carteira também foram afetados porque T atualizaram seus códigos, disseram os desenvolvedores ao CoinDesk.

O fiascotem críticos desafiando A descentralização percebida do Ethereum, enquanto as partes interessadas se perguntam por que a mudança foi realizada em Secret, sem coordenação entre a Geth e outras equipes de desenvolvimento.

Para alguns, a divisão é o desafio mais urgente para o Ethereum desde o infame hack do DAO em 2016.

Divisão da cadeia Ethereum: como aconteceu

Em um recém-publicadopost-mortem, Péter Szilágyi, líder da equipe Ethereum, escreveu que um fork “foi (deliberadamente) acionado na rede Ethereum ”.

Um representante deOptimism, um projeto de escalonamento Ethereum , postado recentementeque o projeto propositalmente acionou o bug corrigido pela atualização do Geth, dando início ao fork.

Quando a bifurcação ocorreu, foram criadas duas versões do livro-razão de transações do Ethereum : uma com transações de clientes Geth atualizados e ONE com transações de clientes Geth mais antigos (como o Infura).

“A correção foi implantada há vários meses e somente hoje uma transação que causou essa divisão ocorreu”, disse Nikitia Zhavoronkov, desenvolvedora líder da Blockchair, uma exploradora de blocos Ethereum que foi afetada pelo fork, ao CoinDesk em uma mensagem direta.

Leia Mais: O Ethereum Aprenda alguma coisa com o ataque DAO de US$ 55 milhões?

Pensando que a atualização era “uma pequena mudança no código”, o Blockchair T se preocupou com a atualização porque T valeria a penao tempo de inatividade de seus serviços. Mas mais do que pequeno, os desenvolvedores aparentemente fizeram uma mudança silenciosa no mecanismo de consenso do Geth na atualização também.

“A equipe Geth realmente mudou o consensoimplementação na versão v1.9.17, no entanto, a equipe não criou nenhuma regra nova que a comunidade Ethereum T conhecesse ou concordasse”, escreve Szilágyi no post, dizendo que essas regras foram estabelecidas em um Proposta de Melhoria Ethereumhá três anos.

“Se você T considera a introdução acidental de um bug uma 'atualização de consenso', então você também não deve considerar a correção do bug alguns meses depois como uma 'atualização de consenso'”, argumentou ele.

Outra autópsiapublicado pela Ethereum Foundation 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 mesmo bug de consenso que a atualização do Geth tentava resolver.

O programa de recompensas Ethereumrecentemente reconhecidoJoão Yang, um novato na comunidade de código aberto do Ethereum, por descobrir esta e outra vulnerabilidade. O desenvolvedor do Geth e especialista em segurança do Ethereum Martin Swende tweetou as mudanças na atualização corrigem os problemas divulgados, sugerindo que o desastre é um “lembrete para KEEP seu(s) nó(s) atualizado(s)!”

Swende continua adiga no tópico do tweetque os desenvolvedores não anunciaram a grande mudança para evitar chamar atenção para a falha. Em sua própria explicação, Szilágyi disse que consertar o bug “silenciosamente” convidou menos “perturbação”.

Ainda assim, outras partes interessadas do Ethereum estão se perguntando por que o bug não pôde ser divulgado em particular com as equipes que estão construindo no Geth.

Leia Mais: Bug de 'alta' gravidade no software Bitcoin é revelado 2 anos após 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 possa ajudar a gerenciar e coordenar uma atualização tranquila, e devemos trabalhar juntos”, disse Matt Luongo, fundador da Thesis, ao CoinDesk.

“Quando os forks são surpresas, qualquer um que tenha construído sobre o Ethereum como nós pode perder dinheiro”, ele continuou.

A tese constrói aKeep Network, que emite tBTC, uma forma de tokenizaçãoBitcoin 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 Infura e outros atualizaram seus clientes Geth.

É porque o tempo de inatividade significava que os usuários que apostavam Ethereum na Keep Network T conseguiam se coordenar com a cadeia principal do Ethereum ; como resultado, eles arriscavam ter parte de suas apostas "cortadas" por não atenderem aos seus requisitos fiduciários. Thesis disse à CoinDesk que nenhum Bitcoin que garante tokens tBTC esteve em risco.

Além disso, o caso da Thesis é apenas um exemplo da interrupção que o fork criou para qualquer um que tentasse usar a "cadeia minoritária" durante a divisão.

Apesar dos problemas causados ​​pela divisão, os preços do ether, a Criptomoeda nativa do blockchain Ethereum , subiram 4,6% na quarta-feira após o surgimento das notícias, sugerindo que os comerciantes veem pouca ameaça sistêmica ou de longo prazo no problema.

Juntando os pedaços

Zhavoronkov disse que a confusão não foi 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 é formada por “bons desenvolvedores”, mas que eles não têm “experiência em executar infraestrutura” e são “subfinanciados”.

Os comentários se concentram em uma frustração que alguns stakeholders do Ethereum compartilham sobre o motivo pelo qual Geth manteve a mudança de consenso em Secret. Indo mais longe, por que Infura, a espinha dorsal do ecossistema Finanças descentralizado do Ethereum, entre outros, não sabia sobre um bug de quebra de consenso no código do Ethereum antes foi acionado?

“Esta é uma área um BIT cinzenta e requer uma discussão caso a caso”, explica Szilágyi em seu post. “Todos concordamos que a transparência é rei e que devemos nos esforçar o máximo possível para isso, mas também é importante olhar todos os detalhes antes que as cabeças comecem a rolar.

Leia Mais: Contagem regressiva para Ethereum 2.0 começa com lançamento do contrato de depósito

“No caso do Ethereum, leva muito tempo (semanas, meses) para que os operadores de nós atualizem até mesmo para um hard fork agendado. Destacar que um lançamento contém consenso importante ou correções de DoS sempre corre o risco de alguém tentar bater os atualizadores na linha de piada e derrubar a rede. Segurança via obscuridade definitivamente não é algo a se almejar, mas atrasar um ataque potencial o suficiente para deixar a maioria dos operadores de nós imunes pode valer o 'golpe' temporário na transparência”, ele continuou.

No final das contas, a equipe de Geth acreditava que havia muito risco em divulgar a vulnerabilidade, então eles decidiram que enviar a atualização secretamente seria o que menos correria o risco.

“Nós diríamos que realmente funcionou”, diz Szilágyi. Embora a atualização “tenha tomado um rumo inesperado com a divisão da rede de ontem”, a equipe de Geth ainda acredita que manter o assunto em segredo “foi a decisão certa”

À medida que o Ethereum se aproxima de sua maior atualização, o ETH 2.0, o caso pode ser um estudo crítico na coordenação de clientes para o ecossistema Ethereum .

“O mais importante aqui, na minha opinião, é que as pessoas que fizeram essa ligação sejam transparentes sobre o raciocínio, assumam quaisquer erros e cresçam”, disse Luongo. “O Monero lidou bem com [bugs de consenso] no passado, assim como o Bitcoin e o Zcash. Há muitos exemplos e, embora seja sempre complicado coordenar em um setor, evitar qualquer tipo de coordenação é extremamente perigoso.

“Espero que esta bifurcação leve a relacionamentos mais estreitos e a repensar como os projetos no Ethereum interagem com o desenvolvimento do cliente.”

Atualizar 00:36 UTC 12 de novembro Este artigo foi atualizado para melhor transmitir que o "hard fork" não foi uma mudança deliberada de código, mas uma divisão de cadeia que foi desencadeada pelo bug de consenso que os desenvolvedores do Ethereum corrigiram discretamente na versão Geth v1.9.17.

Atualizar 21:02 UTC 12 de novembro- Este artigo foi atualizado para incluir informações de uma autópsia da fundação Ethererum sobre a divisão.

Colin Harper, Blockspace Media

Colin writes about Bitcoin. Formerly, he worked at CoinDesk as a tech reporter and Luxor Technology Corp. as head of research. Now, he is the Editor-in-Chief of Blockspace Media, and he also freelances for CoinDesk, Forbes and Bitcoin Magazine. He holds bitcoin.

Colin Harper