What is a bitcoin fork?

In this article I will address the question “What is a bitcoin fork?”. It seems to be a question a lot of people struggle to properly answer, so I will do my best to explain it to you in simple terms.

So “what is a bitcoin fork?” There are 3 types of bitcoin forks: (1) a software fork, (2) a network fork and (3) a consensus fork. A software fork is a software change to the bitcoin reference client. A network fork is a split in the bitcoin blockchain. A consensus fork is a change in the consensus rules of the bitcoin network.

Below I will explore this answer in more detail. I will begin by explaining what we mean when talking about a bitcoin ‘client‘ and touch upon the difference between a ‘full‘ client and a ‘lightweight‘ client. I will then subsequently explain how the bitcoin blockchain works, and discuss the two different ways a network fork can occur. Finally, I will explain the two possible types of consensus forks.

1. What is a software fork?

A. What is a bitcoin client?

A bitcoin ‘client‘ is the end-user software that you use for generating key pairs and bitcoin addresses, and for sending and receiving bitcoin transactions (i.e. interacting with the bitcoin network).

There are two different types of bitcoin clients: (1) ‘full‘ clients and (2) ‘lightweight‘ clients.

1. Full client

A ‘full‘ client, is a bitcoin client that verifies and validates all bitcoin transactions that happen on the bitcoin network and all bitcoin blocks that are mined.

In other words, a full client stores a complete copy of the entire bitcoin blockchain, meaning that the client does not have to rely on any third party to interact with and access data about the bitcoin network.

You can find a (non-exhaustive) overview of bitcoin full clients by clicking here (see Section ‘Table’, indicated as Full under ‘Network Security’).

2. Lightweight client

Unlike a full client, a ‘lightweight‘ client is a client that relies on a third party service provider for information about and access to the bitcoin network. In other words, it does not keep a record of the entire bitcoin blockchain, nor does it independently verify and validate the transactions that happen on the bitcoin network and the bitcoin blocks that are mined.

In this regard, most bitcoin wallets are lightweight clients, whereby the user relies on the company that is servicing the bitcoin wallet for access to and data about the bitcoin network. Similarly, if you trade or transact bitcoin on an online exchange, you are relying on the bitcoin exchange for tracking the state of the bitcoin network and relaying your transactions to the bitcoin network.

A lightweight client requires less resources to run on the part of the user, because the user doesn’t need to store the entire bitcoin blockchain on his/her device. At the time of writing, the size of the entire bitcoin blockchain is approaching a non-trivial size of 235GB. This makes lightweight clients also ideal for use on mobile devices (e.g. smartphone).

In this regard however, it is important to stress that using a lightweight client always comes with an important trade-off. Indeed, when using a lightweight client you are dependent upon a third party for relaying your transactions to the bitcoin network and for verifying the state of the bitcoin network. This means that you are relinquishing one of the most important features of bitcoin, which is financial sovereignty in the hands of the individual user. Bitcoin is a peer-to-peer network, eliminating the need for third party intermediaries (e.g. no banks needed for settlement of transactions). As long as you are not running your own full node, you are in effect re-introducing third party intermediaries which you are trusting to act honestly.

In addition, running a full node gives you a real voice on the bitcoin network, meaning that you are able to vote (i.e. approve or reject) proposed changes to the bitcoin protocol. If you are not running a full node, you have no say whatsoever with regard to the evolution of the bitcoin network.

B. A software fork explained

The source code of the bitcoin protocol and its reference software implementation are open source. They are freely available to download from this Github repository, in order for anyone to use or built further upon.

The original bitcoin client was developed by Satoshi Nakamoto, the mysterious inventor of bitcoin. Over the years, a variety of other client implementations of the bitcoin protocol have been developed.

At present, the reference bitcoin client is the software implementation developed by bitcoin developer Wladimir van der Laan, which is commonly referred to as ‘Bitcoin Core‘. Bitcoin Core builds further upon the original bitcoin software implementation and the second bitcoin software implementation called bitcoind.

Many other software implementations of bitcoin have been developed based on the reference client Bitcoin Core, including Bitcoin Knots by bitcoin developer Luke Dashjr.

These alternative software implementations are what we refer to as software forks. They are different from the client Bitcoin Core and differ from each other (i.e. they each provide a different set of features), but are all compatible with the bitcoin protocol (i.e. they adhere to the rules governing the bitcoin network). Therefore, they do not create different networks, but all interact with the same bitcoin protocol.

