The Bitcoin story of the summer has been about the future direction of Bitcoin in relation to block size and a potential Bitcoin fork. There has been much discussion on BIP 100, or Bitcoin XT or BIP 101, and a lot of ideas about what will happen next. Bitcoin is a very complex technology, and I get just as overwhelmed as anybody else with the tech bits of it.
Sometimes, I write an article to learn about something within Bitcoin just as much as to help others learn about what’s going on in the community. My grasp on what a Bitcoin “fork” was pretty shaky, and maybe yours is, too. So let’s go through what a “fork” is together.
To fork or not to fork; that is the question
The Bitcoin blockchain has certain agreed upon rules and protocols that all nodes must follow, which are built into the Bitcoin core software. When everyone agrees on these “Rules of the Node,” we have “consensus” or an agreement on how to move forward together. The major power brokers of the Bitcoin protocol, like core developers and the mining community, must be on the same page to ensure everything works properly.
But sometimes, like with the recent block size debate this summer, we have a disagreement. If this happens and a consensus cannot be formed in the short-term to maintain the status quo for now, a “fork” can develop, much like a fork in the road.
Two chains or more can be formed, depending on how large the factions are that disagree. The same transactions that normally would go into one block in the chain can divide into two or more blocks, creating a fork.
The most common cause is changes in the rules based on Bitcoin core software upgrades. For example, Bitcoin Core Version 0.7 and the upgrade to Version 0.8 resulted in a fork in March of 2013. It took about an hour for the fork to be discovered, another 15 minutes to come up with a proposal, and shortly thereafter, a consensus was reached. In this case, the consensus was for the miners to stick with Version 0.7, for the short-term.
What about a deliberate fork?
Accidents happen, especially in a new technology that is literally changing the world every ten minutes. What if it isn’t an accident? Maybe some developers want to create an altcoin with a totally different set of rules or use larger blocks going forward.
A lot of what happens next will depend upon the goal of the deliberate fork. Will there be a “soft fork” or a “hard fork”? This is an important distinction. A “soft fork” is simply when the proceeding blocks and protocol are “backwards compatible” with the original protocol. The rules of the new blocks are not so radical that the original software cannot recognize the changes, and they are still valid.
A “hard fork” is just the opposite. This new fork or new blocks are not “Backwards compatible” because the modifications are too extensive. The goal in this scenario is commonly a new altcoin creation, which typically has faster transaction times, more coins, bigger block sizes, etc., so new currencies can be created here.
As previously mentioned, another common cause is a software upgrade where miners will need to move to the next version of the Core software. Hard forks are not desirable, as a rule, due to the high potential for loss of computing power, transactions, and man hours.
“Consensus” is commonly accepted to be 75% or more within the active nodes working on the system. The recent issues with the BIP 100 and BIP 101 proposals have seen a mass of voting take place, and BIP 100 has reached 60% consensus amongst the mining community. This proposal would allow more block size flexibility, without a hard, scheduled block size increase over time, like BIP 101.
The common refrain from Core developers and Bitcoin technical experts like Gavin Andresen, Jeff Garzik and Mike Hearn is that Bitcoin is still at “Version 1.0” and is quickly outgrowing it. Bitcoin will go through a hard fork at some point, and it will be for its own good.
If Bitcoin usage continues to expand, it must grow into Version 2.0, and beyond. Most in the community get that. The only question is how do we get there…together?