In brief
- Ethereum software clients priced a certain transaction differently.
- The problem snowballed.
In the early hours of Thursday morning, the Ethereum 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 Ethereum, and nodes weren’t syncing to the blockchain. What that means is that anyone running that client—12% of all Ethereum 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 Ethereum, the second-largest software client after Geth. Ethereum users can utilize any number of clients, among them Geth and Parity Ethereum 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 Ethereum 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 Ethereum 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 Ethereum 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 Ethereum network.
According to Marius Van Der Wijden, a developer with Go Ethereum (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.