Research/Bitcoin

Bitcoin Soft Fork Activation: From Flag Day to Speedy Trial and What Comes Next

The history and mechanics of Bitcoin soft fork activation methods, from early flag-day upgrades to BIP 9, BIP 8, and Speedy Trial.

bcMaoJul 13, 2026

Bitcoin's consensus rules have changed more than a dozen times since 2009, yet the network has never experienced a successful hostile takeover of its ruleset. Every soft fork tightens the rules: old nodes still accept new blocks, but new nodes reject blocks that violate the upgrade. The technical challenge is straightforward. The political challenge is not: who decides when Bitcoin upgrades, and what happens if they disagree?

Each activation method Bitcoin has used reflects the community's evolving answer to that question. From Satoshi's unilateral code changes to multi-year debates over BIP parameters, the history of soft fork activation is also a history of Bitcoin governance.

What Makes a Soft Fork Different From a Hard Fork

A soft fork restricts the set of valid blocks. Nodes that have not upgraded still accept the new blocks because those blocks follow a subset of the old rules. A hard fork expands the rules, meaning old nodes reject new blocks entirely, forcing everyone to upgrade or split into a separate chain.

This distinction matters for activation: soft forks can be deployed without unanimous node upgrades, but they still require coordination to avoid confusion during the transition. The activation method determines how that coordination happens: who signals readiness, what thresholds must be met, and what occurs if they are not.

The Earliest Upgrades: Satoshi's Flag Days

Bitcoin's first consensus changes were simple. Satoshi Nakamoto pushed code changes to the reference client, set a block height or timestamp at which the new rules would take effect, and expected everyone to upgrade by then. There was no signaling, no voting, and no fallback.

The introduction of the 1 MB block size limit in September 2010 followed this pattern: a hard cutoff at a specific block height, rejecting any block that exceeded the limit. Other early changes, such as disabling opcodes like OP_CAT due to denial-of-service concerns, were similarly deployed via direct code updates.

This approach worked when Bitcoin had a small user base and a single developer with broad authority. As the network grew beyond a few hundred nodes, flag-day activation became increasingly risky: if a significant portion of miners or node operators failed to upgrade in time, the network could split.

P2SH: The First Contentious Activation

BIP 16 (Pay-to-Script-Hash) in 2012 was the first soft fork where activation itself became contentious. P2SH allowed coins to be sent to the hash of a script rather than directly to a public key hash, enabling multisig and more complex spending conditions.

The original activation date was March 1, 2012, but by the February 15 polling date, fewer than half of the last 1,000 blocks indicated miner readiness. Miners signaled support by placing the string /P2SH/ in the coinbase transaction's scriptSig. A second poll on March 15 showed sufficient support, and developers released Bitcoin 0.6.0 on March 30 with a hardcoded activation timestamp of April 1, 2012 (block 173,805).

P2SH combined elements of both flag-day and miner-signaled activation: a fixed date, but with an informal readiness check beforehand. This hybrid approach hinted at the tensions that would define all future activation debates.

IsSuperMajority: Miner-Activated Soft Forks

After P2SH, Bitcoin adopted a more structured signaling mechanism called IsSuperMajority (ISM), named after the C++ function that checked whether activation thresholds had been met. ISM was the first formal miner-activated soft fork (MASF) mechanism, using block version numbers as signals.

How ISM Worked

Miners incremented their block version number to indicate readiness for a new set of rules. Two thresholds governed enforcement:

  • 75% rule: if 750 of the prior 1,000 blocks used version N+1 or higher, blocks claiming version N+1 had to correctly enforce the new consensus rules
  • 95% rule: if 950 of the prior 1,000 blocks used version N+1 or higher, blocks with version less than N+1 were rejected entirely

The Three ISM Soft Forks

BIPNameWhat It DidActivation Height
BIP 34Height in CoinbaseRequired version 2 blocks to include the block height in the coinbase transaction, preventing duplicate transaction IDs227,931 (March 2013)
BIP 66Strict DER SignaturesMandated strict DER encoding for ECDSA signatures, eliminating consensus risk from inconsistent OpenSSL parsing across platforms363,725 (July 2015)
BIP 65OP_CHECKLOCKTIMEVERIFYAdded the CLTV opcode enabling absolute timelocks for payment channels, escrow, and time-locked savings388,381 (December 2015)

ISM had a critical flaw: it consumed the entire version field with each upgrade. Since version numbers must increment sequentially, only one soft fork could be in the signaling phase at any given time. By the time BIP 65 activated, it was clear that Bitcoin needed a more flexible signaling mechanism.

Why BIP 66 mattered beyond DER encoding: Before BIP 66, Bitcoin relied on OpenSSL's signature parsing, which behaved inconsistently across versions and platforms. Two nodes running different OpenSSL builds could disagree on whether a transaction was valid: a direct threat to consensus. The fix seems minor, but it eliminated an entire class of consensus divergence bugs.

