The Blocksize War – Chapter 20 – SegWit2x

Chapter 20 of the book The Blocksize War is published below. The full book is available on Amazon. As a reminder, 50% of any profits from physical book sales will be donated to Médecins Sans Frontières, a charity that provides medical assistance to people affected by conflict, epidemics, disasters, or exclusion from healthcare.*

* Note: Applies to sales up until the earlier of i. the death of the author and ii. January 2031


The Blocksize War – Chapter 20 – SegWit2x

Most small blockers had been largely quiet when it came to their campaign against phase two of the NYA, hoping for phase one to occur successfully before engaging more aggressively. In August 2017, with SegWit safely locked in, the time came to step up the campaign against phase two. By this point in the conflict, in stark contrast to the start of the war, the small blockers had a clear and strong majority of users behind them. To all intents and purposes, the small blockers had persuaded a large bulk of the community and traders to join their ranks, through both the power of effecting argument and reasoning and the momentum and success they had achieved. Most people just wanted to back the winning side. 

As the conflict progressed, the main characters on the large block side had changed. In the first round, the small blockers had defeated Gavin Andresen and Mike Hearn, and then Roger Ver and Jihan Wu in round two. Finally, there was a third set of characters to defeat, Jeff Garzik and Mike Belshe. Jeff was the lead developer of the SegWit2x client and Mike, the CEO of BitGo, had somehow taken up the baton for the large block team. Roger Ver and Jihan Wu had mostly stepped back from the war at this point, instead focusing their efforts on promoting Bitcoin Cash.

On August 3, 2017 a pull request was merged into Bitcoin Core, and the new code blocked BTC1 peers from making connections to Bitcoin Core. Since the networks were expected to split anyway, it could be argued that this was a good move for both coins, allowing them to have stronger peering with nodes on the same network as them. However, Jeff Garzik was not happy at this and commented:

This creates chain splits even though Bitcoin Core and segwit2x nodes are validating 100% the same rules today; it creates chain splits because of a presumed future rule deviation. The outcome is a bunch of non-deterministic islands. This is a very hostile and unsafe change prior to segwit2x fork deployment.

Although, technically, this change to Bitcoin Core peering was an advantage for both coins in the event of the split, the political messaging here was clear. Bitcoin Core would not implement SegWit2x and would continue work on the existing Bitcoin chain.

Another tactic used by the small blockers in order to try and persuade the community not to run BTC1 was to highlight apparent hypocrisy from Jeff Garzik. In 2012, Garzik appeared to articulate the small block narrative, making exactly the same points small blockers were stating today:

51% hashing power, or even 90%, means nothing if clients collectively refuse to accept and relay your blocks.

In February 2013, Garzik even talked about the economic significance of a hardfork and the problems associated with a lack of mandatory replay protection. This was particularly poignant for me, as it’s the first time I was exposed to many of these arguments. And now, ironically, here was the same person developing and promoting the client doing exactly what he had argued against around four years earlier. Of course, changing one’s mind over the course of time can be entirely legitimate, and this does not at all imply Jeff was being malicious or a hypocrite. However, this did cause small blockers to accuse Jeff of “selling out to the suits”. In February 2013, Jeff wrote:

It is crucial to understand the concept and, yes, economic impact of a hard fork before even approaching the economic analysis of changing the max block size. A hard fork is a significant event that knocks legitimate users off the network, makes coins unspendable, or potentially makes the same coins spendable in two different locations, depending on whether or not you’re talking to an updated node. It is, to pick a dramatic term, an Extinction Level Event. If done poorly, a hard fork could make it impossible for reasonable merchants to trust the bitcoins they receive, the very foundation of their economic value. Furthermore, a hard fork is akin to a Constitutional Convention: a hard fork implies the ability to rewrite the ground rules of bitcoin, be it block size, 21M limit, SHA256 hash, or other hard-baked behavior. Thus, there is always the risk of unpredictable miners, users and devs changing more than just the block size precisely because it makes the most engineering sense to change other hard-to-change features at the time of hard-fork. It is a nuclear option with widespread economic consequences for all bitcoin users.

