Writing Skills
writing-skills
效率与协作技能,来自 obra/superpowers,查看原文获取完整用途和操作说明。
bitcoin-consensus【部署与运维】Bitcoin consensus rules: block validation, transaction validation, soft-fork activation mechanics (BIP9, BIP8, Speedy Trial), nLockTime / nSequence semantics, mempool policy vs consensus distinction. USE WHEN: discussing what makes a tx/block valid, soft-fork deployment, reorg handling, "is this consensus-valid".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Bitcoin consensus = the set of rules every full node enforces to decide if a block / transaction is valid for inclusion in the chain. Distinct from mempool policy (which is a node-local default for what tx to accept and relay).
prev_block exists and points to current best chain (or triggers reorg).SHA256d(header) ≤ target where target is derived
from the difficulty re-target window (every 2016 blocks).OP_RETURN matches the merkle root
of wtxids (BIP141).txids matches header.vin and vout.> MAX_MONEY (21M × 1e8 sats) output amount.scriptSig + scriptPubKey and (post-segwit)
the witness stack.| Mechanism | First used | Note |
|---|---|---|
| BIP9 (versionbits) | CSV (BIP68/112/113), SegWit (initially) | bit signaled in version field; needs 95% of last 2016 |
| BIP8 (LOT=true/false) | proposed for Taproot, debated | BIP9 + lockinontimeout option |
| Speedy Trial (BIP9 short window) | Taproot deployment 2021 | 3-month signaling, 6-month grace |
| Modified BIP9 (BIP8-style mandatory signaling) | BIP110 “reduced_data”, 2026 — failed | bit 4, threshold 1109/2016 (55%), NO_TIMEOUT |
Thresholds are per deployment, not a BIP9 constant: BIP9 specifies 1916/2016 (95%) on mainnet and SegWit used it; Taproot's Speedy Trial used 1815/2016 (90%), which is still Core's mainnet default.
BIP110 is the most recent mainnet attempt. Its mandatory-signaling window opened at block 961,632 (2026-08-08) and mainnet did not signal bit 4, so enforcing nodes split onto a branch that mined two blocks in ~8 hours; the BIPs repo moved BIP110 to Closed on 2026-08-10. No BIP110 rule is in force as of September 2026.
nLockTime: tx valid only after specified block-height or unix-time.nSequence per-input:
0xFFFFFFFF → final, disables nLockTime for that input.0xFFFFFFFE → does not signal opt-in RBF (BIP125). Signalling is
moot for relay: full-RBF is the Core default since v28.0 (Oct 2024).< 0xFFFFFFFE → signals opt-in RBF.| Layer | Examples | Where defined |
|---|---|---|
| Consensus | block size weight ≤ 4M WU, sigops ≤ 80k, nLockTime, output value rules | src/consensus/ in Core |
| Standardness | non-standard scripts rejected by mempool, dust threshold, MAX_STANDARD_TX_WEIGHT=400k, replaceability, cluster limits | src/policy/ |
A tx that is non-standard but consensus-valid can be mined (via
direct submission to a miner like mempool.space accelerator) and is
valid in a block.
-limitclustercount / -limitclustersize). RBF now requires the
resulting mempool feerate diagram to be strictly better; the CPFP
carveout is gone (use TRUC + sibling eviction). Still current in 31.1
(July 2026).submitpackage (26.0, December 2023) does the same locally.
BIP331 (“Ancestor Package Relay”) is still Status: Draft as of
September 2026 and its sendpackages / pkgtxns P2P messages have
never shipped — see package-relay/SKILL.md.src/consensus/, src/validation.cpp