Posts

Segwit2X Remembered

Segwit2X (2X) was the most universally hated hard-fork proposal in Bitcoin’s history. It’s cancellation on, 8 November 2017, marked the end of a two year scaling conflict, but many of the conspirators remain unapologetic, often lying about the nature of 2X and their involvement. Since they are still active in the space, it’s important we not forget the true story of 2X or their involvement. The main group of conspirators were,

The 2X debacle started with the New York Agreement (NYA), a deal penned in a closed door, invite only, backroom at the Consensus 2017 conference in New York City. This deal symbolized the opposite of what Bitcoin is about, decision making behind closed doors by elites and someone else controlling the nature of your money. Unfortunately, by the time of 2X, the MO of these people was to support, without question, any hard-fork attempt in Bitcoin. 2X wasn’t new, it was a continuation of a long term effort by central planners to control the network.

To this day, many of the conspirators maintain that miners and large businesses control Bitcoin, not the users/nodes. At its height, 2X had the support of 83% of the network hashrate and nearly all major businesses in the space. So if their theory were correct, 2X should have had no problem getting their plans implemented. The opposition to 2X, encapsulated in the NO2X movement, consisted of users, developers, the majority of brainpower in Bitcoin, and the Nash equilibrium.

Segwit2X Wasn’t Needed for Segwit

#Segwit is inevitable, whether with UASF or flag day, this year or next, it will be activated. Miners might as well get on board. #bitcoin

When Segwit2x was announced on 23 May 2017, the public outcry against it was deafening and immediate. At the time, the User Activated Soft Fork (UASF, also known as BIP148) had already guaranteed the activation of Segwit by cleverly reverting the game theory of its activation, from political, back to pre-BIP9.

If the NYA wasn’t needed to activate Segwit, what was it for? Two things: 1) It was needed by central planners in the NYA to maintain their self-delusion and the appearance that they control Bitcoin, and 2) to allow linear scaling while Bitmain kept their competitive advantage of ASICBoost. The UASF therefore created an unacceptable situation, it gave control back to the users/nodes and cut the central planners out of the decision making process totally.

2X was virtually last minute, only 9 weeks before the UASF flag-day of 1 August 2017. With that in mind, the central planners did the only thing they could do to save face, as it were. They attempted to hijack the momentum and inevitability of the UASF, claiming its success as their own, and calmly lying about the balance of power between themselves and the users. Finally, they tried to force their hard fork through as part of a deal users never agreed to.

Many of the conspirators in Segwit2x exposed themselves as statists masquerading as anarchists.

This motivation isn’t speculation. The order of events supports this interpretation, despite what the people involved in Segwit2X tell you. Their guiding principle was, ‘If the network can force segwit on us, we are going to force 2X on them.’

Their original plan that called for “parallel upgrades … deployed simultaneously … signaling at bit 4” was dead on arrival. It was incompatible with the already deployed versions of Segwit using “bit 1”, meaning the entire network would have to upgrade in 2 months, an impossible task. 2 Why would they want it that way? The new signaling mechanism was an attempt to get nodes to run the 2X code, coercing them to activate both Segwit and follow on 2X hard fork.

The signaling was a big problem for 2X. They were scrambling to produce an implementation that was compatible with the UASF (tick-tock), but would make it look like their implementation was responsible for the activation of segwit. On top of that, it’d have to somehow force the network to hard fork after it was no longer needed for segwit. June passed with no code from 2X.

Their team composition didn’t help. The NYA was a collection of miners and CEOs, not top developers. It would be a nearly impossible task for the best developers in Bitcoin (all of whom refused to support 2X), but with only a few inferior developers supporting the project, it was hopeless. It wasn’t until the UASF deadline was critical, that 2X conspirators decided to use James Hilliard’s BIP91 (SegSignal). BIP91 was a signaling scheme where the NYA signatories could use bit 4 to pretend they had a choice, but then switch to bit 1 for actual activation, in accordance with UASF. This was adopted into BTC1 (2X’s implementation), and finally released on 17 July 2017, with very little review and maybe no testing, only 14 days before the UASF. Why the rush?!

In the end, there was no need to run BTC1/2X. Nodes could run any Segwit client, because signaling ended up staying bit 1 in accordance with UASF and the original Segwit. The 2X conspirators had failed to force people to replace their nodes with 2X software. The UASF had done its job, for which the conspirators tried to take credit.

Segwit2X Final Steps

The conspirators in 2X continued with their coercive plans however, even as support dwindled and it became obvious the hard-fork had no hope. The small amount of conversation around BTC1 development vanished. Many signatories jumped ship, at an increasing pace, after Segwit was activated. On November 8th, Mike Belshe CEO of Bitgo posted a 2X capitulation message full of lies and self-importance to the 2X dev mailing list.

The Bugs

After 2X was called off by the 6 worst conspirators, 2X was finally dead, but even if they hadn’t called it off, the 2X hard fork would never have happened. This is because there was, not one, but two fatal bugs in the mere 100 lines of consensus code that BTC1 changed.

The bug that caused the software to stop was the “off by one” bug. In one place, the 2X code required the first block of the fork to be >1MB for wipeout/reorganization protection. Another part of the code was responsible for rejecting blocks that were too big. Both these parts would have to agree on the block number that is the start of the fork. Needless to say they didn’t. The software was trying to create a block >1MB, one block before it would recognize a block >1MB as valid. Can’t make this stuff up. Jimmy Song does a better job of explaining the bugs here.

The second bug is quite technical, but suffice it to say, it is unclear if the software would even have allowed a miner to create a block >1MB.

Conclusion

At the time of writing, 5 of the 6 conspirators listed in the capitulation message still claim they’ve done nothing wrong. 3 They lie, saying BIP91, not the UASF, activated Segwit, though it’s painfully obvious their hand was forced by the UASF regarding the timeline and adoption of BIP91 itself. They even claim their actions are responsible for successful activation of Segwit, when that’s obviously not the case when you look into it. This behavior, along with other similar behavior, should make one call into question these people’s motives and honesty in all their dealings.

The version bit signaling controversy was introduced with the use of BIP9 standards where miners signaled support inside block headers. Signaling in this manner perverted the natural incentives of the network, which the UASF corrected. ↩