top of page
  • Writer's pictureAC

Hard & Soft Fork Explained

Updated: Oct 21, 2019

| B + T |


If you’ve been following digital currencies and blockchain technology in recent months, you will have come across a lot of debate about ‘forks’.


In programming terms, a fork is a word used to describe a technical event that takes place when participants on a network must agree on a set of common rules.


Essentially, within the context of a decentralized peer-to-peer network such as Bitcoin, a blockchain is an immutable, permanent, ledger used to record transactions. Bitcoin’s decentralized nature means participants in the network have to agree to a common set of rules to validate transactions and achieve consensus.


The blockchain is maintained by a network of cooperative communicating nodes, which operate Bitcoin’s software. Nodes can validate transactions, add them to their copy of the blockchain, and broadcast these additions to other nodes.



HARD FORK


There are two main types of programming fork: hard and soft.


A hard fork is a change to a protocol that renders older versions invalid. If older versions continue running, they will end up with a different protocol and with different data than the newer version. This can lead to significant confusion and possible error.


With bitcoin, a hard fork would be necessary to change defining parameters such as the block size, the difficulty of the cryptographic puzzle that needs to be solved, limits to additional information that can be added, etc. A change to any of these rules would cause blocks to be accepted by the new protocol but rejected by older versions and could lead to serious problems, possibly even a loss of funds.


For instance, if the block size limit were to be increased from 1MB to 4MB, a 2MB block would be accepted by nodes running the new version, but rejected by nodes running the older version.


Let’s say that this 2MB block is validated by an updated node and added on to the blockchain. What if the next block is validated by a node running an older version of the protocol? It will try to add its block to the blockchain, but it will detect that the latest block is not valid. So, it will ignore that block and attach its new validation to the previous one.


Suddenly you have two blockchains, one with both older and newer version blocks, and another with only older version blocks. Which chain grows faster will depend on which nodes get the next blocks validated, and there could end up being additional splits. It is feasible that the two (or more) chains could grow in parallel indefinitely.


This is a hard fork, and it’s potentially messy. It’s also risky, as it’s possible that bitcoins spent in a new block could then be spent again on an old block (since merchants, wallets and users running the previous code would not detect the spending on the new code, which they deem invalid).


The only solution is for one branch to be abandoned in favor of the other, which involves some miners losing out (the transactions themselves would not be lost, they’d just be re-allocated). Or, all nodes would need to switch to the newer version at the same time, which is difficult to achieve in a decentralized, widely spread system.



SO, WHAT THE FORK?


As mentioned, a fork is a software change which creates two different versions of a blockchain with a shared history. If the networks are split permanently, this paves the way for the creation of two different digital currencies (aka Bitcoin and Bitcoin Cash). In the past, forks have been used to add new features or functionality to a blockchain, and to reverse the effects of hacking or bugs. They’ve also been floated as a potential solution to Bitcoin's scalability problem.



SOFT FORK


A soft fork happens when the software protocol is changed, making previous blocks or transactions invalid. Old nodes will continue to recognize new blocks as valid. In this instance, the software change is backward-compatible.


Think of a soft fork in the same way you would a change in a street’s speed limit. Imagine a street has a minimum speed limit of 50 m/h. The local transport authority ups it to 80 m/h. Those usually traveling at 50 m/h need to speed up to comply with the new regulation, or otherwise risk being fined. However, if most drivers disagree with the increase and stick to traveling at 50 m/h, the authorities may abandon the increase all-together and enable drivers to carry on as they were.


Soft forks are easier to implement than hard forks because they only require a majority of participants to upgrade the software. Likewise, to the speed limit analogy, the majority of nodes must upgrade; otherwise, the soft fork fails and the original chain carries on unchanged.


When the majority of miners’ upgrade to establish new rules, this is known as a miner-activated soft fork (MASF). If full nodes coordinate to do the same, with support from miners, we call this a user-activated soft fork (UASF).


A soft fork is fundamentally a cosmetic change: it modifies or adds functions without tampering with the structure of the blockchain itself. Nevertheless, soft forks cannot be reversed without a hard fork.


Soft forks are arguably the preferred option to upgrade Bitcoin’s blockchain because it’s believed they represent a lower risk of splitting the network.


P2SH put in motion to alter Bitcoin’s address formatting; and BIP 66, which sought to improve signature validation, are two examples of successful soft forks which have taken place in recent years.


10 views0 comments

Comments


Automous Technology, Artifficial Intelligence, Architecture, Design, Emerging, Blockchain, Cryptocurrency, Digital, Electric Vehicles, Science, Self-driven, Trends
bottom of page