Ethereum’s Tale of Two Chains

railway-crossing-e1469485840399
25 July 2016

Zsolt Felföldi is an ethereum developer working on the Go implementation of the ethereum protocol, sometimes called Geth.

In this opinion piece, Felföldi discusses the emergence of a competing blockchain effort, Ethereum Classic, and why he believes it’s important for the project to continue given its implications for blockchains operating on social consensus.

railroad, crossing

Blockchain is not just a huge pile of data created by miners and users.

It’s also not just the specification describing valid state transitions and a genesis block describing initial state. What makes a blockchain valuable is human consensus, a widely held belief that creating machine consensus according to a certain set of rules is useful.

In addition to an exactly specified genesis block, chains are also born with a set of ideas attached to them. Each user can have their own ideas about why the chain might be valuable and how valuable it is.

Unfortunately, one can have assumptions falsely perceived as widespread consensus. These false assumptions will remain undiscovered until an event happens that creates a disagreement about what should be done, whether a fork of the chain would be more valuable than the original one.

At this point, it’s already too late to discuss core values and reach consensus, the damage is done. Where interests were aligned before, there is a conflict now. Everyone is biased and also everyone can assume that others are biased, too. We believed in the existence of a “social contract”, and suddenly realized there is none (or at least some people are breaking it according to our understanding, and we are breaking it according to their understanding).

You cannot kill the other chain, but you wish it would die. Logical arguments get lost in the flow of hate. A war began. Either you believe in the forked chain or the original one, war is not good.

Surely, a united community with a single chain would have been better, but we cannot have that since we don’t agree in core values. Not even inside the Ethereum Foundation. Not having a well-defined “blockchain social contract” at genesis time was a huge mistake.

By the way, I had a false assumption about it, too, it was a shocking experience for me to find out that some people inside the Ethereum Foundation actually support the idea of intervention.

I thought we would all agree that there should be no higher “justice” than the result of EVM execution, that the “stolen” money was the rightful property of the “thief”, that should be proud of creating a system that can protect his or her property even amidst public outrage. I was definitely not alone with this belief in the Go development team.

As it turns out, we were wrong, people still value their sense of justice higher than the immutable law of code. This realization made me a bit sad, but whatever, being paid to develop the coolest software technology ever is still a dream job, even if (at the moment at least) the majority of people think about it in a different way. I will not call those people stupid. I don’t think they are trolling. I also don’t think they are right just because they are the majority.

Truth doesn’t work that way. I intend to keep an open eye, perceive the events closely and learn as much as possible from the evolution of the current situation.

What I realized so far is that a blockchain without a well-defined social contract will sooner or later face serious problems. At this moment, interestingly, the old “classic” chain is the one that already has a better contract. It’s the one that hasn’t been changed, but splitting off the majority of its value into a new chain changed its implied contract.

We can assume that whoever finds the old chain valuable believes that unintended contract behavior is no reason to fork. That chain will never face another crisis because of a similar event. On the other hand, ether holders of the new chain might still disagree if this fork was a precedent for all similar cases or just a one-time disaster fix that shouldn’t happen ever again.

I’m not saying that the forked chain is doomed. What I’m saying is that it still lacks a strategy for such cases.

Until the next major unintended event happens, we might still have time to figure out and reach a consensus about what to do in such a case, so that people can make decisions on what can and what cannot happen to the chain they’re trusting their money with. In any case, I urge everyone to calm down and not be hostile towards the people of the other camp because what happens now hurts the project and both chains a lot.

Everyone has a right, even moral obligation to follow their own set of values, and it would be really easy to do this in a civilized way.

Maybe the old chain will survive, maybe not. The main reason I’d like to keep it alive is because it’s such an interesting and important experiment to see how two similar chains with different implied agreements will evolve.

It might even increase the overall chance of success for the project (and your chances of not losing all your money in a potential next crisis if you’re keeping ETH on both chains).

But let’s make it clear that we (the ethereum developers) have never abandoned the old chain. We never forked the chain. We have implemented a switch in our client to give users a choice to fork if they want to and that’s all. The “Ethereum Classic” chain is just as much our child as the forked one, and if both of them survive (which is the users’ choice, not ours), then I intend to take care of them equally in the future too.

This opinion piece originally appeared on Medium and has been republished with the author’s permission.

Night and day image via Shutterstock