Bitcoincore: block validation in Bitcoin Core
Bitcoin Core is an open-source Bitcoin client whose full-node software fully validates the Bitcoin blockchain. For a candidate block, the node checks its header and transactions before connecting it to the active chain.
- Validation component
- Bitcoin Core's full-node software. Header checks cover proof of work, required difficulty, and timestamp rules. It also verifies that the transaction list matches the header's Merkle root. For transactions that spend existing outputs, connection checks input availability, value limits, and spending scripts. The assumevalid setting can skip historical script checks for its configured block and ancestors when the best header chain and accumulated-work requirements are met.
- Validation scope
- The Bitcoin blockchain. Bitcoin Core selects a valid chain with the most accumulated proof of work. Successful connection updates its unspent transaction output (UTXO) set by removing spent outputs and recording new unspent outputs, then advances its active chain tip. If two transactions in a block spend the same output, the second encounters an already-spent input and the node rejects the block.
- Other client component
- A bitcoin wallet, included within the same Bitcoin Core client.
Validation checklist
- If you want historical script verification during a fresh synchronization, use -assumevalid=0 before starting.
- If you need the node's validation position, use bitcoin-cli getblockchaininfo. The blocks field reports its validated chain height, and bestblockhash identifies its active tip. The separate headers count does not establish full block validation.