Bitcoin Forks: Fully Comprehensive Blockgeeks Guide
Quick question before we begin: Go on Google and search how many cryptos are named “Bitcoin *something*”. It won’t take long but it will be extremely illuminating. You will probably come across many bitcoin forks such as Bitcoin, Bitcoin Cash, Bitcoin Private, Bitcoin Unlimited, Bitcoin XT, etc.
Bitcoin Forks: Fully Comprehensive Blockgeeks Guide
In this guide, we are going to make a sense of this madness. However, it is not enough to simply know what each of these Bitcoin forks are. We need to know why these Bitcoin forks came up in the first place.
For that, we need to reacquaint ourselves with the scalability debate.
How do bitcoin transactions work?
Bitcoin was introduced by an unknown man/woman/group going by the pseudonym, Satoshi Nakamoto in their, now legendary, research paper “Bitcoin: A Peer-to-Peer Electronic Cash System”. What bitcoin provided was a peer-to-peer decentralized, digital currency system. The entire system of bitcoin functions due to the work done by a group of people called “miners”.
So what do these miners do? The two biggest activities that they do are:
- Mining for blocks.
- Adding transactions to the blocks.
Mining for blocks
All the miners use their computing power to look for new blocks to add to the blockchain The process follows the “proof of work” protocol and once a new block has been discovered, the miners responsible for the discovery get a reward, currently set at 12.5 bitcoins (it is halved after every 210,000 blocks), however, this isn’t the only incentive that the miners have.
Adding transactions to the blocks
When a group of miners discovers and mine a new a new block, they become temporary dictators of that block. Suppose Alice has to send 5 bitcoins to Bob, she isn’t physically sending him any money, the miners have to actually add this transaction to the blocks in the chain and only then is this transaction deemed complete. In order to add these transactions to the blocks, the miners can charge a fee. If you want your transaction to be added quickly to these blocks, then you can give the miners a higher fee to “cut in line” so to speak.
For a transaction to be valid, it must be added to a block in the chain. However, this is when a problem arises, a block in the chain has a size limit of 1 mb and there are only so many transactions that can go at once. This was manageable before, but then something happened which made this a huge problem, bitcoin became famous!
The bitcoin scalability problem aka does size matter?
Yes, bitcoin became popular and with that came its own series of problems. In this graph you can see the number of transactions happening per month:
Image source: Wikipedia
As you can see, the number of monthly transactions is only increasing and with the current 1mb block size limit, bitcoin can only handle 4.4 transactions per second. When bitcoin was first created, the developers put the 1mb size limit by design because they wanted to cut down on the spam transactions which may clog up the entire bitcoin network.
However, as the number of transactions increased by leaps and bounds, the rate at which the blocks filled up were increasing as well. More often than not, people actually had to wait till new blocks were created so that their transactions would go through. This created a backlog of transactions, in fact, the only way to get your transactions prioritized is to pay a high enough transaction fee to attract and incentivize the miners to prioritize your transactions.
This introduced the “replace-by-fee” system. Basically, this is how it works. Suppose Alice is sending 5 bitcoins to Bob, but the transaction is not going through because of a backlog. She can’t “delete” the transaction because bitcoins once spent can never come back. However, she can do another transaction of 5 bitcoins with Bob but this time with transaction fees which are high enough to incentivize the miners. As the miners put her transaction in the block, it will also overwrite the previous transaction and make it null and void.
While the “replace-by-fee” system is profitable for the miners, it is pretty inconvenient for users who may not be that well to do. In fact, here is a graph of the waiting time that a user will have to go through if they paid the minimum possible transaction fees:
Image courtesy: Business Insider.
If you pay the lowest possible transaction fees, then you will have to wait for a median time of 13 mins for your transaction to go through.
Solving the Scalability Issue
Now, the scalability issue, on paper, has a very straightforward solution. If the issue is that the block isn’t big enough to account for more transactions, then simply increase the blocksize!
However, it is not as straightforward as that, and this issue has pretty much resulted in so many different bitcoin forks. The Bitcoin community was split into two and they both argued for and against the block size increase.
Arguments for the block size increase
- Block size increase actually works to the miner’s benefit: Increased block size will mean increase transactions per block which will, in turn, increase the number of transaction fees that a miner may make from mining a block.
- Bitcoin needs to grow more and be more accessible to the “common man”. If the block size doesn’t change then there is a very real possibility that the transactions fees will go higher and higher. When that happens, the common man will never be able to use it and it will be used exclusively only by the rich and big corporations. That has never been the purpose of bitcoin.
- The changes won’t happen all at once, they will gradually happen over time. The biggest fear that people have when it comes to the block size change is that too many things are going to be affected at the same time and that will cause major disruption. However, people who are “pro block size increase” think that that’s an unfounded fear as most of the changes will be dealt with over a period of time.
- There is a lot of support for block size increase already and people who don’t get with the times may get left behind.
Arguments against block size increase
- Miners will lose incentive because transaction fees will decrease: Since the block sizes will increase transactions will be easily inserted, which will significantly lower the transaction fees. There are fears that this may de-incentivize the miners and they may move on to greener pastures. If the number of miners decreases then this will decrease the overall hash rate of bitcoin.
- Bitcoins shouldn’t be used for everyday purposes: Some members of the community don’t want bitcoin to be used for regular everyday transactions. These people feel that bitcoins have a higher purpose than just being regular everyday currency.
- It will cause increased centralization: Since the network size will increase, the amount of processing power required to mine will increase as well. This will take out all the small mining pools and give mining powers exclusively to the large scale pools. This will in turn increase centralization which goes against the very essence of bitcoins.
- It will split the community: A block size increase will inevitably cause a fork in the system which will make two parallel bitcoins and hence split the community in the process. This may destroy the harmony in the community. In fact, this is an important point that we must look into right now.
The Fork Dilemma
One of the biggest reasons why many people don’t want the block size to increase is because of the forking dilemma. To be more precise, a block size increase will lead to a hard fork. Don’t worry, we will be telling you what “hard fork” and “soft fork” means. But before that let’s understand what a “fork” in the context of blockchain means.
A fork is a condition whereby the state of the blockchain diverges into chains where a part of the network has a different perspective on the history of transactions than a different part of the network. That is basically what a fork is, it is a divergence in the perspective of the state of the blockchain.
As we have discussed before, there are two kinds of forks:
- Soft Fork.
- Hard Fork.
What Is A Soft Fork?
Whenever a chain needs to be updated there are two ways of doing that: a soft fork or a hard fork. Think of soft fork as an update in the software which is backward compatible. What does that mean? Suppose you are running MS Excel 2005 in your laptop and you want to open a spreadsheet built in MS Excel 2015, you can still open it because MS Excel 2015 is backward compatible.
BUT, having said that there is a difference. All the updates that you can enjoy in the newer version won’t be visible to you in the older version. Going back to our MS excel analogy again, suppose there is a feature which allows to put in GIFs in the spreadsheet in the 2015 version, you won’t see those GIFs in the 2005 version. So basically, you will see all text but won’t see the GIF.
What Is A Hard Fork?
The primary difference between a soft fork and hard fork is that it is not backward compatible. Once it is utilized there is absolutely no going back whatsoever. If you do not join the upgraded version of the blockchain then you do not get access to any of the new updates or interact with users of the new system whatsoever. Think PlayStation 3 and PlayStation 4. You can’t play PS3 games in PS4 and you can’t play PS4 games in PS3.
Andreas Antonopoulos describes the difference between hard and soft fork like this: “If a vegetarian restaurant would choose to add pork to their menu it would be considered to be a hard fork. if they would decide to add vegan dishes, everyone who is vegetarian could still eat vegan, you don’t have to be vegan to eat there, you could still be vegetarian to eat there and meat eaters could eat there too so that’s a soft fork.”
Alright, so you now know about the different arguments for and against the blocksize increase. You also know the difference between soft and hard fork.
Now it is time to get into the different Bitcoin Forks
Firstly, we begin with the most widespread implementation of Bitcoin, the Bitcoin Core. According to Bitcoin.org,
“Bitcoin Core is programmed to decide which blockchain contains valid transactions. The users of Bitcoin Core only accept transactions for that blockchain, making it the Bitcoin blockchain that everyone else wants to use.”
Bitcoin core releases a software client called Bitcoin core which consists of both full-node software for fully validating the blockchain as well as a bitcoin wallet.
When it comes to the blocksize debate, Bitcoin Core’s solution was Segwit instead of a direct blocksize increase. According to them, since Segwit would be a soft fork as opposed to a hard fork, it is a better solution.
Segwit utilizes sidechains to store signature data away from the main bitcoin blockchain.
Sidechain as a concept has been in the bitcoin circles for quite some time now. The idea is very straight forward; you have a parallel chain which runs along with the main chain. The side chain will be attached to the main chain via a two-way peg.
This is what Blockstream’s initial idea of the Bitcoin blockchain and a sidechain looked like:
Image courtesy: Bitcoin Magazine
Dr. Peter Wiulle, who was part of the Blockstream team, thought of adding an extra feature to this sidechain.
This feature would include the signature data of all transactions, separating it from the main chain in the process. This feature would be called Segregated Witness aka Segwit.
This is what a block would look like once it implements Segwit:
So by removing the signature data from the transactions, it was killing two birds with one stone, the block space got emptier and the transactions became malleable free. There was one more thing that needed to be worked on however. Segwit activation was possible only via a hard fork, which is what everyone wanted to avoid. The developers wanted to look at soft fork alternatives. That was when Luke Dashjr hit gold.
Segwit as a soft fork
To utilize segwit as a soft fork the developers had to come up with 2 ingenious innovations. They are as follows:
- Arrange the signature data in the side chains in the form of a Merkle Tree.
- Keep a part of the signature data in a new part of the block.
Doing this not only ensured that Segwit implementation was a soft fork, but it also increase the block size limit as well. This was a major breakthrough but not everyone was happy with this solution. In fact, this directly led to the creation of Bitcoin Cash, which we will talk about later.
But before we do that, we need to checkout some of the early Bitcoin Forks.
Bitcoin XT was the first notable fork of the bitcoin protocol and faced widespread media coverage. Mike Hearn, launched the software in late 2014 to include some of the changes that he was proposing to Bitcoin Core. His Bitcoin Improvement Proposal (BIP 64), called for the addition of “a small P2P protocol extension that performs UTXO lookups given a set of outpoints.
In simpler terms, he was looking to increase the number of Bitcoin Transactions from 7/ sec to 24/sec and the way he was looking to do that was by:
- Increasing the block size from 1 mb to 8 mb.
- Making sure that the blocksize would double in size automatically every 2 years.
This fork would have been fully activated once 75% of the miners gave their approval for the changes.
XT gained a lot of interest in the early stages as more than 1000 nodes ran its software in the late summer of 2015 however interest soon began to drop as the 75% threshold was not achieved by early 2016, the earliest possible switchover date.
Image: Number of Active Bitcoin XT nodes via coin.dance.
Even though the Bitcoin XT experiment failed, some community members still felt that the blocksize increase was the way to go forward. Thus Bitcoin Classic came about, which aimed to increase the blocksize from 1mb to 2mb as opposed to 8mb.
Like XT, Classic saw initial interest with about 2000 nodes using the software, however, the number fell dramatically over time.
Image: Number of Active Bitcoin Classic nodes via coin.dance.
On November 10, 2017, Bitcoin Classic ceased operations and declared that “Bitcoin Cash is now the only hope for bitcoin to become scalable.”
Bitcoin Unlimited, quite like XT and Classic, is a fork of Bitcoin Core, however, unlike those two, Unlimited doesn’t have a set limit. Bitcoin Unlimited grants their users the power to choose whatever blocksize they want to go with. The limit that achieves the majority consensus in the network would be the new blocksize limit.
Bitcoin Unlimited found support from Roger Ver, Antpool, bitcoin.com, BTC.TOP, GBMiners, and ViaBTC among others. Let’s checkout the number of active nodes over time using Bitcoin Unlimited via coin.dance.
As you can see, there are some very noticeable dips in the graph about. Those dips happened because of certain issues that have plagued Bitcoin Unlimited.
- A bug in BU caused Bitcoin.com to mine an invalid block on February 2 2017.
- BU nodes fell from 780 to 370 on 14th March 2017 after nodes were attacked following a bug.
- 70% of BU nodes crashed due to memory leaks on 24th April.
- 70% BU nodes went offline again on 8th May. According to developer Andrea Suisani, this happened because of an Xthin protocol.
Bitcoin Unlimited developers still maintain an edition of their software which works on Bitcoin Cash called “BU Cash.”
Bitcoin XT, Bitcoin Classic, and Bitcoin Unlimited are all forks of the Bitcoin Core software. What we are going to see now are the hardforks of the Bitcoin cryptocurrency itself.
So without further ado, let’s begin with….
Bitcoin Gold is a hard fork of BTC which took place at block 491407, on 24 October 2017. The reason why this fork happened was because of Bitcoin’s perceived mining centralization.
Bitcoin follows the Proof of work protocol and does ASIC mining. Because of this, people and organizations that can afford faster and more powerful ASICs usually have better chance of mining than the others.
As a result of this, bitcoin isn’t as decentralized as it wants to be. Let’s check the hashrate distribution graph:
As you can see, over 50% of the Bitcoin hashrate is owned by 3 mining pools alone.
This is why Bitcoin Gold came about which uses the memory hard equihash as proof-of-work algorithm instead of the sha-256. Because of this small adjustment, BTG can’t be mined by ASICs, they can be mined via GPUs.
Another “interesting” thing that the BTG team did was post-mining. They mined 100,000 coins right after the fork via rapidly mining 8000 blocks at 12.5 BTG per block. These coins were used for two purposes:
- Majority of them were placed into “endowment” and will be used for the growth and research of the ecosystem.
- 5% of the 100,000 coins were set aside as a bonus for the team.
The Bitcoin Private hardfork took place on 28th February 2018 at block 511346.
BTCP is a merger of ZClassic and Bitcoin. ZClassic itself is a fork of ZCash which was developed by blockchain developer Rhett Creighton.
BTCP has two features that makes it pretty different from Bitcoin:
- Firstly, it utilizes ZClassic’s memory hard equihash algorithm, making it ASIC resistant.
- Secondly, it gives users the option to generate either public or private addresses. Private addresses work by using zk-SNARKs.
Zk-Snarks stands for “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”. Its use in modern blockchain technology is immense.
Zero Knowledge proofs came about in 1980’s thanks to the work of MIT researchers Shafi Goldwasser, Silvio Micali and Charles Rackoff. They were working on problems related to interactive proof systems, where a Prover exchanges messages with a Verifier (more on provers and verifiers later) to convince them that they have a knowledge of a certain proof without declaring what that knowledge is.
For a Zero Knowledge Proof to work, it needs to satisfy certain parameters:
- Completeness: If the statement is true then an honest verifier can be convinced of it by an honest prover.
- Soundness: If the prover is dishonest, they can’t convince the verifier of the soundness of the statement by lying.
- Zero-Knowledge: If the statement is true, the verifier will have no idea what the statement actually is.
The most successful Bitcoin fork yet is Bitcoin Cash.
This is how Bitcoin Cash project website is defining itself: “Bitcoin Cash is peer-to-peer electronic cash for the Internet. It is fully decentralized, with no central bank and requires no trusted third parties to operate.” Did you notice the emphasis on the words “peer-to-peer electronic cash”? It is done by design because the primary motivation of bitcoin cash’s existence depends solely on carrying out more transactions as Jimmy Song points out in his Medium article.
Bitcoin Cash (BCH) is a lot like Bitcoin but has some very noticeable differences:
- The blocksize is 8 mb.
- It won’t have Segwit.
- It won’t have the “replace by fee” feature.
- It will have replay and wipeout protection.
- It offers a way to adjust the proof-of-work difficulty quicker than the normal 2016 block difficulty adjustment interval found in Bitcoin.
Since BCH is a result of a hardfork, anyone who possessed BTC got the equal amount of coins in BCH PROVIDED they didn’t have their BTC in exchanges and were in possession of their private keys at the time of the hardfork. So now let’s go through certain interesting features of Bitcoin Cash.
How Bitcoin Cash prevents replay attacks?
One of the best features of Bitcoin Cash is how it circumnavigates one of the biggest problems that any cryptocurrency can face post-forking, the replay attack.
What is a replay attack?
A replay attack is data transmission that is maliciously repeated or delayed. In the context of a blockchain, it is taking a transaction that happens in one blockchain and maliciously repeating it in another blockchain. Eg. Alice is sending 5 BTC to Bob, under a replay attack she will send him 5 BCH as well, even though she never meant to do that.
So, how does bitcoin cash prevent replay attacks? (data taken from Andre Chow’s answer in stack exchange)
- Using a redefined sighash algorithm. This sighash algorithm is only used when the sighash flag has bit 6 set. These transactions would be invalid on the non-UAHF chain as the different sighashing algorithm will result in invalid transactions.
- Using OP_RETURN output which has the string “Bitcoin: A Peer-to-Peer Electronic Cash System” as data. Any transaction which contains this string will be considered invalid by bitcoin cash nodes until the 530,000th block. Basically, before that block you can split your coins by transacting on the non-UAHF chain first with the OP_RETURN output, and then transacting on the UAHF chain second.
So there you have it.
This guide should give you a clarity on the different “Bitcoin X” projects that are going around the market right now.
The idea of this guide was not to demonize any particular project. We just wanted to increase awareness and to reduce the confusion.
We hope you found value in it!