BIP 9: Versionbits and Parallel Deployment

BIP 9 replaced ISM with a fundamentally different approach. Instead of incrementing the entire block version number, it treated the version field as a bitfield where individual bits could be toggled independently. This allowed multiple soft forks to be signaled in parallel.

How BIP 9 Works

Each proposed soft fork is assigned a specific bit position (0 through 28) in the block version field. Miners set the corresponding bit to indicate readiness. Signaling is measured over 2,016-block retarget periods (approximately two weeks), and the deployment follows a state machine:

  • DEFINED: the deployment exists in code but its start time has not yet been reached
  • STARTED: the start time has passed, and miners can begin signaling
  • LOCKED_IN: the 95% threshold (1,916 of 2,016 blocks) was met in a retarget period, and the soft fork will activate after one more period
  • ACTIVE: the new consensus rules are enforced
  • FAILED: the timeout was reached without achieving lock-in

The timeout mechanism was a deliberate design choice: if a deployment failed to gain miner support within the defined window, it would expire cleanly rather than lingering indefinitely. This was meant to prevent stale signaling bits from occupying the version field forever.

CSV: BIP 9's First Success

CheckSequenceVerify (BIPs 68, 112, and 113) was the first deployment to use BIP 9. It added relative timelocks to Bitcoin, enabling more flexible payment channel constructions and time-sensitive smart contracts. CSV signaling reached threshold quickly, locking in at block 417,312 with 96.53% support. The smooth activation suggested BIP 9 was working as intended.

SegWit: When BIP 9 Broke Down

Segregated Witness (BIP 141) exposed BIP 9's critical vulnerability: a miner veto. SegWit was deployed with BIP 9 activation parameters in late 2016, but a coalition of miners, primarily associated with Bitmain, refused to signal support. Their motivations were complex: some objected to SegWit on technical grounds, while others wanted to leverage their signaling power to negotiate a block size increase.

Support peaked far below the 95% threshold, and for months it appeared that a small group of miners could indefinitely block an upgrade that had overwhelming support among developers, businesses, and users. This crisis exposed the fundamental tension in BIP 9: it gave miners an effective veto over consensus changes, even when the broader community had reached agreement.

The SegWit Wars and User Activated Soft Forks

The SegWit activation crisis of 2016-2017 became the most politically significant event in Bitcoin's governance history. It forced the community to confront a foundational question: are miners the gatekeepers of consensus changes, or are they merely service providers executing the will of node operators and users?

BIP 148: The UASF Movement

In March 2017, developer Shaolin Fry proposed BIP 148, a User Activated Soft Fork (UASF). The mechanism was blunt: after August 1, 2017, nodes running BIP 148 would reject any block that did not signal support for SegWit. This turned miner signaling from voluntary into mandatory, backed by the threat of economic nodes rejecting non-compliant blocks.

The UASF movement gained momentum rapidly. The #UASF hashtag spread across social media, and prominent Bitcoin Core contributors including Luke Dashjr supported the approach. The logic was rooted in game theory: if enough economic nodes (exchanges, wallets, merchants) ran BIP 148, any miner producing non-signaling blocks would risk having their blocks rejected by the economic majority.

The New York Agreement and BIP 91

On May 23, 2017, a group of companies and mining pools signed the New York Agreement (NYA), also known as SegWit2x. The deal proposed activating SegWit followed by a hard fork to double the block size. BIP 91 was the technical implementation: it required SegWit signaling using a reduced 80% threshold measured over shorter signaling windows.

BIP 91 locked in on July 21, 2017, and activated on July 23. Once active, it required all blocks to signal for SegWit, making BIP 148's August 1 deadline moot. SegWit itself locked in on August 9 and activated at block 481,824 on August 24, 2017.

Lessons From the SegWit Wars

StakeholderRole in ActivationLesson Learned
MinersSignal readiness by setting version bits in blocks they produceSignaling is coordination, not a veto: if miners block an upgrade the community supports, alternative activation paths will emerge
Node operatorsEnforce consensus rules by choosing which software to runEconomic nodes (exchanges, wallets) ultimately determine which chain has value, giving users de facto authority over the ruleset
DevelopersWrite and review code, propose activation parametersTechnical consensus is necessary but not sufficient: social consensus and deployment strategy matter equally
Users / businessesRun nodes, choose which chain to use, provide economic demandThe "economic majority" has more power than hashrate when the two disagree, as demonstrated by Bitcoin Cash's declining market share after forking
The governance precedent: The SegWit activation saga established that Bitcoin's consensus rules are ultimately determined by users and the economic majority, not miners. Miners coordinate upgrade timing, but they cannot veto changes the community has agreed to. This principle directly shaped every subsequent activation discussion.

