> For the complete documentation index, see [llms.txt](https://protocol.bsvblockchain.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://protocol.bsvblockchain.org/implementation-notes/policy-vs-consensus.md).

# 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](/specification/consensus-rules.md).
* **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.

<figure><img src="https://2336456436-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVf1SsCoTJsr3QLhHUZ1V%2Fuploads%2Fgit-blob-24ad6778b56bf82d0f57ebf420ce1299bbf7add8%2FNetworkPolicies_Slide04.png?alt=media" alt=""><figcaption><p>Consensus rules (standard) versus local policy</p></figcaption></figure>

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.

<figure><img src="https://2336456436-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVf1SsCoTJsr3QLhHUZ1V%2Fuploads%2Fgit-blob-1d8503169daa7ef099df0bb707fa2f90bc2b94bc%2FNetworkPolicies_Slide01.png?alt=media" alt=""><figcaption><p>Node components</p></figcaption></figure>

* **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](/implementation-notes/node-operations.md); only the consensus rules the node software enforces are part of the protocol.

## Reference rules list

{% file src="/files/2lBkKug64mxtMM3g1gLc" %}
Reference list of consensus rules and local policies. Not exhaustive; the code is authoritative.
{% endfile %}