Another tactic of the small blockers was to work on the official list of SegWit2x supporters based on the NYA document. The plan was to arrange meetings and calls with the companies and to explain the flaws of the NYA; in particular, that it was causing a split which, unlike Bitcoin Cash, lacked mandatory replay protection, which would likely cause loss of funds. There was a long list of companies, and perhaps some of them did not understand the weaknesses of the NYA. If any of them defected, this would greatly undermine the NYA. It would show that the plan had negative momentum and lacked consensus even among the original signatories, let alone consensus from the wider community. 

The first defection occurred on August 22, 2017. Bitwala, announced that they would not follow the agreement:

We have received an increasing number of inquiries regarding Bitwala’s support of the New York Agreement (short “NYA”).

The agreement helped surpass Segregated Witness activation thresholds prematurely so that the necessary soft fork went over without so much as a hitch. At much the same time, a number of miners decided to create a bitcoin fork on the basis of the same genesis block as bitcoin, naming this coin “Bitcoin Cash” (“BCH”) – removing Segregated Witness from that chain and implementing changes which included (among others) support for blocks of up to 8MB.

Bitwala doesn’t employ or sponsor bitcoin developers, so we have little influence over what the Core development team does. We would like to honor the agreement that we subscribed to (as one of the first movers, unbeknownst to the fact that most developers would not enter the agreement). We also, however, are a service company that has and will always follow what our customers use and want to use.

We will not actively fork away from what we view as “bitcoin”, which is the chain that is supported by the current Core dev team.

This was a significant moment in the battle against phase two of the NYA: the first defection. However, it was not a perfect defection. Bitwala appeared to want to follow the chain supported by the “current Core dev team”, rather than the existing rules chain, unless there is widespread support to change the rules. This fed into the misconception that this battle was developers vs the miners, and that Bitwala had chosen the developers’ side. Despite this large blocker framing of the conflict, small blockers still celebrated and accepted the win.

Despite this defection, Mike Belshe was keen to keep pushing the project ahead and keep things on track. On August 23, 2017, he wrote to the SegWit2x mailing list, stating:

As SegWit activates, this is a good time to send out a quick project update. You may have noticed that the SegWit2x team has been pretty quiet lately. That’s a good sign, as it indicates that the code is operating as expected. The goal of SegWit2x is to create a simple and stable codebase that is relatively “boring”. If you don’t hear much from the SegWit2x development in the coming weeks, it is a good sign.

On August 31, one of the mining pools which signed the agreement, F2Pool, announced its intention not to support SegWit2x. Although, at that point, the pool still had the “NYA” flag in its blocks, the pool operator Wang Chun said that the pool planned to remove the flag when it restarted its servers. This was another critical defection from the NYA. With a large mining pool, the Bitcoin chain would progress forwards and, as long as investors preferred the original rules Bitcoin chain (which seemed likely at this point), more miners were likely to violate the agreement and mine original Bitcoin to ensure they earned higher profits.

On September 1, the CEO and founder of another company which signed the NYA, Wayniloans, tweeted that they never agreed to all of the NYA and that the agreement changed after Wayniloans signed it. This was then confirmed by email a few weeks later, to which Barry Silbert replied, indicating a degree of disappointment:

You are of course welcome to withdraw support for SegWit2x, but your statement below is not accurate. I have an email from you on Sunday, May 21 at 8:40 pm ET confirming support of the final, full statement that was published on May 23rd. Also, as a reminder, I was approached about adding Wayniloans to the agreement, not the other way around, so I have no idea what you were told.

The number of defections started increasing at this point. On September 26, 2017, Vaultoro defected:

We signed way before Bcash fork. Signed because I wanted to help dislodge the stalemate between camps. It worked, we now have segwit. As any good businessman, I stick to my word / signature and would have followed through with 2x but I cannot without replay protection.

South American exchange surBTC also retracted their support for the NYA:

