Parity and Geth, Ethereum’s two main clients, went out of synch at around 3PM London time today, accidentally creating two chains operating in parallel. As such, Ethereum’s blockchain currently is not in consensus. Users, especially exchanges, are strongly urged to refrain from transacting or to wait for a very high number of confirmations until the matter is resolved.
Developers are currently working as a matter of urgency to resolve the issue with a solution to be expected within hours.
Nick Johnson, one of the main developers of the Geth client, stated to CCN:
“The root cause is an edge case around the state clearing; if an empty account is 'touched' so that it would normally be removed, but the call that 'touched' it goes out of gas, Geth will still remove that account from the state, while Parity will not.
The EIP doesn't explicitly state one or the other is correct, but everyone's agreed that Parity's implementation makes more sense. Not explicitly spelling this out in the standard, and not writing a consensus test for this edge-case was an unfortunate oversight.
The solution is that the Geth team is currently coding up a patch that fixes Geth's behaviour to match that of Parity. We expect to push out a release soon.”
Gavin Wood, founder of Parity Technologies, told CCN that there was a bug in Geth which meant that “around half the network was mining using this broken Geth, half on the correct Parity.” Wood says that “Parity will continue running unchanged with no reversions,” but those operating on Geth may expect a rollback. On that point, Johnson states:
“The geth side of the fork will become non-canonical and be discarded. Most transactions should be included on both sides of the fork, so most users won't experience a rollback. The main risk is assuming transaction finality when interacting with other systems, such as exchanges accepting deposits and paying out in fiat.”
Wood stated that Geth will be fixed and the “mainchain will continue unperturbed,” but until then everyone needs to exercise caution as ethereum’s blockchain is not currently operating under normal circumstances.
The situation is in many ways comparable to Bitcoin’s split in 2013 and 2015. In both cases, a network upgrade led to accidentally two chains because of a bug. For a period of six hours, miners were mining on different chains, with the eventual end result a roll back to one chain and the other discarded.
Eth’s current accidental split is also a result of a network upgrade. The digital currency just finished a number of optimizations to address certain vulnerabilities two days ago, but a bug in the slightly different approaches of the two clients as explained by Johnson above has now led to a network split.
As stated, the issue should be resolved within hours, but in the meantime, especially if you are using a Geth client, it is probably best to not transact at all or wait for a number of confirmations that amounts to hours or longer, until a final resolution.
Image from Shutterstock.