2. What is a network fork?

A network fork is a split in the bitcoin blockchain, resulting in two separate chains that are not identical to each other.

In order to understand the two different ways a network fork can occur, I will first briefly explain how the bitcoin blockchain works.

How does the bitcoin blockchain work?

The bitcoin blockchain is a chain of bitcoin blocks, each bitcoin block referring to a previous bitcoin block, all the way back to the genesis block (i.e. the first bitcoin block ever created).

bitcoin block is simply a batch of bitcoin transactions that have been broadcast to the bitcoin network and which have been grouped together by a bitcoin miner and subsequently added on top off the last known bitcoin block.

A bitcoin block is added by a bitcoin miner to the bitcoin blockchain on average every 10 minutes.

In essence, bitcoin miners compete with each other to be the first to solve a cryptographic hash algorithm (i.eSHA256), also known as ‘proof-of-work’, for a block of transactions that each of them have assembled.

The bitcoin miner who is the first to solve the ‘proof-of-work’ algorithm, has earned the right to record its block of transactions on the bitcoin blockchain and is awarded the coinbase reward and the transaction fees of the transactions that are included in its block.

Once a solution to the proof-of-work algorithm is found for a block of transactions, this block is added to the bitcoin blockchain and a new competition starts amongst all the bitcoin miners for the next block of transactions.

The difficulty of solving the ‘proof-of-work’ algorithm is periodically and automatically adjusted (i.e. either lowered or increased) by the bitcoin network, taking into account the total amount of hashing power available on the network which changes constantly, in order to make sure that on average a bitcoin block is mined every 10 minutes.

What are the two types of network forks that can occur?

There are two types of network forks that can occur on the bitcoin network:

  1. The first type of network fork is a fork that can occur without a change in the consensus rules governing the bitcoin network.
  2. The second type of network fork is a fork that occurs when a change is made to the consensus rules governing the bitcoin network that is not backwards compatible.

1. A network fork without changes to the consensus rules

A network fork without changes to the consensus rules can occur whenever there is a temporary disagreement between bitcoin full nodes about what is the correct version of the bitcoin blockchain.

As set forth above, on average a new bitcoin block is added to the bitcoin blockchain every 10 minutes. This 10 minute block interval minimizes the possibility that two (or more) valid blocks are mined containing the same transactions. However, such situation can occur whenever two or more mining nodes successfully mine a valid block within a short timeframe, more in particular before either of them is made aware of each other’s newly mined block.

As soon as a bitcoin miner finds the solution to the proof-of-work algorithm for the block it has assembled, it will broadcast its block to the bitcoin network, informing the nodes of the network (including the bitcoin miners) and thereby resetting the race for the next bitcoin block. However, the size of the bitcoin network is such that a short period of time may elapse before the broadcast of a newly mined block propagates throughout the entire bitcoin network. Hence, it is entirely possible that a new block is mined, even though another block containing (a part of ) the same transactions had already been mined prior and broadcast to the bitcoin network, but not yet received by the miner of the most recent bitcoin block.

In such event, two different versions of the bitcoin blockchain will temporarily exist amongst the nodes of the bitcoin network (often referred to as a ‘fork‘). Indeed, two valid blocks will be in existence containing duplicate transactions. In such case, the last block added to the bitcoin blockchain by a bitcoin node will depend on which of the two mined blocks said bitcoin node had received first. In other words, there will be two bitcoin blockchains, each having a different tip (i.e. last added bitcoin block).

The nodes of the bitcoin network will eventually re-converge to a single, longest chain, which will be considered as the main bitcoin blockchain, containing the most number of blocks, and therefore displaying the most amount of proof-of-work.

By ensuring that on average a sufficient amount of time (i.e. 10 minutes) elapses between newly mined blocks, the risk of a network fork materializing is mitigated, though not entirely excluded. In other words, the 10 minute block interval represents a compromise between (1) the speed of the network and (2) the stability of the bitcoin network.

2. A network fork with changes to the consensus rules that are not backwards compatible

A consensus fork is a change to the consensus rules governing the bitcoin network.

