Hard and Soft forks
A hard or soft fork is a frequent occurrence in blockchain development. What are they, and how do they differ?
Soft fork
A soft fork is a fairly common event on a blockchain, as it happens each time the core software part that dictates the block specifications is updated. As it changes the ‘rules’ to which a block must adhere, there will be ‘old’ and ‘new’ blocks during the update. This situation will cease to exist once everyone (all nodes and/or miners) are fully upgraded. It is called ‘soft’ as it will not split the blockchain; everyone is considered willing to update (i.e. there is consensus on the proposed changes).
A soft fork:
- is backwards compatible (old version nodes can still process new version blocks, e.g. the new rules don’t break the old ones);
- usually tightens rules (e.g. a smaller block size);
- will – most likely – not split the blockchain.
Hard fork
A hard fork is ‘hard’ because it will split the chain into two. It occurs when either:
- There’s a dichotomy (difference of opinion) among developers, miners and nodes, as they cannot agree on changes that have a great impact on the functioning of the blockchain. For example when miners want the block-size increased, and the developers refuse this.
- A large, fundamental change to the system is to be implemented (with broad support), which changes the technical characteristics of how the blockchain network operates in a way that new blocks will be refused by old nodes, as they violate their ‘ruleset’ (e.g. a larger block size).
A hard fork:
- is not backwards compatible (‘old version’ nodes will refuse the new version blocks);
- usually loosens the rules (e.g. a larger block size);
- will split the blockchain into two separate chains with a common history (up to the fork).