No final da noite de quinta-feira, a blockchain Ethereum encontrou um problema que impediu temporariamente que os blocos fossem validados correctamente. Embora tudo tenha voltado ao normal desde então, eis o que sabemos sobre este episódio por enquanto.
Blocos pararam temporariamente de ser finalizados no Ethereum
No momento da escrita, a causa exacta ainda não tinha sido comunicada, mas durante cerca de trinta minutos a blockchain Ethereum (ETH) encontrou um problema que impedia a finalização de blocos.
A cadeia de beacons parou de ser finalizada há cerca de trinta minutos. Ainda não sei porquê, mas, em geral, a cadeia foi concebida para resistir a isto, as transacções continuarão como habitualmente e a finalização será iniciada quando o problema for resolvido. pic.twitter.com/utAS0uAWpG
– superphiz.eth ️ (@superphiz) 11 de maio de 2023
É importante salientar que o blockchain não parou. No entanto, durante 3 épocas, a camada de consenso sofreu um bug semelhante ao que é conhecido como “vazamento de inatividade”.
Em termos mais simples, a blockchain comportou-se como se muitos validadores estivessem offline.
Não foi esse o caso, mas o facto é que, durante este período, um número limitado de certificados foi emitido por validadores:

Figure 1 – Epochs that encountered a consensus bug on Ethereum
Um problema com um pedaço de software que está a ser usado
Para funcionar, a blockchain Ethereum está dividida em 2 pilares: a camada de execução, que permite a realização de transacções, e a camada de consenso, que garante a consistência dos blocos. Para estes dois pilares, os validadores podem utilizar diferentes softwares chamados clientes.
A Fundação Ethereum incentiva os validadores a diversificarem os clientes que utilizam, para que, caso ocorra um bug, a blockchain continue funcionando normalmente.
Na ilustração abaixo, podemos ver que o software utilizado para a camada de consenso está correctamente diversificado, enquanto que para a camada de execução, o cliente Geth está demasiado representado:

Figura 2 – Diversidade de clientes utilizados pelos validadores no Ethereum
Como nenhum cliente da camada de consenso é usado por mais de 50% dos validadores, o bug da noite passada não poderia ter causado um encerramento ou bifurcação da blockchain. Isto assumindo que o problema teve efectivamente origem num dos pacotes de software utilizados.
Nesta eventualidade, o programador principal Superphiz salienta que este problema de fuga de inactividade poderia mesmo ter sido evitado se nenhum software representasse mais de 33% dos validadores:
Se um cliente da camada de consenso causou a perda de finalidade:
* Evitámos uma bifurcação por não termos um cliente supermaioritário
* Poderíamos ter evitado a perda de finalidade completamente se nenhum cliente tivesse mais de 33%.
Estou orgulhoso do nosso trabalho de diversidade, mas ainda não acabámos. https://t.co/TUtXnQu5hD
– superphiz.eth ️ (@superphiz) Maio 11, 2023
Por sua vez, Terence Tsao indicou que foi identificado um problema com o cliente Prysm, embora não possamos dizer neste momento se esta é a fonte da paragem da validação de blocos :
Actualização da Prysm. Identificámos áreas onde a cache de estado pode ser melhorada. Com o cache melhorado, o nó deve ter um desempenho melhor durante um período degradado como antes.
Dado que a cadeia se estabilizou, como operador de staker / nó, não há nenhuma ação necessária no momento.
– terence.eth (@terencechain) May 11, 2023
O mais importante neste momento é que tudo voltou rapidamente ao normal e que nenhum validador foi cortado durante este episódio. De facto, o slashing é usado para desviar algum do ETH escondido quando os validadores não fazem o seu trabalho correctamente.
Um relatório detalhado sobre o que aconteceu deverá ser fornecido pela equipa de desenvolvimento em breve, e poderemos voltar a esta informação nessa altura.