Open Ethereum client users faced a consensus error after activating the Berlin hard fork and problems with syncing the Ethereum blockchain. The error was resolved after a few hours.
The planned Berlin hard fork was deployed yesterday on block 12,244,000 on Ethereum. The update included four proposals to improve the current Ethereum network and reduce fees. 294 blocks after the hard fork was activated, a consensus error occurred with one of the software clients – Open Ethereum, and the nodes using the client stopped synchronizing with the blockchain.
Everyone who ran this client – about 12% of all Ethereum nodes – couldn’t use the blockchain until the bug was fixed. The problem led to disconnection Etherscan block explorer. The error was related to a transaction related to a smart contract that does not yet exist but is scheduled for inclusion in a future update. Gnosis CEO Martin Köppelmann wrote on Twitter:
“Therefore, @OpenEthereumOrg handled the gas prices for this transaction somewhat incorrectly, which caused all subsequent problems (the block was rejected as invalid).”
In other words, Open Ethereum priced one transaction differently than other software clients. This had side effects that caused the Open Ethereum client (but not others) to reject a whole block full of transactions, and sync with the blockchain was broken during that time. As a result, exchanges such as BitStamp and Coinbase temporarily suspended the withdrawal of ETH and ERC-20 tokens.
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
Go Ethereum developer Marius Van Der Wijden, who helped solve the problem, the bug was not obvious, so it was not noticed during the upgrade testing phase. The Open Ethereum team fixed the bug a few hours after it appeared. Keppelmann wrote:
“Once the updates are installed, the Open Ethereum nodes should be able to re-sync without any problem – re-syncing from a genesis block or manually deleting a block is not required.”