Taproot: BIP 8, LOT=true, and Speedy Trial

Taproot (BIPs 340, 341, 342) was the most significant Bitcoin upgrade since SegWit, introducing Schnorr signatures, MAST, and Tapscript. The technical proposal achieved broad consensus quickly, but the activation method triggered a prolonged debate.

The BIP 8 Framework

BIP 8 was designed as BIP 9's successor, addressing the miner-veto problem with a new parameter called lockinontimeout (LOT). This boolean flag determined what happened if the signaling window expired without reaching threshold:

  • LOT=false: if the timeout is reached without sufficient signaling, the deployment simply fails and can be retried later (identical to BIP 9 behavior)
  • LOT=true: if the timeout is reached, the soft fork activates regardless of miner signaling, effectively forcing activation through a user-activated mechanism

LOT=true vs LOT=false

The LOT parameter created a sharp divide. LOT=true supporters, led by Luke Dashjr, argued that miners should have no option to veto an upgrade with clear community consensus: the SegWit precedent showed that without a forced-activation fallback, miners could exploit their signaling power for political leverage.

LOT=false supporters countered that forced activation was dangerous for non-contentious upgrades: if Taproot truly had consensus, the LOT parameter was unnecessary, and if it turned out to be controversial, the upgrade should fail rather than activate against opposition. Forced activation also risked chain splits if a meaningful fraction of the network refused to enforce the new rules.

The Speedy Trial Compromise

The resolution came through a proposal called Speedy Trial: a BIP 9 variant with a dramatically shortened signaling window. The logic was pragmatic: give miners a quick, low-stakes opportunity to signal readiness. If they do, activation proceeds smoothly. If they do not, the community has a clear signal that more discussion is needed, without having committed to forced activation.

Bitcoin Core 0.21.1, released in May 2021, deployed Taproot using Speedy Trial with these parameters:

  • Start time: April 24, 2021 (epoch timestamp 1619222400)
  • Timeout: August 11, 2021 (epoch timestamp 1628640000)
  • Threshold: 90% (1,815 of 2,016 blocks), reduced from BIP 9's 95%
  • Minimum activation height: block 709,632 (expected November 2021)

Taproot signaling succeeded in the first eligible retarget period. On June 12, 2021, at block height 687,284 (mined by F2Pool), the 90% threshold was reached for the first time. Taproot activated at block 709,632 on November 14, 2021, with the first Taproot-containing block also mined by F2Pool.

Comparing Bitcoin Soft Fork Activation Methods

MethodUsed ForThresholdTimeout BehaviorKey Tradeoff
Flag DayEarly changes (2010-2012)NoneActivates regardlessSimple but fragile: no readiness check
ISM (IsSuperMajority)BIP 34, 66, 6575% / 95% of last 1,000 blocksNo timeout: waits indefinitelyOnly one deployment at a time
BIP 9 (Versionbits)CSV, SegWit95% of 2,016-block periodFails after timeoutEnables miner veto
BIP 148 (UASF)SegWit (backup)N/A (mandatory signaling)Rejects non-signaling blocksAggressive: risks chain split
BIP 8 (LOT=true)Proposed for TaprootConfigurableForced activationPrevents veto but risks contentious activation
Speedy TrialTaproot90% of 2,016-block periodFails quickly (3 months)Low-stakes test: fast fail or fast success

The Buried Deployments Pattern

Once a soft fork has been active for years with no realistic chance of reversal, maintaining the original activation logic becomes unnecessary overhead. BIP 90 formalized the concept of "buried deployments": replacing ISM and BIP 9 activation checks with simple block-height comparisons. The activation heights for BIP 34, 66, and 65 (227,931, 363,725, and 388,381 respectively) are now hardcoded into Bitcoin Core, simplifying the code and eliminating the need to scan 1,000-block windows during initial block download.

What Comes Next: Covenants and Future Activation

Bitcoin's next major consensus changes will likely involve covenants: opcodes that allow a UTXO to restrict how it can be spent in future transactions. Several proposals are in active development, and the activation method for whichever proposal achieves consensus will be shaped by every precedent discussed above.

OP_CTV (BIP 119)

CheckTemplateVerify, authored by Jeremy Rubin, adds a single opcode that commits a UTXO to a specific transaction template: the version, locktime, input count, sequences, output count, outputs, and the spending input's position. CTV enables vaults, congestion control, and certain Lightning improvements.

In April 2022, Rubin proposed activating CTV via Speedy Trial and released an activation client. The attempt was met with significant opposition from developers who felt sufficient technical consensus had not been reached, and Rubin shelved the effort within weeks. More recently, CTV deployment parameters have been proposed with a start time of March 30, 2026, a timeout of March 30, 2027, a minimum activation height around May 2027, a 90% signaling threshold, and a 2,016-block signaling period: closely mirroring Taproot's Speedy Trial parameters.

