Version Field Validation Rules
Validation of Version Fields
Even though miners use the version field for signaling and ASICBoost, they cannot set it to any arbitrary value. Full nodes enforce strict validation rules on the version field to maintain Consensus.
1. Minimal Version Enforcement
Nodes will reject any block that has a version number lower than the currently enforced minimum. * For example, once the network moved to Version 2 (BIP 34), any miner attempting to broadcast a Version 1 block would have their block rejected by all upgraded nodes. * This ensures that once a feature (like block height in coinbase) is mandatory, it cannot be bypassed.
2. Unknown Version Handling
What happens if a miner signals a version bit that a node doesn't recognize? * Old Nodes: If they see a version they don't understand (e.g., a node from 2015 seeing a SegWit signaling bit), they accept the block anyway, provided it follows all the old rules. * The Logic: This is the heart of Soft Fork Forward Compatibility. The version bits are "future-proofed" so that old nodes don't crash when new features are deployed.
3. BIP 9 State Machine
Nodes track the "state" of each version bit over 2016-block intervals (roughly two weeks). * Defined: The node knows what the bit means. * Started: The node starts counting blocks with that bit set. * Locked-in: The node sees >95% (or 90%) of blocks have the bit. * Active: The node starts enforcing the new rules.
4. The "Reserved" Bits
There are bits in the version field that are reserved for future use. If a miner sets a bit that has no defined BIP (Bitcoin Improvement Proposal), nodes simply ignore it. This is what allows ASICBoost version rolling to function without breaking the network.
If a miner rolls a version bit that is assigned to a pending soft fork activation, they might accidentally signal "Ready" for a feature they haven't actually implemented, which could lead to them mining an invalid block later.
In the final section, we will build a Python Header Serializer to see exactly how these 4 version bytes are packed into the 80-byte header.
TeachMeBitcoin is an ad-free, open-source educational repository curated by a passionate team of Bitcoin researchers and educators for public benefit. If you found our articles helpful, please consider supporting our hosting and ongoing content updates with a clean donation: