Money has been gushing into the cryptocurrency markets over the past year. According to coinmarketcap.com, the total cryptocurrency market cap in June 2015 was $4 billion, in June 2016 it was $11 billion, and in June 2017 it exploded to $112 billion. As the main fiat entry/exit point for cryptocurrency markets, Bitcoin has been one of the best performing cryptocurrencies over the last year. In June 2016, one Bitcoin was worth $700. One year later, it was worth $3000.

As demand for Bitcoin increased, the rate of transactions increased as well and this was where Bitcoin began to show signs of growing pain. The network had an abysmal maximum transaction throughput (less than 10 transactions per second!). With so many new users, transactions began to take an inordinate amount of time to get confirmed. Some users reportedly had to wait hours on end. At the same time, transaction fees went through the roof. It was clear that this scaling issue needed to be fixed, and fixed soon.

2015 - Scaling debate starts

Going through web archives, Google search, and (shudder) Reddit search, the debate around Bitcoin’s scaling problem seemed to have picked up around 2015. Like today, there were two main sides in the debate.

One side, primarily led by Bitcoin Core devs, wanted to scale Bitcoin using SegWit and off-chain solutions. They believed the main chain should be used by important transactions and less important ones should be conducted on faster sidechains (i.e. the Lightning network). This reduces the growth rate of the main chain and keeps Bitcoin decentralized.

Why does a smaller blockchain keep Bitcoin decentralized? Well, if the blockchain was extremely large, it’d be impractical for ordinary Bitcoin users to maintain a full node. Only well-to-do institutions would be able to host them and this results in a dangerous concentration of power between a small group of wealthy entities.

I’ll call the first group the Off-chain group.

On the other side of the debate are those that believe exclusively in on-chain scaling. On-chain scaling basically means increasing the block size limit. Larger blocks allow for more transactions per block which in turn results in a higher transaction throughput. This group also believes that Bitcoin should be a global payment system used for all transactions, not just the most important ones. Off-chain scaling solutions have no place in Bitcoin. Finally, this group also believes decentralization concerns are overblown.

The strongest supporters of on-chain scaling are large mining pools such as Antpool, Bitmain, BTC.com, and ViaBTC.

I’ll call this group the On-chain group.

The two sides would duke it out in the coming months through press releases, blog posts, tweets, and Bitcoin Improvement Proposals (BIP). This eventually led to the creation of Bitcoin Cash from the August 1st hard fork.

October 2015 - BIP 9 is introduced

BIP 9 was introduced in late 2015 as a new method to roll out soft-fork upgrades to Bitcoin. Bitcoin miners can signal acceptance of a soft-fork by setting a specific version bit in the blocks they mine. If more than 95% of all blocks for the past 2016 blocks have the version bit set, then the soft-fork is activated. It takes approximately two weeks for 2016 blocks to be mined.

BIP 141, the SegWit proposal, uses BIP 9 as an activation mechanism.

January 2016 - Bitcoin Unlimited is introduced. On-chainers support it, Off-chainers reject it

Bitcoin Unlimited is a fork of the Bitcoin Core client that was released by Andrew Stone on January 2016. The new client eschews Bitcoin Core’s hard-coded 1MB block size limit in favour of a system in which users can vote on a limit value.

Bitcoin Unlimited very much follows the On-chainers’s core philosophy that scaling should only be done through increasing block sizes. As such, it’s not surprising that the new client received most of its support from On-chainers while it faced vehement opposition from Off-chainers.

Adoption of Bitcoin Unlimited has been luke warm but not insignificant. As of today, 6% of nodes are Bitcoin Unlimited nodes (source). With Bitcoin Core still representing the majority of running nodes, the 1MB block size limit continues to be enforced.

November 2016 - BIP 141 (SegWit) is introduced. Off-chainers support it, On-chainers reject it

BIP 141 was introduced in November 2016 as another way to scale Bitcoin. The proposal aims to add SegWit to Bitcoin. The two main implications of this are: First, SegWit increases transaction throughput by reducing transaction size which allows for more transactions can fit in a block. Second, SegWit clears the way for the integration of off-chain solutions with Bitcoin (such as the Lightning network).

BIP 141 activates using BIP 9 and its lock-in deadline is November 16th 2017. A lock in occurs when at least 95% of the past 2016 blocks have signalled for BIP 141.

Since SegWit paves the way for off-chain solutions, it received strong support from Off-chainers and vehement opposition from On-chainers.

March 2017 - Off-chainers go on the offensive and introduce BIP 148

BIP 141 (SegWit) failed to lock in for months after its introduction as both sides of the debate were locked in a stalemate. Off-chainers hated Bitcoin Unlimited and On-chainers hated BIP 141. At the same time, Bitcoin’s transaction times and fees continued to increase.

Clearly, SOMETHING needed to happen or Bitcoin would slowly become obsolete over its scaling issue. The Off-chainers made the first move and introduced BIP 148. This proposal, unlike BIP 141, will ignore signalling thresholds and force BIP 141 to lock in on August 1st.

According to BIP 148, if BIP 141 wasn’t locked in by August 1st, any node running BIP 148 will begin orphaning non-BIP 141 blocks. The first non-BIP 141 block would thus cause a chain split. BIP 148, in essence, would create a chain that only contained blocks signalling for BIP 141. BIP 9 will then cause BIP 141 to lock in in this new chain.