OP_CAT (BIP 347)

OP_CAT would reintroduce byte-string concatenation to Bitcoin Script. Originally part of Bitcoin's initial opcode set, OP_CAT was disabled by Satoshi in 2010 due to denial-of-service concerns. Those concerns are now mitigated by stack element size limits introduced with Taproot. OP_CAT is more flexible than CTV but also more general-purpose, which makes its security implications harder to fully analyze.

LNHANCE

LNHANCE bundles four opcodes into a single soft fork package: OP_CHECKTEMPLATEVERIFY, OP_CHECKSIGFROMSTACK (CSFS), OP_INTERNALKEY, and OP_PAIRCOMMIT. The combination enables LN-Symmetry (the upgrade formerly known as eltoo), timeout trees, simplified PTLC scripts, vaults, and trustless coin pools. LNHANCE is positioned as the Lightning-focused covenant proposal: it provides enough flexibility for meaningful Layer 2 improvements without the broader surface area of OP_CAT.

The Great Consensus Cleanup (BIP 54)

Separate from the covenant proposals, BIP 54 proposes fixing four known vulnerabilities: the timewarp attack (an off-by-one error in the difficulty adjustment algorithm), slow-to-validate blocks, a Merkle tree weakness that could confuse SPV clients, and the remaining duplicate transaction vector. As of mid-2026, mining pools including MARA Pool and ViaBTC have begun generating BIP 54-compatible coinbase transactions, signaling early voluntary adoption ahead of any formal activation parameters.

The Activation Dilemma for Future Soft Forks

No consensus exists on which activation method should be used next. The Taproot experience validated Speedy Trial for non-contentious upgrades, but the earlier CTV activation attempt demonstrated that deploying an activation client before achieving rough consensus can backfire.

The core tension remains: strict miner-signaling mechanisms (BIP 9) risk giving miners veto power over upgrades the community wants. Forced activation mechanisms (BIP 8 LOT=true, BIP 148-style UASFs) risk activating changes that lack genuine consensus, potentially splitting the network. Speedy Trial sits in the middle: it tests miner readiness quickly without committing to forced activation, but it does not solve the underlying question of what happens when miners and users disagree.

Rough consensus in practice: Bitcoin development uses a "rough consensus" model borrowed from the IETF. There is no formal vote. Instead, proposals are discussed on the bitcoin-dev mailing list, in Delving Bitcoin forums, and in IRC channels. Consensus is assessed by the absence of substantive unaddressed objections, not by counting supporters. This process is slow by design: it prevents premature activation while allowing any participant to raise legitimate concerns.

Why Activation Methods Matter for Layer 2 Protocols

The activation method for future soft forks has direct consequences for Bitcoin's Layer 2 ecosystem. Covenant opcodes like CTV and OP_CAT would enable new constructions that improve off-chain protocols: more efficient channel factories, trustless coin pools, and native vault designs. For protocols like Spark, which already enables instant, self-custodial Bitcoin transfers without channels, covenants could unlock additional capabilities: more expressive spending conditions, improved exit mechanisms, and tighter integration with Bitcoin's base layer.

The pace and method of activation directly affects how quickly these improvements can reach users. A smooth Speedy Trial activation could deliver covenant functionality within a year of parameter deployment. A contentious debate could delay upgrades indefinitely: the gap between SegWit's code completion and its activation was roughly two years.

Developers building on Bitcoin's Layer 2 ecosystem can explore the current protocol architecture through the Spark documentation and SDK, which provides tools for building on Spark today while anticipating future base-layer improvements. For a broader view of how OP_CTV and covenants could reshape Layer 2 design, see our deep dives on those topics.

Conclusion

Bitcoin's soft fork activation history traces an arc from centralized authority to distributed governance. Satoshi pushed code changes unilaterally. ISM gave miners a formal role. BIP 9 gave miners too much power. The SegWit wars demonstrated that users hold ultimate authority. Speedy Trial found a workable middle ground for non-contentious upgrades.

The next activation will test whether these lessons scale. Covenant proposals are technically more complex than Taproot, with broader implications for Bitcoin's programmability. The community will need to navigate deep technical disagreements about which opcodes to include, how to bundle them, and what activation parameters to use: all while maintaining the conservative approach that has kept Bitcoin's consensus stable for over 17 years.

Whatever method is chosen, the precedent is clear: Bitcoin upgrades when its users decide to upgrade. Miners coordinate the timing. Developers write the code. But the economic majority, the people who run nodes and transact on the network, determines which rules Bitcoin follows.

This article is for educational purposes only. It does not constitute financial or investment advice. Bitcoin and Layer 2 protocols involve technical and financial risk. Always do your own research and understand the tradeoffs before using any protocol.