In this post, I would like to describe what stale blocks are and what a fork is. Now that we understand what a blockchain is, what mining is and how it works for bitcoin. We are going to use these concepts to introduce additional concepts.
What is a Stale Block?
When two miners mine two different blocks at the same time and broadcast them, we have two valid blockchains. When a miner picks another block to mine, he must choose one of the two blockchains where to append this block. The rule is: the longest chain wins. So the block previously linked to the unchosen blockchain is returned to the mempool. We call this block a stale block. The mempool is where unconfirmed transactions are waiting to be picked by miners.
To avoid any issues due to stale blocks and to consider a transaction in a block confirmed, we must wait for 6 block confirmations. Which means 6 blocks have to be appended to the blockchain after the block to consider the transaction confirmed.
With a centralized architecture, upgrading the network is easy. The network is controlled by a central authority who can make a decision to upgrade and does not need permission from anyone. The upgrades are performed in the servers controlled by a single entity.
Things are different for decentralized networks like bitcoin. Upgrading the network and introducing new features to the software needs approval from the whole community. Since the software is on every node in the network, you need to convince all the users to upgrade and install the new update.
Once the upgrade is available and the community knows about it, we might end up with a situation where some users upgrade and some don’t. If the upgrade is backward compatible. Meaning the ones who upgrade may still communicate with the ones who didn’t, It’s a Soft Fork. If not, we call it a Hard Fork.
The Bitcoin Cash Fork
A fork is a change in the set of rules that governs how the network works. A hard fork is a controversial way to do a fork. It’s a disagreement within the community about what should be true. If you take the example of Bitcoin, a disagreement has emerged last year when trying to solve the scaling issue. Part of the community was convinced that increasing the size of the block would lead to fewer transaction fees and more transactions per second. However, that solution did not make sense to the other part of the community since it was not a permanent one. You will have to increase the blocks size continuously to cope with future demands. That would lead to fewer people being able to run a full node due to the huge amount of memory needed. Which leads to centralization. Bitcoin Cash has a block size of 8 MB. Bitcoin block size is still at 1 MB.
In the next post, I will talk about the issue of scaling. It’s an issue that needs as we move toward adoption of cryptocurrencies.