Nevertheless, we can’t pretend to be bitcoin “scaling experts”. We don’t believe in trying to force a change bitcoin’s core developers don’t feel safe with. The technical background of the team that currently collaborates on the core bitcoin project has an unprecedented level, we believe them to be, at least as a group, unbiased experts who deserve at least a voice on the subject. Even though we would be happy to have moderately larger blocks to accommodate growing demand, we feel that Bitcoin needs (at least a majority) of bitcoin’s core developers’ support in order to do this responsibly. We haven’t seen this support and we don’t like what we currently see on the btc1 code repository in terms of technical considerations and open source collaboration.

UK-based exchange Crypto Facilities then left the agreement. The CEO of Kraken, the company that would eventually buy Crypto Facilities, also indicated opposition to SegWit2x due to the lack of replay protection. Another signatory, Bitfury, also indicated it was potentially not willing to go through with phase two of the NYA. It was now almost impossible to keep track of all the defections, and the agreement appeared to be falling apart.

There were also defections from the large block side of the camp. Another signatory, Yours, announced it was switching entirely to the Bitcoin Cash chain. Bitmain’s main in-house mining pool, Antpool, had also started mining Bitcoin Cash. Of course, one could argue that supporting or mining Bitcoin Cash is not reneging on the agreement. One could say it’s entirely legitimate for businesses to mine multiple coins in order to generate earnings or support coins on multiple chains. This is, of course, normal and acceptable business. However, if it was the case that signatories could continue to support the two coins after the split and miners were free to mine on both sides of the split, one could also argue that the NYA was largely meaningless and two chains would survive. This, the small blockers argued, was why mandatory replay protection was necessary, and without it, SegWit2x was potentially hostile and should therefore not be supported by responsible businesses.

In spite of the fact that prospects of SegWit2x were rapidly diminishing and the demands for replay protection were getting stronger, on October 8, 2017, Mike Belshe continued to push ahead:

“Replay protection”, as you call it, splits the chain. It simply doesn’t make sense- you’d suddenly be breaking 10+million SPV clients that otherwise work just fine. It is a goal of segwit2x to help avoid this. Today, we’re on course to deploy segwit2x with a vast majority of miners still signaling for it. On top of that, 99.94% of nodes & SPV clients will automatically follow that longest chain (segwit2x). I know some don’t want Bitcoin to work this way, but this is the way that Bitcoin upgrades are implemented.

Some SegWit2x supporters then began to argue that the original rules chain should implement mandatory replay protection, because this was to be the minority hashrate chain. However, this was not really possible, because mandatory replay protection was likely to be an incompatible change and would therefore result in a new coin and a chain-split, resulting in not two, but three coins. Small blockers retorted by arguing that only the incompatible client can implement mandatory replay protection.

On October 6, 2017, Bitfinex listed chain-split tokens for the SegWit2x upgrade, just as they had done for Bitcoin Unlimited earlier in the year. The coins traded between 20 percent and four percent of the price of Bitcoin, indicating that the majority of the economy, at least investors and traders, favoured the original rules Bitcoin and not SegWit2x.

Bitfinex also clarified its position with respect to the chain-split, stating that initially it would regard the existing rules chain, or what it called the “incumbent implementation” as Bitcoin and the SegWit2x chain as an alternative coin called “B2X”. This Bitfinex policy applied even if B2X had more hashing power. However, Bitfinex did leave the door open to supporting the NYA, stating that “market forces could suggest an alternative labelling scheme”. This was essentially Bitfinex indicating it was ultimately up to investors and traders which coin would be defined as Bitcoin, by determining which coin had the higher market price. 

As the proposed consensus protocol Segwit2x project appears likely to activate, we have elected to designate the Segwit2x fork as B2X, for now. The incumbent implementation (based on the existing Bitcoin consensus protocol) will continue to trade as BTC even if the B2X chain has more hashing power. We are doing this for practical and operational reasons. Political considerations are irrelevant here. While we cannot change or re-assign ticker symbols, we can change the label or description associated with that ticker symbol. For the time being, BTC will continue to be labeled as “Bitcoin,” and B2X will be labeled as “B2X.” This will remain the case unless and until such time that market forces suggest an alternative, more appropriate, labeling scheme for one or both chains.

Around one week later, on October 13, 2017, BitMEX put out an even stronger statement than Bitfinex, again indicating that it would regard B2X as an alternative coin, even if it had a higher hashrate than Bitcoin:

