New users and investors to the cryptocurrency and blockchain space seem to be overwhelmed by a couple topics. However, through our conversations and events, we have found that one topic seems to be so complex that recent additions to the crypto & blockchain community don't even touch it. That topic is forks, and specifically, hard forks vs. soft forks.
This post aims to put an end to that confusion by simplifying a not-so-complex topic.
What is a Fork?
A fork is nothing more than a modification to the open-source blockchain code.
Typically, a fork is used to a) implement a fundamental change to the existing cryptocurrency or b) create a new cryptocurrency with similar (but not equal) characteristics as the original.
There are two types of forks—soft and hard forks—of which both are very important to the future of blockchain development.
Vitalik Buterin, one of the creators of Ethereum, describes the difference like this:
There is an essential difference between hard forks and soft forks: hard forks are opt-in, whereas soft forks allow users no “opting” at all. In order for a user to join a hard forked chain, they must personally install the software package that implements the fork rules, and the set of users that disagrees with a rule change even more strongly than they value network effects can theoretically simply stay on the old chain (Vitalik.ca).
A hard fork is a change to the blockchain protocol that renders old versions of that protocol invalid.
These types of forks occur when there is a major difference of opinion within the community as to how the blockchain should continue to be built and sustained.
I believe that hard forks are an inevitable occurrence in the blockchain sector. There have been, and will continue to be, issues that crop up that are best solved with hard forks. I do not think they will be common and I do not think they should be common. But they are an important tool in the toolset that core developers have to move these protocols forward
Adaptability is more important than immutability.
In a hard fork, the group that disagrees with the original protocol 'forks' off its own version of the blockchain. Users and developers then have two decisions.
Those who believe in the new version can upgrade their systems to work on the new protocol, leaving the other one behind. Those who believe in the old version simply don't upgrade to the new one, keeping their systems and nodes working on the old protocol.
Example of a Hard Fork:
A hard fork that increases the block size limit from 1MB to 2MB. Even though a 2MB block was previously considered invalid, full nodes that upgrade to support this hard fork will accept any blocks up to 2MB in size after the hard fork activates.
Nodes on the new blockchain don't interact with, or even acknowledge, nodes and transactions on the old blockchain, and vice versa; nodes and transactions on the old blockchain don't recognize the new blockchain. Those who don't upgrade will be separated from the network and cannot validate the new transactions.
This process of a hard fork creates two competing blockchains.
The other way to modify a blockchain is with a soft fork.
Similar to hard forks, soft forks involve two versions of a blockchain. However, soft forks are simply optional upgrades. With a soft fork, users can keep running the old version and still take part in the same network as the users who decided to upgrade to the new version.
Soft forks are much easier to implement as compared to hard forks because only a majority of participants, as compared to all participants, need to upgrade the software.
The important aspect of soft forks is that they're "backward compatible." This simply means that old transactions can be recognized by new nodes, or in other words, non-upgraded nodes will still see new transactions as valid. Compare this to hard forks, where non-upgrades nodes don't recognize new transactions.
Although soft forks don't require nodes on the network to upgrade to maintain consensus, if the non-upgraded nodes continue to mine, the blocks they mine won't be accepted by the upgraded nodes because they will violate the new set of consensus rules.
Example of a Soft Fork:
A fork that restricts the block size limit from 1MB to 500KB. Even though a 1MB block was previously considered valid, full nodes that upgrade to support this soft fork will reject any blocks larger than 500KB after the soft fork activates.
Because of the way a soft work works, the forked blockchain needs a majority of the hash power in the network to succeed. If it doesn't get a majority of hash power, the soft fork will be become the shortest chain and get orphaned by the network. If a majority is reached, the older network will fall into disuse and the new, forked blockchain will gain recognition as the 'true' blockchain.
Forks Guide Blockchain Development
Forks are typically led by one of two groups:
1) The core development team of a blockchain project plans and guides a fork
2) A group of developers are dissatisfied with an element of an existing project and initiate a fork
The former typically goes smoothly, while the latter can be a highly contentious process that tends to center around governance issues.
For a fork to be successful, a strong community of developers must recognize that there is a better approach to an issue within blockchain project—handling the scalability problem could be one such issue.
Forks are possible because of the open-source nature of blockchain; any experienced developer team can come together and create what they believe is a better offering, all without any permission from previous developers. No group has absolute control over the fate of a cryptocurrency project.
Forks are a more democratic approach to project development than we have ever seen before. They give cryptocurrencies flexibility and update protocols as needed, enabling the best ideas to win out over the long-run. Because of this, forks are generally seen as a great way to allow a cryptocurrency community to evaluate and decide which ideas and developments are most promising.
Forks relate directly to a blockchain's governance, which we explained in this post.