ETH Devs Fix Software After Berlin Upgrade Goes Awry
2 min readIn the early hours of Thursday morning, the ETH blockchain underwent a network upgrade. Very quickly, it became clear that something was wrong.
Just 294 blocks into the Berlin hard fork, there was a consensus error with one of the software clients, Open ETH, and nodes weren’t syncing to the blockchain. What that means is that anyone running that client—12% of all ETH nodes—essentially was unable to use the blockchain until the error was fixed. The problem even led to an outage on block explorer Etherscan.
That issue has now been fixed, according to developers with Open ETH, the second-largest software client after Geth. ETH users can utilize any number of clients, among them Geth and Parity ETH to actually get on to the blockchain. It’s very loosely analogous to choosing among different web browsers to get online—they all basically do the same thing in different ways. However, in this case, when ETH clients don’t agree on some basics, the whole blockchain is at increased risk of attack.
We are pleased to release v3.2.3 which includes a fix for the Berlin Upgrade consensus error. https://t.co/h5B1bzrGA5
— OpenEthereum (@OpenEthereumOrg) April 15, 2021
The problem was related to a transaction referring to a smart contract that doesn’t yet exist but is planned for a future upgrade. Gnosis CEO and network contributor Martin Köppelmann tweeted today, “@OpenEthereumOrg thus handled the gas pricing of that transaction slightly incorrect which caused all subsequent problems (the block was rejected as invalid).”
In other words, the Open ETH software priced a single transaction differently from other software clients. That had knock-on effects that caused a whole block full of transactions to be rejected by the Open ETH client (but not the others), at which point the blockchain fell out of sync.
As a result, exchanges such as BitStamp and (newly public) Coinbase disabled withdrawals of ETH and ERC20 tokens, which run through the ETH network.
According to Marius Van Der Wijden, a developer with Go ETH (which helped resolve the issue), the bug was obscure enough that the issue never occurred while this latest upgrade was still being tested.
Wrote Köppelmann: “After installing the updates [Open Ethereum] nodes should be able to resync without any issues (e.g. no resync from genesis or manual deletion of a block necessary).”
Translation: Everything’s cool now. Crisis averted.