In your cryptocurrency travels, you may have periodically come across the phrase ‘hard fork’ or just the word ‘fork’ in general, especially in relation to various branches of Bitcoin. You might assume that either this does not mean much or the meaning behind it may not hold much importance.
“Why is something like Bitcoin Cash labelled as a ‘fork’?” you may be asking. This article will serve as a guide to the meaning of forks and their intricacy.
It is difficult to properly explain what forks exactly are and what Bitcoin has to do with them without first establishing the basic definitions of each. This includes what Bitcoin is, how the mining of the coins works, and also the history behind the infamous debate about expanding the block size limit. All of this may seem excessive, but it is very useful for contextual purposes.
Bitcoin Forks and Mining
Bitcoin is the first cryptocurrency that one thinks of – and is generally introduced to – when it comes to digital transactions.
It is an independent type of currency that functions on a peer-to-peer network and was created by the mysterious figure, Satoshi Nakamoto, to follow the ideas that were set up in his crafted ‘white paper.’ It continuously maintains records of past and current transactions and new units of currency are generated based on the solution of a series of complex mathematical problems.
Public keys and private keys are used to preserve the ongoing balance of the system. The public key acts like a bank account number and serves as the address published to the world, performing as the location of where others will send the user Bitcoins. The private key functions as an ATM PIN number and is used to authorize Bitcoin transactions, but otherwise must be kept confidential.
Those in the decentralized peer network are individuals and companies who participate and govern the computing power are known as “miners”, who work to earn rewards (i.e. a new Bitcoin’s release). The miners are key pieces to the operation of the overall system, as they are responsible for Bitcoins being distributed for public use.
Mining works via a peer-to-peer process carried out by computers that solve a series of mathematical problems that are incredibly complex. In fact, the typical odds of successfully solving one of these problems are relatively slim, with the level of difficulty of recent blocks being 7 trillion. When a problem is solved, a Bitcoin is then produced and the miners simultaneously make the network more reliable in regards to the Bitcoin payment.
This mining process is the primary method of releasing cryptocurrency into circulation and is what brings additional Bitcoins into existence.
When a community of miners discovers and mines a brand new block, they then become the temporary ‘chief’ or advisor of that block. For example, if Person #1 wants to send 10 Bitcoins to Person #2, they are not physically sending that second person any money. It is the miners who have to actually add this specific transaction to the chain to join the other blocks and it is only at that time that the transaction is then deemed as complete.
In order to include these transactions to the blocks, the miners charge a fee to the users and if you want your transaction to be added to the blocks as promptly as possible, then you can give the miners a much higher fee to secure ‘a better spot in line’ in a way. Adding a block to the chain is the only way to classify a transaction as “valid.” While sounding like a reasonable requirement, it does, in fact, pose a problem, as a single block in the chain has a 1 MB size limit and there are only so many transactions that can operate at once.
This particular shortcoming was manageable for a time, but when Bitcoin became popular, that was when things became hectic.
The Scalability Issue
The gradual increase in celebrity and intrigue opened the floodgates for various issues, one of which was the escalating amount of transactions per month. With the block size limit being 1 MB, this meant that Bitcoin could only handle 4.4 transactions per second. The initial developers had set forth this design in size limit because they wanted to cut down on all the spam transactions, which run the risk of clogging up the entirety of the Bitcoin network.
With the rapidly increasing number of transactions ceasing to slow down, the rate at which the blocks were filling up was increasing just as quickly. It was not uncommon for users to have to wait until new blocks were produced so that their transactions would go through. Unsurprisingly, this all led to an excess amount of transactions and the only way you could get your transactions prioritized is to pay a high enough transaction fee to even attract and stimulate the miners just enough so that they could prioritize your transactions.
This fiasco led to the introduction of the “replace-by-fee” system, and it works as follows:
- Person #1 is sending 10 Bitcoins to Person #2, but the backlog is not allowing the transaction to go through and Person #1 can’t just omit the transaction because Bitcoins cannot be given back once they are spent.
- Person #1 can do another transaction of 10 Bitcoins with Person #2, but this time around with the inclusion of transactions fees, which are high enough to incentivize the miners.
- As the miners place the transaction into the block, it will inevitably overwrite the previous ‘failed’ transaction and render it null and void.
While this “replace-by-fee” system has proven itself to be profitable for the miners, it has also been shown to be inconvenient for users who are probably not that well to do finance-wise. If you pay the lowest of the transaction fees, then you will have to wait for – on average – close to 15 minutes for your transaction to go through.
Block Size Debate
The scalability problem has an obvious, rudimentary solution; on paper, that is.
If the core of this issue is simply that the block has a size limit that is too small to account for any more transactions, then all that has to be done is enlarge the block size. However, this apparent solution has sparked mixed opinions and resulted in numerous different Bitcoin forks. To put simply, the bitcoin community was split into two opposing sides: those who support the block size increase and those who are against it.
Arguments in favor of the block size increase:
- The increase in the size limit is beneficial for the miners because this will mean that transactions will increase per block, which will, in turn, expand on the number of transaction fees that a miner could possibly make from mining a single block.
- Bitcoin needs to develop and grow more, in addition to it needing to be more accessible to just about everyone. If the size limit of the block does not change, then the transaction fees in all probability will only go higher and higher, garnering more alienation for the ‘common man’ and only providing services to big corporations and those who are rich enough to use it. A goal of Bitcoin is to be available for everybody.
- Obviously, any changes implemented will not happen all at once; it is a gradual process that will happen over time. The greatest concern that people have in regards to the block size change is that way too many things will end up being affected at the same time and that will culminate into a major system disruption. Nevertheless, those who are in support of the block size increase believe that this is an unnecessary fear, due to the fact that most of the modifications will be dealt with over a period of time.
- There has already been a lot of approval and backing for the block size limit increase and many believe that those who do not open their mind to the expansion will end up being left behind.
Arguments against the block size increase:
- The miners will lose all motivation because the fees will lessen. If the block size increases, then the transactions will be easily inserted, which in turn will end up lowering the transaction fees. There is a very real possibility that this may de-incentivize the miners and they will move on to other more profitable currencies, and if the number of active miners decreases, then this will diminish the general hashrate of Bitcoin.
- Bitcoins should not be used for everyday intentions. A good portion of the community does not want Bitcoin to be used for regular transactions and these particular people feel as though Bitcoins have a much higher, more significant purpose than being just another form of commonplace currency.
- Increasing the block size will lead to increased centralization. If the size of the network were to grow, then the amount of processing power that is required to mine will grow as well. This will remove all of the small mining pools (a system where communities of individual miners contribute to the formation of a block and afterwards split the reward amongst all of them) and transfer the mining powers exclusively to the larger scale pools. This will result in an expansion of centralization, which goes against the core essence of what Bitcoin is.
- Among the more recognizable arguments is that the size increase will split up the community. Growth in the block size will inevitably result in the creation of a fork in the system, which will make two parallel Bitcoins and thus, the aforementioned split in the community will be conceived. This will undoubtedly damage the harmonious relationships in the community.
With the last argument being established, we can now segway into an important point; one that ties into the basis of this guide, which is the subject of ‘forks.’
Forks: Soft & Hard
As you might have picked up on, one of the biggest reasons why so many people are against the block size increase is due largely in part to the dilemma surrounding forking.
By definition, a ‘fork’ is a condition by which the status of the blockchain deviates into chains where a portion of the network has a differing perspective on the history of the transaction than another part of the network. Basically, a fork is an altercation in the viewpoint of the general state of the chain.
Anyhow, in regards to the argument against the block size growth, an increase will lead to a ‘hard fork.’ There is another fork called a ‘soft fork’ and as you might expect, both are different from each other.
A ‘soft fork’ is a change in the protocol of a software system where only the previously valid blocks/transactions are rendered invalid. This specific fork requires only a large chunk of the miners upgrading to enforce the new rules. An example of this being that you are able to open an MS Excel 2015 spreadsheet on an MS Excel 2005 version of the program. Now, having said all that, the key point of divergence is that all the updates you can use on the newer version of the software will not be visible to you on the older version. You can implement GIF files on the spreadsheet in the 2015 version, but you will not be able to see them on the 2005 version.
A ‘hard fork’ is a radical modification to the protocol that makes blocks/transactions that were previously invalid now valid (or vice versa). This will require all the nodes and users to upgrade to the software’s latest version. In essence, a hard fork is a permanent divergence from past versions of the blockchain, and any nodes running this older version will no longer be accepted.
Obviously, the primary difference between the two forks is that once the hard fork is utilized, there is no going back; no upgraded version of the blockchain, no access to updates or interaction with users of the new system.
Now that soft and hard forks have been defined and both sides of the block size argument have been highlighted, we can finally move on to the different forks of Bitcoin.
Bitcoin Core is an implementation of Bitcoin itself. Its website boasts that, “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.” In this system resides both a Bitcoin wallet and also full-node software used for validating the blockchain’s stability.
When it comes to the debate surrounding the block size increase, Bitcoin Core’s provided solution – rather than directly expanding the size limit – was ‘Segwit’ (Segregated Witness), a protocol upgrade that fixes the quality of transactions by omitting the signature information (the “witness” information) and storing it outside the base transaction block. Segwit was regarded as more of a soft fork as opposed to a hard fork, thus a better resolution. This protocol employs the use of sidechains, which is a concept and function wherein a parallel chain runs alongside the main chain and the side is linked to the main chain through a two-way peg.
A member of the Bitcoin team, a man by the name of Dr. Peter Wiulle, had the idea of adding an additional feature to this side chain. This feature would incorporate the signature data of all of the transactions and would separate it from the main chain in the process. This feature would later be identified as the aforementioned ‘Segregated Witness.’
So, by removing all of the signature data from the transactions, the block space would get more barren and the transactions would become free of malleable.
One thing that needed to be worked on was that in order to activate Segwit, it had to be done via a hard fork; something that most would like to avoid. Because of this, developers set out to look for more of a soft fork alternative. One developer named Luke Dashjr formulated just this alternate.
To properly utilize the Segwit system as a soft fork, two innovations came into existence after some development:
- Arranging the signature data in the sidechains into the formulation of a ‘Merkle Tree,’ also known as a ‘hash tree,’ where every leaf node is labelled with a data block’s hash and every non-leaf node is classified with the cryptographic hash of the labels of its ‘child’ nodes.
- Keeping a portion of the signature data in a newer part of the block.
By harnessing these two techniques, it not only guarantees that the implementation of Segwit would be a soft fork, but it additionally increases the size limit of the block. While a monumental breakthrough, not all were thrilled about this resolution, and this later led to the creation of Bitcoin Cash (something that will be further discussed later).
Now that the basic foundation of the forks and Bitcoin Forks have been made clear, let us now take a closer look into some of the earlier types of Bitcoin Forks.
#1 – Bitcoin XT
Bitcoin XT was the first, most well-known fork of the Bitcoin platform and has seen widespread media coverage since its launch in late 2014 by Mike Hearn. The website describes the system as, “a full node implementation of a Bitcoin Cash (BCH) and Bitcoin (BTC). Bitcoin XT embraces Bitcoin’s original vision of simple, reliable, low-cost transactions for everyone in the world. Bitcoin XT originated as a series of patches on top of Bitcoin Core and is now an independently maintained software fork.”
It includes some changes that he had proposed for Bitcoin Core. Hearn’s Bitcoin Improvement Proposal (BIP 64) had called for an increase to the number of transactions in Bitcoin from 7 per second to 24 per second and how he was looking to go through with this was by doing two things:
- Increasing the size of the block from 1 MB to 8 MB
- Making absolutely sure that the block size would automatically double in size every two years
This fork’s full activation would only occur once 75% of the miners gave the changes their approval and in the early stages of XT, it managed to garner a lot of interest. In the late summer of 2015, more than 1,000 nodes ran the software. However, as time passed, the interest in the system dwindled as the 75% threshold was ultimately not reached by the switchover date in early 2016.
#2 – Bitcoin Classic
In spite of the failure of the Bitcoin XT experiment, some of the members of the community felt as though increasing the block size was the ideal way to move forward, hence the creation of Bitcoin Classic. This aspired to increase the size of the blocks from 1 MB to 2 MB, rather than XT’s aim of 8 MB.
“Bitcoin Classic stands for the original Bitcoin as Satoshi described it, ‘A Peer-to-Peer Electronic Cash System’,” states the website.
It eventually met a fate similar to that of Bitcoin XT, wherein it garnered initial interest as roughly 2,000 nodes used the software, but as time went by, the numbers gradually fell. As of late 2017, Classic put a halt on all of its operations.
#3 – Bitcoin Unlimited (BU)
Much like XT and Classic, Bitcoin Unlimited is a fork of Bitcoin Core, but unlike XT and Classic, BU does not have an established limit. In fact, it allows its users to choose whatever size for the block that they would like to go with. The limit that goes on to achieve the majority consensus in the network will end up being the new block size limit.
It has already managed to find support from systems such as Roger Ver, bitcoin.com, Antpool, GBMiners, BTC.TOP, and ViaBTC among many others.
The website describes the perks of this fork as, “Bitcoin Unlimited powers the backbone of the Bitcoin network by using novel technologies.
- Adjustable Block-size Cap (ABC): The BU client allows node operators and miners to easily adjust the size of blocks they accept without having to restart their node or recompile new executables.
- Xtreme thin blocks (Xthin): Bitcoin Unlimited was the first client to fix the inefficiency in the core Bitcoin code that resulted in transactions often being received twice by each node. BU’s solution improves block propagation times and reduces the number of required bytes.
- Parallel validation: The BU client enables nodes to validate more than one block – along with new incoming transactions – all at the same time. This neutralizes an existing attack vector while improving the network’s performance.”
Just as it has seen success, so too has it seen some dips in usage and quality. These dips happened due to certain issues that have afflicted Bitcoin Unlimited, including:
- February 2, 2017 – A bug in BU caused the Bitcoin website (Bitcoin.com) to mine a null block
- March 14, 2017 – BU nodes fell from 780 to 370 after the nodes were attacked following a bug
- April 24, 2017 – BU nodes suddenly crashed as a result of memory leaks
- May 8, 2017 – 70% of BU nodes had gone offline and according to developer Andrea Suisani, this occurred due to an Xthin protocol
Unlimited developers still uphold an edition of their software that functions on Bitcoin Cash called “BU Cash.”
What we have been discussing up until this point (Bitcoin XT, Bitcoin Classic, and Bitcoin Unlimited) are, as previously stated, all forks of the Bitcoin Core software. From this point on, we will be analyzing hard forks belonging to the Bitcoin cryptocurrency itself.
#4 – Bitcoin Gold (BTG)
Bitcoin Gold is a hard fork that took its formation at block 491,407 on October 24, 2017. Its reason for being came about due to Bitcoin’s perceived mining centralization.
Bitcoin follows the customs of the ‘Proof of work’ (POW) protocol and does ASIC (Application-specific Integrated Circuit) mining, and because of this, both people and organizations that can afford the faster and more powerful ASICs frequently have a much better chance of mining in comparison to others. This results in Bitcoin not being as decentralized as it wants to be and claims to be.
Over 50% of the bitcoin hashrate is possessed by three mining pools. This is the reasoning behind Bitcoin Gold’s creation. It utilizes the memory hard equihash as the POW algorithm rather than the conventional SHA-256. It is because of this minor adjustment that BTG cannot be mined by ASICs, but instead can be mined via the use of GPUs (General Processor Unit).
“BTG is a cryptocurrency with Bitcoin fundamentals, mined on common GPUs instead of specialty ASICs.
ASICs tend to monopolize mining to a few big players, but GPU mining means anyone can mine again – restoring decentralization and independence. GPU mining rewards go to individuals worldwide, instead of mostly to ASIC warehouse owners, recreating network effects that Bitcoin used to have.”
Another interesting element that the BTG team constructed was ‘post-mining.’ They mined 100,000 coins soon after the fork through rapidly mining 8,000 blocks at about 12.5 BTG per block. These mined coins were then used for two key purposes:
- A majority of them were planted into “endowment” and will later be used for the development and research of the digital environment
- 5% of those 100,000 coins were set aside as a bonus for the team
#5 – Bitcoin Private (BTCP)
Bitcoin Private is a hard fork that occurred on the 28th of February in 2018 at block 511,346. It is a merger of ZClassic and Bitcoin. ZClassic is in and of itself a fork of ZCash, which was initially developed by a blockchain developer named Rhett Creighton.
BTCP has two chief features that set itself apart from Bitcoin:
- It harnesses the use of ZClassic’s memory hard equihash algorithm, thus making it resistant against ASIC.
- It provides users with the option to generate either public addresses or private addresses. The latter works by utilizing Zk-SNARKs.
Zk-SNARKs stands for ‘Zero-Knowledge Succient Non-Interactive Argument of Knowledge.’ Zero Knowledge originated in the 1980s by a small group of MIT researchers, who were working on solving problems related to interactive proof systems, like when a Prover shares messages with a Verifier to persuade them that they obtain knowledge of a specific proof without actually declaring what that particular knowledge is.
In order for a Zero Knowledge Proof to work properly, it needs to meet and satisfy certain guidelines:
- Completeness: if the given statement is accurate, then an honest Verifier can be convinced of it by an equally honest Prover
- Soundness: if the Prover is actually dishonest, then they cannot persuade the Verifier of the soundness of the given statement by lying
- Zero-Knowledge: if the given statement is accurate, then the Verifier will have no clue as to what the statement really is
#6 – Bitcoin Cash (BCH)
Widely considered to be the most successful Bitcoin Fork to date, Bitcoin Cash currently sits as the 6th largest cryptocurrency based on market capitalization.
On the website, it boasts that, “Bitcoin Cash brings sound money to the world, fulfilling the original promise of Bitcoin as ‘Peer-to-Peer Electronic Cash’. Merchants and users are empowered with low fees and reliable confirmations. The future shines brightly with unrestricted growth, global adoption, permissionless innovation, and decentralized development.”
There is a special emphasis placed on “Peer-to-Peer Electronic Cash” because the dominant motivation of the existence of Bitcoin Cash depends mostly on carrying out more transactions. As Medium writer, Jimmy Song, pointed out in his article, “Bitcoin Cash is seeking to be a cryptocurrency that’s focused on transaction capacity.”
While it greatly resembles Bitcoin, BCH actually has its fair share of distinct differences that make it unique:
- The block size is 8 MB (something that Bitcoin XT was aiming for)
- It will not have Segwit
- It will not provide the “replace-by-fee” feature
- It will offer replay and wipeout protection
- It provides a method that will modify the POW difficulty quicker than the standard 2016 block difficulty adjustment intermission that is found in Bitcoin
Given that BCH is the result of a hard fork, those who are in ownership of Bitcoins would get the equal amount of coins in BCH, just so long as they did not have their Bitcoins in trades and were in possession of their private keys during the time of the hard fork. A notable perk of Bitcoin Cash is its ability to prevent ‘replay attacks,’ which is one of the biggest issues that any cryptocurrency following a fork could face.
A basic replay attack is data transmission that is delayed or even repeated out of malicious intent. Regarding a blockchain, it is obtaining a transaction that occurs in one chain and repeating itself in a separate chain (ex. sending 10 BTC to someone while also unintentionally sending 10 BCH).
Bitcoin Cash keeps these replay attacks from happening by doing the following, both of which is based on information taken from Andre Chow on Stock Exchange:
- Employing the use of a reinvented sighash algorithm. This particular algorithm is only utilized when the sighash flag has a bit 6 set. These selective transactions would be considered as invalid on the non-UAHF chain as the differing sighashing algorithm will lead to worthless transactions.
- Utilizing OP_RETURN output which contains the string that is entitled “Bitcoin: A Peer-to-Peer Electronic Cash System” and has it as data. Any transactions that contain this specific string will be read as invalid by the Bitcoin Cash nodes until the 530,000th block. Overall, before that block, you are able to split your coins by transacting on the non-UAHF chain first and with the OP_RETURN output before then transacting on the UAHF chain.
There is certainly a lot of information to take in when it comes to the topic of forks, but this guide’s primary goal is to assist in teaching about the subject and providing much-needed clarity. In addition, it sets out to introduce readers to both the failed and the successful forks so that they can learn about the mistakes and the corrections that come from the development of this complex protocol.