In essence, BIP 148 was the Off-chainers’ way of saying, “Bitcoin will have SegWit or you guys can split off and create your own chain”. Needless to say, this proposal was an affront to the On-chainers and many voiced their opposition.

Regardless of whether BIP 148 was a good move, it broke the stalemate and propelled both sides to come together to work out an agreement. Bitcoin’s transaction times and fees were only moving upwards and stalling on Bitcoin Unlimited/BIP 141 was benefiting nobody.

May 2017 - Everyone agrees on a new proposal - New York Agreement (SegWit2x)

The Consensus 2017 conference was held on May 22-24 in New York City. The conference is an annual blockchain technology summit and it provided the perfect opportunity for both sides of the scaling debate to meet and work things out.

The conference was a huge success for Bitcoin as both sides found common ground and agreed upon a new scaling solution called SegWit2x. SegWit2x was a compromise between the two sides’s demands and it involved both adding SegWit and increasing the maximum block size.

To be specific, SegWit would first be locked in using an 80% signalling threshold with a 336-block confirmation window (instead of the 95%/2016-block confirmation window needed by BIP 141) and a hard fork would occur 3 months later to increase the maximum block size from 1MB to 2MB. The period for locking in SegWit would last from July 21st to July 29th. Remember that BIP 148 triggers on August 1st and if SegWit locks in before then, August 1st would be a non-event.

The SegWit2x proposal was signed by 58 companies from 22 countries representing 83.28% of Bitcoin’s hashing power at the time. The proposal would come to be known as the New York Agreement.

May 2017 - BIP 91 is introduced

In order for the first part of SegWit2x to work, a new BIP was needed. This was why BIP 91 was created and it did two things.

First, it made locking in SegWit significantly easier. BIP 141 required 95% hash power with a 2016-block confirmation window to lock in whereas BIP 91 lowered this to just 80% hash power with a 336-block confirmation window. The proposal was able to this by setting its own lock in requirement to 80% hash power with a 336-block confirmation window. Once BIP 91 was locked in and activated, nodes running the proposal would start rejecting any block not signalling BIP 141.

Second, if BIP 91 was locked in before July 31st, it would override BIP 148.

June 2017 - On-chainers fight back and announce Bitcoin Cash UAHF

Even though SegWit2x seemed to have solved most disagreements between On-chainers and Off-chainers, there was still a risk of BIP 91 not locking in… which would allow BIP 148 to activate. As such, on June 14th, a Chinese company presiding over one of the largest Bitcoin mining pools, Bitmain, announced in a blog post a contingency plan against BIP 148.

The blog post vehemently attacked BIP 148. It called the BIP 148 initiative an “astroturfing movement” and stated that the proposal was an “attack against users and enterprises who disagree[d] with activating SegWit… without a block size increase”. According to the post, this violated the 2016 Hong Kong agreement. Here’s an interesting excerpt from the post:

“We do not believe that decentralization means a 1MB block size limit or a responsibility to constrain the block size so that a Raspberry Pi can run a full node while the fee per Bitcoin transaction is higher than the daily income in most developing countries. We believe Bitcoin needs to offer people an alternative to flourish without depending on powerful authorities that charge fees that can be as high as 100$/transaction.”

The post then went on to describe a potential “Wipe Out” attack that BIP 148 could trigger. This would be incredibly damaging for Bitcoin’s ecosystem and Bitmain argued that a hard fork was needed to defend against this. They called the new chain Bitcoin Cash. Among various smaller improvements was an increased block size limit of 8MB. Bitmain also claimed that there were several development teams working on the new chain and it would also have the support of a few mining pools, exchanges, and Bitcoin clients like Bitcoin Unlimited, Bitcoin ABC, and Bitcoin Classic. Finally, it was made clear that the hard fork would only happen if there was a high chance BIP 148 would activate.

There’s little doubt that Bitcoin Cash was announced as a way to retaliate against BIP 148. The On-chainers were not going to be threatened with BIP 148 without putting up a fight and Bitcoin Cash was their answer.

July 2017 - BIP 91 is locked in

On July 20th, BIP 91 locked in and the whole community breathed a huge sigh of relief. The risk of BIP 148 activating was greatly diminished and the Bitcoin Cash hard fork was not going to happen… right?

July 2017 - Bitcoin Cash will launch anyways!

On July 22nd, Bitmain made a surprise announcement that Bitcoin Cash was going to launch anyways, even if BIP 148 was not going to activate. This came as a HUGE surprise to the community as it seemed like all was well. SegWit2x was progressing on schedule and BIP 148 was history.

Bitmain’s aboutface demonstrated an utter lack of confidence in SegWit within the On-chain group. Even though SegWit2x was agreed upon by all parties in the New York Agreement, the main problem was it still had SegWit and SegWit would open the flood gates for the integration of off-chain systems to Bitcoin. This was unacceptable to the On-chainers.

August 1st - Bitcoin Cash launches

On August 1st, 12:20 UTC, Bitcoin Cash was launched. The conventional wisdom was that Bitcoin Cash would be Dead On Arrival from a massive sell-off the moment it was available. Surprisingly, Bitcoin Cash not only held its value, it sustained a strong bull run that saw its price rise from 0.1 BTC to almost 0.5 BTC. This quickly corrected and after a few days of consolidation, the coin’s price seemed to have found a bottom at 0.06 BTC.

Bitcoin Cash survived and a new altcoin is born.