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.
Read the full article written by Frances Coppola on Forbes.com