The Scaling War

7 min read Original article ↗

Home/Findings/Scaling War

Finding · free in full

Bitcoin argued with itself through a four-byte field. Here is the record.

Every Bitcoin block carries a version number. For six years, miners used it as a ballot — a way to say "I would run this change" without saying a word. Then the machines took the field over and turned it into scratch space.

Nobody voted in a booth. Nobody's speech survives. But the votes are still on the chain, block by block, and we read all 960,044 of them off our own disks.


Act I · Bitcoin XT

Forty-one blocks. Ever.

In 2015 the block-size argument produced its first hard fork attempt. Bitcoin XT implemented BIP101 — 8 megabyte blocks — and needed 75% of blocks to signal support. The press called it a civil war. Prominent people said Bitcoin was finished either way.

41 blocks, in total, forever

Every block that ever signalled Bitcoin XT: 18 August 2015 to 30 May 2016, heights 370,434 to 414,018. Thirty-seven in 2015, four in 2016.

Its best month was August 2015: 12 blocks out of 4,5950.2612% against a threshold of 75%. Not a narrow defeat. Not a defeat at all, in the sense that a contest requires two sides showing up. Fourteen of the forty-one came from a single pool.

Act II · Bitcoin Classic

Thirteen times better, thirteen times short

Classic tried again in 2016 with BIP109 and did substantially better: 2,176 blocks between February 2016 and July 2017, peaking in May 2016 at 250 of 4,620 blocks = 5.41%.

Thirteen times XT's peak — and still thirteen times short of the threshold. And the support was not broad. Two pools produced 1,392 of the 1,808 blocks signalled in 2016: KnCMiner 915, Slush 477. What reads like a movement was, in the data, two companies.

Peak signalling share vs 75% threshold Peak monthly share vs the 75% threshold they needed 75% Bitcoin XT 0.2612% Classic 5.41% Threshold 75% required Same axis. Neither attempt is close.

XT's best month and Classic's best month, drawn on the same scale as the 75% bar they would have needed to clear.

Act III · the control case

What agreement looks like

Before judging the deadlock that follows, it helps to see the chain agreeing on something. CSV — a modest change enabling payment channels — ran through the same mechanism in 2016. Start to finish:

Three months from nothing to locked in, and one month to withdraw the flag. That is the shape of a proposal nobody minded. Remember it.

Act IV · SegWit

Seven months, pinned

Same field, same mechanism, same chain — and a completely different shape. SegWit's bit rose to about a quarter of blocks and then stopped, for seven consecutive months, in a band between 24% and 36%. Not falling. Not rising. Held.

CSV vs SegWit monthly signalling share 0% 50% 100% share of blocks signalling, by month CSV — 77.47% in three months SegWit — seven months, pinned 24–36% 2016-04 2016-11 2017-07 2017-11 Same field, same rules. Agreement is a spike; deadlock is a plateau.

Both proposals used the same field and the same rules. The difference is not technical.

Then it broke: 35.67% in June 2017 → 63.71% in July → 83.59% in August, and withdrawn by September. Nine months in total against CSV's three.

You can read the entire user-activated-fork standoff of 2017 in that plateau without a single quote from anyone involved. The chain records the stalemate as flatly as it records the agreement.


Act V · Taproot

Forty-one days — and then a decade of forgetting

Taproot in 2021 is the opposite story. Our control month, April 2021, is 0 of 4,073 blocks — the bit is untouched. First signal arrives at height 681,458, 2 May 2021 at 03:24 UTC. Then, by difficulty period:

Taproot signalling by difficulty period Taproot by 2,016-block period — lock-in at 90.03% 90.03% 0% 40.82% 83.83% 98.36% 99.75% 337 338 339 340 341 Period 340 locked in — 1,983 of 2,016 blocks

Forty-one days from first signal to lock-in. Period numbers and shares match the table below.

Forty-one days from first signal to lock-in. After the years SegWit cost, consensus turned out to be fast when it was actually there.

But here is the part nobody describes, and it inverts everything above. CSV's flag vanished in a month. SegWit's vanished in a month. Taproot's did not:

Taproot bit decay after activation Mean share of blocks still carrying the Taproot bit 0% 30% 60% 56.54% 35.36% 3.49% 2.10% 2021 2022 2023 2024 2025 2026 CSV and SegWit flags vanished in a month. Taproot's did not — and 2026 is up on 2025.

The same annual means as the stat row above. The shape is the finding: years of slow template hygiene, not a clean withdrawal.

Five years after activation, roughly one block in fifty is still signalling for a change that has long since happened. This is not hashrate drifting. It is template hygiene: configuration nobody went back to clean up, still broadcasting a vote in an election that closed in 2021. And in 2026 it is up on 2025.

Act VI

The ballot box becomes a nonce

Then the field stopped being a ballot at all. BIP320 handed miners bits 13–28 as extra search space for their hardware. What had been Bitcoin's voting channel became mining scratch paper.

Version-rolling share and distinct versions by year The ballot becomes a nonce — rolling share and distinct version values 0% 50% 100% 22k 0 — rolling share (left) - - distinct versions (right) 15 16 17 18 19 20 21 22 23 24 25 26 2018: 27 distinct versions. 2024: 21,754. Same numbers as the table below.

Rolling share climbs toward saturation while the number of distinct version values explodes — the channel is consumed as mining entropy.

Twenty-seven distinct version values in 2018. Twenty-one thousand seven hundred and fifty-four in 2024. The channel Bitcoin argued with itself through was consumed by the machines that secure it — and the argument moved somewhere the chain cannot record.


Method — and a warning

The era bound is the whole job

If you query this field yourself, read this first

Bit 28 means "I vote for Bitcoin Classic" in 2016. From 2018 the same bit is mining entropy, because BIP320's rolling mask covers bits 13 through 28.

Our own first query for Classic returned 64,928 blocks. The correct, era-bounded answer is 2,176. We were wrong by a factor of 29.8, and the wrong number looked entirely reasonable — it had a plausible shape, a plausible timeline, and no error message.

Bits 0, 1 and 2 — CSV, SegWit, Taproot — sit outside the mask and need no such restriction. Knowing which bits need bounding is the same job as bounding them.

Versions are also stored signed. Mask them without normalising to unsigned first and every high-bit test silently inverts.

Controls

  • Bitcoin Classic's bit is unset for all of 2015 — 0 blocks. Classic did not exist yet, so a signal there would prove the era bound is decoration.
  • Taproot is silent in April 2021 — 0 of 4,073, the month before signalling opened.
  • The seam is gapless — one row per block from genesis, so nothing is under-counted by an invisible hole.
  • The version seam was certified 23/23 against Bitcoin Core's own getblockheader.

Coverage

960,044 blocks, height 0 to 960,043, 3 January 2009 to 29 July 2026. Parsed from raw block files on our own full archival node. No external data source was consulted for any figure on this page.

The dataset

Every figure here, as files

This finding is free and complete. The dataset underneath it — the full seam with block times, every era-bounded signalling block with the rule that admitted it stated on each row, and both the right and the wrong Classic count so you can run them yourself — is available sealed and Bitcoin-anchored, with free samples, the manifest and the verifier downloadable before you decide.