The SegWit2x (B2X) proposal is aimed at increasing the blocksize. It is scheduled to take place in November 2017. This change is incompatible with the current Bitcoin ruleset and therefore a new coin may be created. Proponents of this new coin hope it becomes known as Bitcoin, however which coin is known as Bitcoin is not up to the proponents of the new token. Investors and traders may decide which coin has the highest value. In order for this process to work smoothly, strong two way transaction replay protection is necessary. It is our understanding that the SegWit2x proposal does not include two way transaction replay protection, enabled by default. Therefore BitMEX will not be able to support SegWit2x. As such, BitMEX will not support the distribution of B2X, nor will BitMEX be liable for any B2X sent to us. This policy applies even if the SegWit2x chain has the majority hashrate.

On October 23, BitMEX’s CEO Arthur Hayes put out a blogpost entitled “Trading ShitCoin2x”. The “ShitCoin2x” meme was celebrated by the smaller blockers, and the situation looked bleak for the last remaining supporters of the NYA. If they launched their coin, it looked like it would be another altcoin trading below 10 percent of the price of Bitcoin.

The following day, Jeff Garzik announced he was launching a new alternative coin called “Metronome”. This was another opportunity for the small blockers to rip into the SegWit2x project, claiming the lead developer had lost focus and was now working on other projects. Bloomberg reported the announcement as follows:

Jeff Garzik, one of a handful of key developers who helped build the underlying software for bitcoin that is known as blockchain, has seen its shortcomings firsthand. So he decided to create a better digital currency. He’s calling it Metronome and says it will be the first that can jump between different blockchains. The mobility means that if one blockchain dies out as the result of infighting among developers or slackened use, metronome owners can move their holdings elsewhere. That should help the coins retain value, and ensure their longevity, Garzik, co-founder of startup Bloq that created metronome, said in a phone interview.

On October 23, 2017, Coinbase announced its policy with respect to SegWit2x. Coinbase was a signatory to the NYA and, by this point, had not reneged on its support for the NYA. The company also had a history of supporting all the other hardfork attempts and therefore its policy with respect to this split was widely anticipated. Just like Bitfinex and BitMEX, Coinbase indicated it had abandoned the NYA and would regard the SegWit2x coin as an alternative coin:

Bitcoin Segwit2x – The Bitcoin Segwit2x fork is projected to take place on November 16th and will temporarily result in two bitcoin blockchains. Following the fork, Coinbase will continue referring to the current bitcoin blockchain as Bitcoin (BTC) and the forked blockchain as Bitcoin2x (B2X).

Small blockers celebrated the development. Coinbase appeared to have finally joined their camp and this was the final nail in the coffin for SegWit2x. Small blockers sent many emails and messages to Brian Armstrong, the Coinbase CEO, congratulating him on the policy. Coinbase had a fiduciary responsibility to protect client assets and potentially support both sides of the split anyway, therefore some argued it was inappropriate for any custodian to sign any agreement committing to just one side of a potential split. Perhaps the company now realised signing the NYA was inappropriate.

However, amazingly, two days later, Coinbase put out another blogpost contradicting the previous one. This time, the company stated it would regard whichever chain had the most accumulated difficulty as Bitcoin:

In our prior blogpost we indicated that at the time of the fork, the existing chain will be called Bitcoin and the Segwit2x fork will be called Bitcoin2x. However, some customers asked us to clarify what will happen after the fork. We are going to call the chain with the most accumulated difficulty Bitcoin.

Of course, even this statement can be interpreted as reneging on the NYA; the purpose of the original agreement was for the signatories to support the new coin as Bitcoin, not to adopt what appeared to be a neutral stance between the original coin and the new coin. Small blockers reacted in bewilderment to this new Coinbase policy, which was also adopted by several other US-based exchanges such as Gemini. 

