TECHNICAL_DOC // BLOCKCHAIN / SOFT-FORK
SOFT
FORK
FORK
A fork/">soft fork is a backward-compatible tightening of Bitcoin's consensus rules
— new rules are a strict subset of old rules. Old nodes continue to see new blocks as
valid (they don't enforce the new rule but accept blocks that satisfy it). This allows
upgrades without forcing all nodes to update simultaneously, as long as a majority of
hashrate enforces the new rules.
HOW_SOFT_FORKS_WORK
RULE TIGHTENING — BACKWARD COMPATIBLE
Before soft fork:
Old rule: OP_NOP5 is a no-op (does nothing, valid)
After soft fork (BIP 65 — CHECKLOCKTIMEVERIFY):
New rule: OP_NOP5 now enforces timelock logic
Old node sees block with OP_CHECKLOCKTIMEVERIFY:
→ Interprets as OP_NOP5 → valid (old rule still satisfied)
→ Does NOT enforce the timelock check
New node sees same block:
→ Enforces timelock check → valid (or invalid if CLTV fails)
Key property: new-rule blocks are always valid under old rules
→ no chain split if majority enforces new rules
The majority-hashrate miner side wins:
If >50% hashrate enforces new rules:
→ Any violating block gets orphaned quickly
→ Old nodes follow the new-rule chain anyway
Major Bitcoin Soft Forks
HISTORY
Bitcoin has been upgraded exclusively through soft forks since its launch, preserving backward compatibility while adding significant new capabilities.
BIP 16 — P2SH (April 2012):
OP_HASH160 <hash> OP_EQUAL now redeemable with scripts
Old nodes: see P2SH as anyone-can-spend
BIP 34 — Block height in coinbase (March 2013)
BIP 65 — OP_CHECKLOCKTIMEVERIFY (Dec 2015)
BIP 66 — Strict DER signatures (July 2015)
BIP 112 — OP_CHECKSEQUENCEVERIFY (July 2016)
BIP 141 — SegWit (August 2017):
Witness data in new field — old nodes see outputs as
anyone-can-spend (valid under old rules)
Fixes transaction malleability
BIPs 340/341/342 — Taproot (November 2021):
P2TR output type + Schnorr + Tapscript
Old nodes see P2TR as anyone-can-spend
TERMINOLOGY_INDEX
Soft Fork
A backward-compatible rule tightening. New blocks satisfy both old and new rules. No chain split required.
Rule Tightening
Soft forks restrict what is valid — new valid set ⊂ old valid set. Old nodes still accept new blocks.
BIP 9
UASF
User-Activated Soft Fork. Enforced by nodes (not miners) — used as leverage during SegWit activation.