The consensus rules are the set of rules governing the bitcoin network that each bitcoin full node will enforce when considering the validity of a bitcoin block and its bitcoin transactions. E.g.: Each bitcoin full node will verify that the maximum coinbase reward included in a new bitcoin block is respected, and will reject any new bitcoin block exceeding the coinbase reward.

There are 2 different types of consensus forks:

(a) a consensus fork that is backwards compatible with the old consensus rules of the bitcoin network, otherwise known as a soft fork; and

(b) a consensus fork that is not backwards compatible with the old consensus rules of the bitcoin network, otherwise known as a hard fork.

A hard fork will cause a network fork, meaning that the bitcoin blockchain will split in 2 different incompatible networks/blockchains.

(a) A soft fork

A soft fork is a consensus fork whereby the consensus rules are made more restrictive. In other words, certain things that were previously considered valid on the bitcoin network, are now considered invalid according to the new consensus rules.

Soft forks are backwards compatible, meaning that because the new rules are more restrictive than the old rules, things that are valid under the new rules will be valid according to the old rules.

Soft forks are always optional for bitcoin nodes, i.e. a bitcoin node will be able to choose whether or not it wants to adopt the new more restrictive consensus rules. Indeed, if a bitcoin node does not wish to upgrade to the new more restrictive rules, it will still be able to operate on the bitcoin network in accordance with the existing less restrictive consensus rules. Hence, a soft fork is a consensus fork that does not result in a network fork.

An example of a recent soft fork upgrade to the bitcoin network is the implementation of Bitcoin Improvement Proposal (BIP) 148, which, amongst others, introduced Segregated Witness via a so-called ‘user activated soft fork’ (abbreviated: UASF).

A UASF is a mechanism for activating a backwards compatible change to the consensus rules of the bitcoin protocol, through bitcoin full nodes signalling support by upgrading to the new version of the bitcoin protocol (as opposed to ‘miner activated soft forks‘, requiring mining nodes to signal support for the upgrade).

(b) A hard fork

A hard fork is a consensus fork whereby the consensus rules are made less restrictive. In other words, certain things that were previously considered invalid on the bitcoin network, are now considered valid according to the new less restrictive consensus rules.

Hard forks are not backwards compatible. On the one hand, bitcoin nodes following the old consensus rules will consider blocks built according to the new less restrictive consensus rules invalid, meaning that they will reject such new blocks. On the other hand, bitcoin nodes following the new less restrictive rules will accept the new types of blocks. This will cause the bitcoin blockchain to split in two separate chains, each governed by a different set of incompatible consensus rules.

In other words, bitcoin nodes that wish to remain on the upgraded bitcoin network will have no choice but to upgrade to the new less restrictive consensus rules, hence the name ‘hard’ fork. This means that a hard fork is a consensus fork that will always result in a network fork (as opposed to a soft fork, see supra).

Examples of past bitcoin hard forks are:

Other Related Questions

What happens to your bitcoins when a hard fork occurs?

As explained above, a hard fork will always result in a split in the network. From that point onwards there will be 2 different networks in existence, each of which will be governed by a different set of consensus rules which are incompatible with one another.

If you have a bitcoin balance prior to a hard fork, you will now have two identical separate bitcoin balances after the hard fork, namely one balance per separate blockchain. In essence, you will have two separate types of coins (one type that is compatible with blockchain A and one type that is compatible with blockchain B). These two different types of coins are not interoperable, taking into account that they each are governed by a different set of incompatible consensus rules.


Attention! Do you store your cryptocurrencies on an online platform? Please note, in that case you are not the actual owner of your cryptocurrencies!

In particular, you run the risk of losing all your cryptocurrencies, without any recourse, in the event that the online platform or your personal account falls victim to hacking or in the event of an unexpected closure (e.g. insolvency) of the online platform.

Protect yourself against hacking and take real ownership of your cryptocurrencies by storing your cryptocurrencies offline on your very own Trezor hardware wallet. Don’t wait before it’s too late and take immediate action now!

Click on the ‘Buy Now’ button below to buy a Trezor wallet from the official Trezor website.

Trezor Model T – hardware wallet


Business information

Genesis Block BVBA
Avenue Winston Churchill 220
1180 Uccle
Belgium
BTW: BE0685844735

Products


We use cookies to ensure that we give you the best user experience on our website. By clicking OK, you consent to our use of cookies on this device in accordance with our cookie policy, unless you have disabled them.