Following the growing need for a scaling solution to be implemented in Bitcoin, the prospect of a hard fork to the Bitcoin Unlimited consensus rules seems to be becoming a very real possibility. Exchanges have issued a group contingency plan in case of an hard fork stating that Bitcoin Unlimited will be listed as an alternative cryptocurrency. Bitfinex has even created a form of prediction market by issuing BCC and BCU tokens, each representing Bitcoin Core (BCC) and Bitcoin Unlimited (BCU).
However, there are also major concerns regarding this possibility. The Bitcoin Unlimited code seems to have a few bugs like the one that caused the Bitcoin.com pool to mine an invalid block and the one that allowed for an attack on Bitcoin Unlimited nodes, causing them to shut down. There also concerns about the BU mechanism itself, as some state it could lead to a centralized ecosystem.
Putting our economic interests and even the future of Bitcoin aside for a second, watching these events unfold is like watching history in the making. However, to the common Bitcoin user/trader, these events and concepts may be a bit hard to grasp, so we want to provide a high level explanation of what Bitcoin Unlimited is and what could happen in case of an hard fork. Let’s start with the latter.
In order for Bitcoin Unlimited to be implemented, the team wants to have an approval rate of 75%, which according to simulations show that it would result in a smooth transition. However, activation at 2/3rds approval is also possible.
In case of an hard fork, there are three possible outcomes. A successful hard fork would mean that the original Bitcoin blockchain would be abandoned and everyone would change to the forked version. An unsuccessful hard fork would mean that no one moved to the new blockchain and all actors are still on the original one. The middle and what seems to be the most likely outcome for Bitcoin in case of a fork attempt is that two groups of users, miners, services remain on both blockchains. A perfect example of this would be the ETH/ETC situation.
However, we have yet to define what Bitcoin Unlimited is and what it does.
Bitcoin Unlimited is an alternative Bitcoin client and a Bitcoin Improvement Proposal (BUIP001). The biggest change that Bitcoin Unlimited would bring to Bitcoin would be a change in consensus rules and the activation of what is called “the Emergent Consensus” protocol. This protocol allows for a dynamic block size to be voted on by nodes.
The dynamic block size would allow nodes to signal the block size they want and that they are willing to accept. This is done through the BU graphic interface and this setting is called Excessive Block Size (EB). Miners will then, according to the nodes’ signals, increase (or decrease) the block size limit to satisfy the nodes’ requests. This setting is called Maximum Generation Size (MG).
However, if BU is implemented there is the risk that, due to the EB setting being too low for some nodes, there will be a chain split (fork) and that some users will not accept blocks bigger than their EB setting. For this reason, BU has a built-in user-configurable failsafe mechanism that allows users to accept blocks that are above this limit if they reach a certain number. This setting is called Excessive Acceptance Depth (AD).
This way, Bitcoin Unlimited is able to provide a continuous solution for the block size limit issue without the need for later updates. This system ensures that the network scales according to what is needed from it. There are, however, certain concerns expressed regarding this solution. For one, Bitcoin Unlimited is not as well tested and reviewed as its Bitcoin Core counterpart and is, as so, considered riskier due to the possibility of undiscovered bugs.
There is also concerns regarding possible chain splits in Bitcoin Unlimited and regarding centralization of the network. Nevertheless, Bitcoin Unlimited is gaining momentum and may eventually become a reality. We’ll just have to wait and see but if you’re a gambling man, you can check out the Bitfinex Chain Split Tokens.