The new Coinbase policy made little sense when one thought through the process in more detail. When it came to the order book and ticker, wouldn’t Coinbase need to pick a coin that would inherit the original? If not, then Coinbase would need to shut down the exchange. This appeared to be a bad business decision, resulting in a loss of revenue just when trading demand would pick up. Also, at which point would Coinbase determine which chain had the most hashrate: after one hour, one day, one week, one month or one year? Coinbase never revealed that. It was, of course, possible that the hashrate lead could oscillate between the competing coins. Miners would also likely be looking at the markets to determine which coin had more value and therefore help inform them about which coin they wanted to mine. If the exchanges shut down, then how would miners make this decision? Both groups, exchanges and miners, would essentially be waiting for each other. Wasn’t Coinbase walking away from its responsibility to help ensure orderly and functioning markets during these uncertain times? And their responsibility to help facilitate the economic process by which investors could express their view, that would then feed down to the miners? It seemed to me that the approach Bitfinex and BitMEX had chosen to take was far more responsible and clearer than the messy and confusing approach of Coinbase.

As we reached the end of October, momentum against SegWit2x in the Bitcoin community was almost unstoppable. Local meet-ups around the globe put out statements opposing SegWit2x and confirming they would regard the original rules chain as Bitcoin. The statements were made by local communities in regions which included Korea, Hong Kong, Italy, Germany, Israel, and Brazil and Argentina. The Israeli statement read:

We believe that a protocol change in the currency holding the name “Bitcoin”, especially one requiring a hard fork, requires overwhelming consensus. The SegWit2x hard fork does not in any way enjoy such consensus, and while this remains the case we cannot refer to the resulting currency as “Bitcoin”.

The Hong Kong community used even stronger language:

SegWit2x does not include strong transaction replay protection, nor does it have widespread consensus across the community. Due to the combination of both a lack of consensus across the community and a lack of strong replay protection, we consider SegWit2x a reckless endeavor that will cause disruption and harm to the ecosystem. We therefore strongly oppose SegWit2x. This remains true even if the SegWit2x chain has the majority hashrate or a higher price.

The final Scaling conference conducted during the blocksize war, Scaling IV, took place at Stanford University in the US on the weekend of November 4 and 5, 2017. Just like Scaling I in Montreal, I was running out of annual leave at work, therefore I decided to fly over from Hong Kong for a quick weekend visit. The event was a quiet and calm affair and it was clear the war was coming to an end. Virtually no one at the conference was supporting SegWit2x. There was, however, one notable exception to this. Giving a talk at the end of the first day on “Bitcoin in China” was Bobby Lee. Bobby was one of the few enthusiastic supporters of SegWit2x, believing it was a compromise bringing both sides together. By this point, Bobby was one of the last remaining supporters of SegWit2x who still appeared to think it was potentially viable. This is despite the fact that Bobby’s own exchange, BTCC (an NYA signatory), had implemented SegWit2x chain-split tokens and the SegWit2x coin was trading at around 10 percent of the Bitcoin price. Bobby had stubbornly refused to back down from the NYA. At the end of Bobby’s speech in Stanford, it was time for questions. However, just beforehand, Bobby said:

I am going to avoid talking about SegWit2x and the NYA, we will just keep it focused on the Chin[ese] market and anything else

Bobby seemed to know that SegWit2x was unpopular and that he would be hounded by negatively-framed questions on the proposal. Bobby did not have the courage to face up to it and argue back. So much for the idea of persuading the community to support SegWit2x; at this point, its proponents refused to be scrutinized on the idea.

As we reached November, the deadline was approaching. SegWit2x was due to activate at block height 494,784 on November 15, 2017. A rumour started circulating in some of the large block channels. Jihan Wu had supposedly said that he would only mine SegWit2x at a loss for two days, at which point if it was not economical to continue mining SegWit2x, he would switch back to Bitcoin and Bitcoin Cash. Bitmain had already spent a lot of money mining Bitcoin Cash at a loss for some periods and was apparently keen to avoid wasting more money. The large blockers never really supported SegWit2x, their hearts went to Bitcoin Cash. SegWit2x did not have support from the users. It had no node network; with almost everyone running Bitcoin Core, the exchanges had either rejected SegWit2x or taken a neutral stance. Now, the one pool of support left for SegWit2x, the miners, looked to be fading away. SegWit2x was dead in the water. The small blockers looked set for a sensational victory. It was no longer a question of if, but when.