Hard Forks: You Can’t Always Get What You Want

Stephanie Hurder, PhD
Prysm Group
Published in
5 min readJul 16, 2018
Photo by Oliver Roos on Unsplash

In our recent paper, Blockchain Upgrade as a Coordination Game, we discuss the importance and challenges of establishing a governance system for a blockchain when hard forking is an option for part of the community.

Hard forks are extremely common and popular because of the autonomy that they provide to blockchain users. In most real-life situations in which a group of people must make a decision — such as government elections — the losing side can’t feasibly leave the group and set out on its own. Hard forks allow almost costless secession, and more autonomy as a result. However, a hard fork can sometimes be a suboptimal choice for an individual user or a blockchain community, even if some users prefer the policies on the fork. To understand why, we need to understand the role of network effects in blockchain.

Network effects are a phenomenon where the value to the user or consumer of a product or service increases as its user base grows. Most social networks — such as Facebook, Twitter, and Instagram — and online marketplaces — such as eBay and Uber — exhibit network effects. More users on the platform means more content for me to consume, more people for me to share my content with, and more buyers or sellers to transact with.

Blockchain platforms also exhibit network effects. All other things equal, my experience on a blockchain platform improves if there are more other users who are willing to maintain the blockchain, interact on the platform with me, and buy and sell the token on the secondary market.

For this reason, the question of whether I want to participate in a hard fork depends on more than how much I prefer the policy on the new chain compared to the original one. It also depends on how many of the other users will come with me on the fork, versus how many will choose to stay on the original chain. I may prefer the policy that the fork will implement, but if there are no people with me on the fork to transact with, I may prefer to stay on the original chain anyway.

To understand this further, consider the following model.

A blockchain community debates a policy upgrade. The original chain chooses to stay with the status quo policy. In response, a subset of the community chooses to hard fork and implement the upgraded policy. How do I decide whether to stay on the original chain, or participate in the hard fork?

I can mathematically represent my utility from each option as follows.

  • If I stay on the original chain, I get utility U_original(p), where p is the number of other users that stay on the original chain.
  • Similarly, my utility from choosing the hard fork is U_fork(q), where q is the number of other users who hard fork.
  • U_original(p) and U_fork(q) exhibit network effects: they are increasing in p and q. Each chain is more useful to me, all other things equal, if there are more other users with me on that chain.
  • Both U_original(0)=0 and U_fork(0)=0. I get no utility from being on a chain by myself.

Let’s say that I am a user who prefers the upgraded policy. All other things equal, I would prefer the upgrade. So U_fork(p)>U_original(p) for all number of other users p>0.

What can we deduce from this simple setup?

First: My best possible outcome is for all the other users to join me on the chain with my preferred policy (the upgrade).

Suppose there are N total users making the choice between the original chain and the fork. This result follows from two facts:

  • Because both U_fork(q) and U_original(p) exhibit network effects, my utility from either chain increases as more people join me on that chain.
  • Because I prefer the upgraded policy to the status quo policy, I prefer having everyone on the upgraded (fork) chain to having everyone on the status quo (original) chain. In other words, U_fork(N)>U_original(N).

Getting my top choice when it comes to a blockchain requires all other community members wanting to go along with the policy I prefer.

Second: If there is a fork, I will not receive my best possible outcome.

This follows from the network effects and from my preferences.

  • My best possible outcome is for everyone to join the fork, giving me U_fork(N).
  • Since the N users will be splitting between the original chain and the fork, I will have a choice between U_fork(q) and U_original(p) for some p and q that are both less than N. We know that U_fork(N)>U_fork(q) from network effects and U_fork(N)>U_original(N)>U_original(p) from the user’s preferences and network effects.

In this example, my top choice is not available to me. Since I will not get my top choice, I need to compare the outcomes I get from two less preferred options.

Third: I will sometimes prefer to stay on the original chain, even though I prefer the policy on the fork.

Given the choice between the original chain (the status quo policy) with p users on it and the fork (the upgraded policy) with q users on it, there is always a small enough value of q and a large enough value of p such that I would prefer the original chain with p other users to the fork with q other users. There exist p and q such that U_original(p)>U_fork(q).

Neither available option is my best possible option; therefore, either option could be better for me than the other, even when I know I prefer the upgrade policy.

Fourth: A hard fork can occur even if every single user would prefer that the fork did not happen.

The choice of whether to upgrade is a coordination game, which is subject to inefficiencies due to coordination failures. It is straightforward to come up with an example where the entire community has “hard fork” regret and wishes they had stayed unified on a single chain, because the cost of splitting the community outweighs the benefit from having a blockchain policy that you prefer.

--

--

Stephanie Hurder, PhD
Prysm Group

Partner, Founding Economist at Prysm Group (prysmgroup.io), blockchain economics and governance advisory services