A blockchain is a decentralized network of nodes that collaborate to validate transactions and store information, as discussed in my previous post. Blockchain technology has some well known limitations: propagation delays, which refer to lag time between when a node sends data and another node receives it a being sent by a node and received another node, transactions getting lost en route to receivers, and even nodes going bad and transmitting false information.
A fork is a change to the protocol, or a divergence from the previous version of the blockchain. When a new, alternative, block is generated by a rogue miner, the system reaches consensus that this block is not valid, and this ‘orphan block’ is very soon abandoned by the other miners.
Hard forks are deliberate, and occur when there is a major difference of opinion within the community which has built and sustained a particular blockchain, and one (or both) of the camps decides to go their own way. The group that disagrees with the original protocol ‘forks’ off its own version of the blockchain and the members who believe in this fork upgrade their systems to work on this new blockchain, leaving the previous one. Nodes running the previous blockchain are not accepted by the new blockchain. Users who prefer the old version can keep their systems and nodes working on it. The divergence essentially creates two competing blockchains.
Soft forks involve optional upgrades. Like hard forks, they involve two version of a blockchain. However, unlike hard forks, users can keep running the old version after a soft fork, and still be part of the same network as the users who have upgraded to the new version.
Bitcoin, the pioneer blockchain cryptocurrency, has had several forks. Recognizing this, the original Bitcoin blockchain (developed by the probably-pseudonymous author Satoshi Nakamoto) is sometimes called Bitcoin Core. Developers can make changes to Bitcoin Core’s blockchain protocol. The following are forks of Bitcoin Core:
1. Bitcoin XT: August 2015
2. Bitcoin Classic: February 2016
3. Bitcoin Unlimited: May 2017
4. Bitcoin Cash: August 2017
5. Bitcoin Gold: October 2017
6. SegWit2x: a proposed fork that has been suspended
Codebase fork is a software development term. When a developer works on the source code of an application (it could be blockchain-based, or another software product) to develop (or create) a distinct and separate version of the software, the new version is called a codebase fork.
It is ultimately the decision of the network’s users whether or not they want to upgrade. Developers cannot force changes onto a network. They can only suggest changes. Users decide whether to adopt them or not. On the blockchain, too, the fate of codebase forks is in the hands of users.