Hardfork: the tale of the full node referendum

In this post I will outline my opinions on hardforks and what they mean to the community and you. There is a lot of misinformation and scaremongering surrounding hardforks and I hope this post can serve as an explanation for both newcomers and cryptopunks.

What is a hardfork?

Simply, a hardfork is a change to the underlying protocol that causes previously invalid transactions to become valid. This causes non-upgraded users to be unable to validate transactions forcing them to either change their software or "fork" off from the current blockchain. For blockchains and their ultimate goal of consensus and decentralization, hardforks present a challenge. Making important changes to the software that would cause a hardfork is tricky business. It requires everyone in the network to agree that the changes really are important, something that historically has not been easy, especially when the changes potentially alter the economics of the blockchain.

What a hardfork really embodies is choice. This line encompasses the theme of this story; despite all the chaos that a hardfork can cause if it is controversial, the ultimate result is user choice.

If you want to read more about hardforks, the Bitcoin Wiki has a great description here.

softfork dangers

The alternative to a hardfork is what is known as a softfork, where previously valid transactions are made invalid. In my opinion, this is much more dangerous than a hardfork. Softforks can be useful, with Bitcoin's P2SH - Pay-to-Script-Hash function being implemented this way. However, proposed softforks can be very dangerous like the SegWit Softfork which proposes many features that are undeniably very useful and important. SegWit however, was implemented as a softfork resulting in many underlying dangers. Reddit user /u/ForkWarOfAttrition's comment describes well the dangers of SegWit as a softfork and how a hardfork would allow all the amazing features of SegWit to be used.

In order to implement SegWit as a softfork, the anyone-can-spend transaction type needed to be repurposed as a SegWit transaction type. This was necessary since a SegWit soft-fork transaction must be still be seen as valid by a non-SegWit wallet/node.

If 51% of miners agree that SegWit should be deactivated (for whatever reason), then SegWit can be deactivated. This means that SegWit transactions change back into anyone-can-spend transactions. All BTC stored inside of a SegWit address will be spendable by anyone. Miners will obviously have first dibs on these so they will reap all of the plunder. This means that not only do miners have the ability to deactivate SegWit, but they also have the incentive. This is a very dangerous combination.

Had SegWit been implemented as a hard-fork, then this transaction type would not have been re-purposed. A new transaction type would have effectively been created for SegWit instead that has all of the wonderful benefits of SegWit (no transaction malleability, Schnorr signatures, linear sighash scaling, etc.).

I think all of the benefits SegWit has are amazing, but it's simply not worth the risk for many people to use.

I think softforks should be avoided at all costs as they take away from the ability for everyone to run the code they choose. A softfork allows for network participants to declare new rules of concencus without you and render your software unable to validate blocks.

If you want to learn more about the criticisms of softforks and in particular the issues with SegWit on Bitcoin, this reddit thread is worth your read. Yes, it is /r/btc.

the Ethereum hardfork

When it comes to hardforks, you are most likely to be familiar with the 2016 hardfork of Ethereum. This will not be a chronology of the events that took place leading up to the hack or the resulting network fork as there are many write ups for that which you should read and form your own assessment of.

In short, the Ethereum network forked after a hacker was able to drain millions of dollars from a contract built on top of Ethereum. The community was split over the merits of allowing the attacker to keep the funds or to alter consensus with a fork, freezing the funds. In the end, the majority of the community settled around freezing the funds and improving the protocol so that similar attacks are more difficult. Others in the community disagreed with this action on their principles and continued using the chain with the attacker's funds unfrozen.

The moral of this story is the hardfork gave users choice. Although the fork resulted in a smaller community of "Ethereum Classic" with a tenth of the market cap, this community was not censored with a softfork (despite the attempt). Their ability to hardfork represents the ability of choice in a decentralised network. The majority of the community did choose to freeze the funds, in my assessment, this is what the essence of social consensus is meant to be in a decentralised world. Code might be law, but we humans still have the ability to form consensus too.

The whole point here is choice, if you believe in what Ethereum Classic stands for then you are welcome to transact with that version of history (even if that history might not be worth much later).

Full Node Referendum

What this all boils down to is a new terminology, a new way of thinking about hardforks. Inspired by discussions on /r/btc, this language makes it clear what a hard fork really is: a full node referendum.

A full node referendum represents the explicit process where consensus can openly propagate a change. It does so whilst giving every user the choice to vote for or against the change. This ability for social consensus is an important facet of decentralized blockchains. A softfork distracts away from this social consensus by removing your ability to vote; the network will simply ignore your software, continuing on while you are unable to validate.

In a full node referendum, it is ultimately up to you to choose to participate in the referendum. The referendum is transparent, open and hopefully useful, but in the end it is ultimately up to you to choose to participate. If the social referendum is controversial, users are able to follow their principals as per Ethereum Classic. It is important that we avoid softforks or other protocol changes that could endanger the explicit choice of a full node referendum.

I personally like hardforks. Particularly, I like the fact that they give users a measure of control, requiring them to opt in to protocol changes. Sure, they can be a little more chaotic if they're controversial, but that's the price of freedom.

-Vitalik Buterin

Moving away from that do you think that having a community who are happy to hard fork their way out of trouble at any obstacle might prove cumbersome if there was another big event such as a big theft, unethical / illegal contract or simply targeted at harming some people the community did not like.

Even if the community is happy about it, hard forking is still hard, and I think people underestimate how difficult it is to hard fork away a hostile set of users or application in practice, especially if the application is actually trying to dodge you. The users can just keep jumping between accounts and contracts and evade forks forever. So I don’t expect it to become a popular ongoing instrument of delivering justice in the long term. Also, Ethereum is highly multijurisdictional, so government attacks on it are quite hard indeed.

-Vitalik Buterin

I feel that these quotes from Vitalik, the co-founder of Ethereum do an excellent job explaining the and value of hardforks. Moving forward, there will be more hardforks (Ethereum has several planned this year), but we must learn to view these events under the new light of full node referendums and enjoy our freedom.

-Stay decenteralized

Kyle