121 / 691IBD

Initial block download

IBD is a new node's first synchronization with Bitcoin history. It combines obtaining data, validating blocks and constructing the unspent-output state, beyond transferring files.

IBD is more than a file download. A Full Node builds a validated UTXO set from history; historical script checks also depend on the assumevalid setting.

The node discovers peer addresses and synchronizes headers. A header links history and contains Proof of Work, but does not itself establish the validity of every transaction in the block. [Bitcoin Developer Guide — Initial Block Download] [Satoshi NakamotoBitcoin whitepaper]

Cumulative work identifies a candidate branch for validation. Neither the largest header count nor a peer's assertion replaces work and full block checks. [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — validation] [Satoshi NakamotoBitcoin whitepaper]

Blocks can be downloaded in parallel from multiple peers. Connecting them to the valid chain respects prior state: transaction outputs cannot be checked without the required history. [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — validation]

A Full Node checks structure, the Merkle root, spending rules and issuance limits, among other things. Consensus rules apply according to height and activations; headers are not full validation. [Bitcoin Core — validation] [Bitcoin Core — chainstate]

Connecting blocks removes spent outputs and adds new UTXO. This database represents current spending possibilities, not all historical transactions or a ledger of address balances. [Bitcoin Core — validation] [Bitcoin Core — chainstate]

Under conditions involving sufficiently deep known history, assumevalid can skip historical script checks. It does not accept arbitrary history unchecked; assumevalid=0 disables this optimization. [Bitcoin Core — validation]

Pruning removes old block files after processing while retaining the UTXO set and necessary metadata. It saves persistent storage, not the need to obtain and process history during ordinary IBD. [Bitcoin Core — validation] [Bitcoin Core — chainstate]

Bitcoin Core v29.0 uses tip age, minimum work and loading status; once cleared, the flag does not return to true within that process. It is an operational heuristic, not proof of the latest global tip. [Bitcoin Core — validation] [Bitcoin Core — getblockchaininfo]

Duration depends on CPU, memory, disk, network and peer availability. The verificationprogress fraction from getblockchaininfo estimates verification work, not a completion deadline or simply the fraction of bytes downloaded. [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — getblockchaininfo]

AssumeUTXO can use a supported UTXO-set snapshot for earlier tip operation. History is validated in the background and its result compared with the snapshot; earlier usability is not completed historical validation. [Bitcoin Core — validation] [Bitcoin Core — AssumeUTXO design]

For the clearest picture, read this entry together with Pruned node, AssumeUTXO, Block propagation, Compact block relay. The reverse links also lead from Pruned node, AssumeUTXO.

DOC · 001Bitcoin Developer Guide — Initial Block DownloadDocumentationDOC · 002Bitcoin Core — validationDocumentationDOC · 003Bitcoin Core — chainstateDocumentationDOC · 004Bitcoin Core — AssumeUTXO designDocumentationDOC · 005Bitcoin Core — getblockchaininfoDocumentationDOC · 006Satoshi Nakamoto — Bitcoin whitepaperPrimary
Source-first · No investment advice