For the complete documentation index, see llms.txt. This page is also available as Markdown.

Policy vs Consensus

The distinction between consensus rules and configurable policy

A node applies two distinct kinds of check to transactions and blocks:

  • Consensus rules determine validity. Every node enforces them identically, and they are always checked. A block is valid or invalid purely on the consensus rules. These are specified in Consensus Rules.

  • Local policy is per-node configuration — relay limits, mempool-admission limits, minimum fee, the specific block/transaction sizes a node accepts. Policy affects what a node relays or mines, not whether something is valid. A transaction rejected by one node's policy may be perfectly valid and mined by another.

Consensus rules (standard) versus local policy

Local policy is checked before a transaction is admitted to a node's mempool or included in a candidate block; consensus rules are checked whenever a transaction or block is validated. Where a limit has both a consensus value and a policy default (block size, for example), only the consensus value bears on validity — the policy default is operator-chosen and out of the validity contract.

Node components

A node is conventionally described as three functional components. This is an abstraction of the reference implementation, not a protocol requirement — the boundaries are an implementation choice.

Node components
  • Node software — validates transactions, assembles candidate blocks, and validates received blocks against the consensus rules.

  • Mining — performs the proof-of-work search over candidate headers.

  • Bitcoin Server Network (BSN) — the peer-to-peer message layer.

How these functions work is described under Node Operations; only the consensus rules the node software enforces are part of the protocol.

Reference rules list

Open
Reference list of consensus rules and local policies. Not exhaustive; the code is authoritative.

Last updated