BIP9 (version bits)
The 2015 mechanism that lets miners signal for several soft forks in parallel using bits of the block version, with a 95% threshold and a timeout.
The wiki's angle: BIP9 assumed miners would signal for upgrades that users wanted. SegWit broke that assumption, and the BIP91 and BIP148 workarounds that rescued it are why later activation debates were so bitter.[2][6]
Mechanism
BIP-9 treats the block version field “as a bit vector, where each bit can be used to track an independent change”, tallied every retarget period, so several soft forks can be deployed at once[1]. Each deployment has a bit, a start time and a timeout, and moves through the states DEFINED, STARTED, LOCKED_IN, ACTIVE and FAILED[1]. Lock-in requires at least 1,916 of 2,016 blocks (95%) to set the bit, and signalling blocks must have 001 as their top three version bits[1].
Why it replaced version numbers
BIP-9 explains that earlier upgrades such as BIP-34, BIP-66 and BIP-65 raised the version number, which “permanently restricts the set of allowed nVersion field values”[1]. Pieter Wuille, Peter Todd, Greg Maxwell and Rusty Russell are its authors[1].
SegWit and Taproot
Bitcoin Takeover's soft-fork table lists SegWit on BIP9 bit 1, “pushed over the line by BIP91 and BIP148”[2]. BIP-91 had miners reject blocks that did not signal, with an 80% threshold over 336 blocks[3]. Taproot used Speedy Trial, a BIP9 variant with a 90% threshold and a minimum activation height[4]. BIP-8 proposed heights instead of times and an optional forced lock-in[5]. See UASF / BIP148 and Taproot activation.
References
- primaryBIP-9 (Version bits with timeout and delay) [archived]
- btkBitcoin: All the Hard Forks and Soft Forks (BTCTKVR: Forks!) [archived]
- primaryBIP-91 (Reduced threshold Segwit MASF) [archived]
- primaryBitcoin Core 0.21.1 release notes (Taproot activation parameters) [archived]
- primaryBIP-8 (Version bits with lock-in by height), Shaolin Fry and Luke Dashjr [archived]
- primaryBIP-148 (Mandatory activation of segwit deployment), Shaolin Fry [archived]