This was originally published on https://medium.com/coinmonks/hard-fork-soft-fork-what-is-a-fork-cd752ae63403
The blockchain, which is the underlying technology for cryptocurrencies like Bitcoin is a distributed ledger that continues to grow in size as more transactions are added to it in blocks. Transactions have to be validated on the network by the participants ( miners in the case of Bitcoin), in validating these transactions, a set of rules have to be followed to reach a consensus to decide which transactions are valid or invalid resulting in a single chain of data where everyone on the network has agreed are valid.
When some network participants have disagreements with the way consensus is reached on a network, or on how to implement certain changes to the protocol, then a fork is likely to occur with the community going separate ways. Other issues that might not be as contentious also such as bug fixes also result in forks.
Any divergence in a blockchain is a fork.
What is a Hardfork?
A hardfork occurs when there is a change in the blockchain that is not backward compatible (not compatible with older versions) thus requiring all participants to upgrade to the new version in order to be able to continue participating on the network. This results in the creation of 2 chains, the new one with the new rules and the old one, some participants might still be on the old chain depending on if the split was contentious or not.
Contentious Hard forks
A contentious hardfork usually happens when there is a disagreement within the community. The factions go on to fork the current chain and implement the changes they want on their own chain.
A good example of a contentious hard fork was the Ethereum/Ethereum Classic hard fork, a majority of the Ethereum community believed that there should be a hard fork to recover the funds that were lost in the DAO hack while a minority stood by the philosophy of the blockchain been immutable, the majority of the devs went on with the hard fork while those who opposed it continued to mine what is now known as Ethereum Classic on the new chain.
Another example is the Bitcoin/Bitcoin Cash hard fork of 2017. A faction believed that scaling the Bitcoin network should be done by increasing the block size from 1mb to 8mb so that fees will become cheaper and more transactions completed at the same time. The opposing side felt that this would come with security implications and increase centralization as running nodes will become more expensive.
Those in favor of increasing the blocksize(Big Blockers) decided to fork Bitcoin, the result of the fork was a new coin, Bitcoin Cash. All those who had any Bitcoins on the Bitcoin blockchain received the same amount of Bitcoin Cash on the new blockchain.
This kind of forks requires a majority consensus from the network’s participants, when implemented, all the participants on the network voluntarily upgrade their softwares to the new version of the chain.
An example of a planned hardfork is the implementation of Segregated Witnesses (Segwit) that was added to the Bitcoin protocol in 2017.
What is a Soft fork?
Just like hard forks, soft forks also results in creating two versions of a software, the old and the new, in this case, the old version is usually abandoned. Those who still run the old version can still participate on the network although they will be missing the new features added in the current version.
Some coins known as “spin-off coins” were also results of hard forks, for example a coin like Litecoin was created from forking Bitcoin, the creator then changed the consensus algorithm from SHA256 to Scrypt, reduced the block time from 10 to 2.5 minutes etc.
Anyone can fork a coin to create a new one as most of the projects are opensource projects, but it is easier said than done due to the technical requirements of making changes to a blockchain software.
A hard fork :
- will split the blockchain into two, maintaining a common history
- is not backwards compatible with the old version
- will likely change a core rule of the software
A soft fork :
- is backwards compatible with the old one
- doesn’t result in a chain split