A bug in the code made 13% of Ethereum nodes unusable, highlighting what is a growing crack in the network infrastructure: client centralization.
The Ethereum Client Problem
As we first mentioned in May and June on GitHub, the minority clients Parity-Ethereum and OpenEthereum in versions 2.7 and later contain an unknown bug that prevents nodes from synchronizing with the latest network block.
Such bugs would be a normal problem were it not for the time it takes to fix them (weeks to months) and the additional load will be placed on the majority client, Geth. The clients themselves are different implementations of the blockchain software programming language.
Running multiple implementations simultaneously is considered a way to thwart network attacks by running simultaneous but separate systems. This has historically proved a useful model.
For example, the Shanghai attacks of 2016 saw the Geth momentarily blocked following a Distributed Denial of Service (DDOS) attack. Parity-Ethereum managed to keep the network afloat on its own.
The Geth client backed by the Ethereum Foundation now holds about 80% of the $ 43 billion network. This addiction is a recognized attack vector that has forced developers to postpone the July hard fork, Berlin, so that minority clients can gain some traction.
Yet eight weeks later, Geth's share has only grown. And it is likely to increase even more as the operators of currently non-functional nodes have a decision in their hands: shut down their client, back up an old version of the client, or completely switch to another client.
A hot potato
It was a Pulcinella secret among the Ethereum developers - here it quotation in real time - that the Parity-Ethereum client was not up to spec. In fact, OpenEthereum project manager Marcelo Ruiz De Olano told the media that his team encountered both unsolvable problems and "very serious problems affecting memory and disk usage."
Parity Technologies, which originated the Parity-Ethereum client, stopped maintenance in December 2019 due to too high costs. The client was then entrusted to a Decentralized Autonomous Organization (DAO) of developers financed by the ConsenSys Gnosis spinout, called OpenEthereum.
A quick look at the Geth and Parity-Ethereum base codes on GitHub, particularly after the December transition, leads to more questions about the integrity of the base code of the latter, as noted by the unguarded marketplace LocalCryptos in a tweet of May.
Meanwhile, the OpenEthereum team urged node operators to revert to 2.5 version 2019 to bring the nodes back online. De Olano said he has four engineers on the project and hopes to have a viable client by mid-September.
However, client diversification will remain an issue without further solutions, he said. “Ultimately, this is a community project to increase client diversity in Ethereum and everyone's help is appreciated,” said De Olano.