BitcoinMachine
TECHNICAL_DOC // BLOCK / VERSION
VERSION
The block version field is a 4-byte signed integer in the block header originally indicating the protocol version. Since BIP 9, the upper 3 bits signal version-bit fork/">soft fork readiness, while bits 0–28 act as a version bits mask allowing miners to simultaneously signal support for up to 29 concurrent soft fork proposals.
BLOCK VERSION EVOLUTION
Version 1: 0x00000001 Original protocol version. Used from genesis to block 227,930. Version 2: 0x00000002 (BIP 34) Required coinbase to encode block height in scriptSig. Activated at block 227,931. Version 3: 0x00000003 (BIP 66) Enforced strict DER encoding for ECDSA signatures. Activated at block 363,725. Version 4: 0x00000004 (BIP 65) Enabled OP_CHECKLOCKTIMEVERIFY (CLTV). Activated at block 388,381. BIP 9 era (version bits): 0x20000000 and above Upper 3 bits = 001 → enables version bit signaling Bits 0–28 = soft fork signal bits Taproot signaling (BIP 341): Version = 0x20000000 | (1 << 2) = 0x20000004 Locked in at block 687,284 (June 2021)
BIP 9 — Version Bits Signaling
SOFT FORK ACTIVATION
BIP 9 defines a state machine for soft fork activation using individual bits in the version field, allowing multiple upgrades to be signaled simultaneously.
Version field bit layout (BIP 9): Bit 31-29: must be 001 (identifies BIP9 block) Bit 28-0: individual signal bits Signal bit N set: miner signals readiness for proposal N Example: 0x20000004 = bit 2 set = Taproot signal Activation states per bit per difficulty period: DEFINED → proposal exists, not yet started STARTED → signaling window open LOCKED_IN → 95% of blocks in window signaled ACTIVE → soft fork rules enforced FAILED → 95% threshold not met in time Speedy Trial (BIP 8, used for Taproot): Lower threshold, shorter window, min activation height
Miners signaling a version bit does not mean they enforce the new rules — it only indicates readiness. Full nodes enforce soft forks regardless of miner signaling once active.
TERMINOLOGY_INDEX
Block Version
4-byte field in block header. Originally protocol version, repurposed by BIP 9 for soft fork signaling.
BIP 9
Version bits proposal for concurrent soft fork signaling and activation via miner threshold voting.
Version Bits
Bits 0–28 of the block version field used by BIP 9 to signal readiness for specific soft fork proposals.
Speedy Trial
A BIP 8 variant with shorter windows and lower thresholds, used to activate Taproot.