Ethereum's Latest Hard Fork Shows It Has A Very Long Way To Go

Poor Ethereum. As if it didn’t have enough troubles already. Earlier this year, it hard forked to rescue the DAO, only to suffer the ignominy of seeing miners continue to mine the old chain in defiance of clear and explicit guidance from Ethereum developers. But at least that was an intentional fork, though admittedly controversial. Now, it has forked again – unintentionally.

The problem concerns Ethereum’s clients Geth and Parity. At 3 pm on Thursday November 24th, the two clients slipped out of synch. The effect is to create two versions of the Ethereum blockchain – the Geth version and the Parity version. Or two currencies, if you like - Geth and Parity.

So how did this unfortunate bifurcation happen? As ever, Vitalik Buterin’s explanation on Ethereum’s website is in technical jargon:

Summary: An issue has been identified with Geth’s journaling mechanism. This caused a network fork at block #2686351 (Nov-24-2016 14:12:07 UTC). The new Geth release 1.5.3 fixes the journaling issue and repairs the fork.

Details: Geth was failing to revert empty account deletions when the transaction causing the deletions of empty accounts ended with an an out-of-gas exception. An additional issue was found in Parity, where the Parity client incorrectly failed to revert empty account deletions in a more limited set of contexts involving out-of-gas calls to precompiled contracts; the new Geth behavior matches Parity’s, and empty accounts will cease to be a source of concern in general in about one week once the state clearing process finishes.

I don’t know about you, but this is all Geek to me. Fortunately, because of a long career in information technology, mostly financial – including as a coder – I can speak some Geek, so I understand what has happened. But come on, geeks. You must do better than this. Language is intrinsically divisive. When you choose to communicate only in your own language, you exclude ordinary mortals. Hardly compatible with your aim for Ethereum to be a universal platform, is it? Let’s have explanations in plain English, please.

Here is my ‘plain English’ explanation. This problem concerns the removal of empty accounts. If a transaction to delete an empty account failed due to having insufficient resources (‘out-of-gas’), the Geth client would still delete the account. But the Parity client would not, except under very limited circumstances. Since the account would be removed from Geth but not from Parity, the two clients would have different versions of the blockchain – they would be out of consensus. This is an involuntary hard fork.

Ethereum's clients Geth and Parity were heading down different paths

So, what is Ethereum doing about it? Well, they have issued a fix to Geth – the release 1.5.3 mentioned by Vitalik Buterin. But the trouble with upgrades is that people don’t have to use them. Buterin’s statement that the new release “repairs the fork” is only true if everyone upgrades. If some choose not to, the old Geth chain could continue as a separate cryptocurrency, just as Ethereum Classic has refused to die despite the Ethereum Foundation’s repeated attempts to kill it. So, possibly worried that history might repeat itself (although this is hardly as controversial as the DAO hard fork), Buterin has issued a stark warning:

If you do not update, please be aware you will be on an invalid chain that is not supported.

So much for the old chain dying out naturally because everyone freely decides to use the new one. This is more like Microsoft: ‘old versions of Windows are no longer supported’. Devs rule, ok.

In this case, it is unlikely that anyone would seriously wish to continue using the old chain anyway. Indeed, Buterin says that most people abandoned it not long after the fork:

The chain that was created from block #2686351 by the old Geth client, which both Parity and the new Geth release consider invalid, seems to have been mostly abandoned around block #2686516, meaning that ~165 blocks were mined on the now abandoned chain.

Those people who continued to mine the old chain after the fork aren’t going to get their money back, though:

Transactions are broadcast across the network so most transactions are likely present on both the old Geth chain and the current chain, although mining rewards and transaction fees on the old Geth chain are lost. No transactions or blocks on the chain that both clients will now accept will be reverted.

Cut your losses and move on, miners.

The Geth release is merely the latest in a long line of hard forks and upgrades to fix bugs since the DAO hard fork in July this year. Vitalik Buterin has now belatedly warned that Ethereum is experimental and highly risky:

This is an emergent and evolving highly technical space. If you choose to participate, you should know there are many risks involved including but not limited to risks like unexpected bugs and other technical complications that could result in loss of ether and other consequences. In addition, if you do not update to Geth 1.5.3, you will be on an unsupported network. By choosing to use the Ethereum platform, you assume the risks of this emergent platform.

Yeah, we knew that already. Ethereum is a long way from becoming the “universal platform” of which its developers dreamed. It is far too unstable to be used as a major settlement currency and payment method, and its record of bugs and errors makes its use for legal contracts questionable. It is by any standards a risky investment. Losses are inevitable.

That said, bugs, errors and consequent losses are the stuff of experimental startups. There is no reason to assume that Ethereum could not become a stable platform in the future. Indeed, it is to be hoped that it does. It has much to offer.

But there is a further issue here. Is a ‘universal platform’ even a realistic proposition? Greg Maxwell (nullc on this Reddit thread) doesn’t think so:

….it was promoted as a ‘world computer’ which will replace all the major online services like facebook, uber, etc... even though that makes basically no sense from the perspective of what the technology could actually do even if it were bug free.

Of course, Maxwell has an ax to grind here, being a Bitcoin core developer. Ethereum becoming a universal platform would steal Bitcoin’s thunder. But he has a point. ‘One platform to rule them all’ may be neither achievable nor desirable. The whole point of cryptocurrencies was to end the monopoly of central banks over the creation and transmission of money. Why replace a public monopoly with a private one?

Ethereum will eventually find its rightful place in the pantheon of cryptocurrencies. But at present its ambitions appear too, er, ambitious. The developers need to concentrate on making the platform stable and user-friendly. That is much more important than taking over the world.