TECHNICAL_DOC // BLOCKCHAIN / ASSUME-UTXO
ASSUME
UTXO
UTXO
AssumeUTXO is a bitcoin-core/">Bitcoin Core optimization that allows a new node to bootstrap from
a serialized utxo-set/">UTXO set snapshot rather than replaying the entire blockchain from
the block/">Genesis Block. The node becomes functional within minutes, while full historical
validation continues in the background. Activated in Bitcoin Core 27.0 (2024).
THE_PROBLEM_IT_SOLVES
TRADITIONAL IBD — INITIAL BLOCK DOWNLOAD
Download entire blockchain: ~650 GB
Validate every transaction: ~600,000 blocks × all txs
Time on modern hardware: ~1–5 days
RAM required: 6 GB (UTXO set)
Bottleneck: CPU-bound signature verification
ASSUME UTXO APPROACH
ASSUME UTXO — FAST PATH
1. Load UTXO snapshot (hardcoded hash in source code)
Snapshot size: ~4 GB (serialized UTXO set)
Time to load: ~5–15 minutes
2. Node immediately syncs and validates recent blocks only
→ Functional for sending/receiving within ~15 minutes
3. Background validation continues from Genesis Block
→ Full validation completes over hours/days in background
→ If background validation finds a discrepancy → shutdown
TRUST_MODEL
How the Snapshot is Trusted
CRYPTOGRAPHIC HASH
The snapshot hash is hardcoded into Bitcoin Core's source code, reviewed by developers and
built by thousands of reproducible build verifiers. It is not trusted from the network —
only from the compiled binary.
// In src/kernel/chainparams.cpp (Bitcoin Core 27.0):
assumeutxo_data = {
.height = 840000,
.hash_serialized = uint256{
"a0f7d0c5f9b7e3a1d6c8...2f4b9e7a3c1d5f0b8e"
},
.nChainTx = 992424860,
.blockhash = uint256{
"0000000000000000000320a7...f9c2eff5d7b04"
}
}
The hash commits to the ENTIRE UTXO set at block 840,000.
If the loaded snapshot doesn't match → abort, fall back to IBD.
The snapshot is not trusted more than the developers who signed the Bitcoin Core release. Reproducible builds allow independent verification of the hardcoded hash.
SECURITY_TRADEOFF
AssumeUTXO does not skip validation — it defers it. The node will
eventually fully validate the entire chain in the background. During the period before
background validation completes, the node trusts the snapshot (which is as trustworthy as
the Bitcoin Core binary itself). This is strictly more trust than a fully
validated node, but strictly less trust than an SPV node or exchange.
TERMINOLOGY_INDEX
AssumeUTXO
Bitcoin Core feature allowing fast bootstrap from a UTXO snapshot with deferred full validation.
IBD
Initial Block Download. The traditional process of validating all blocks from Genesis to chain tip.
UTXO Snapshot
A serialized dump of the entire UTXO set at a specific block height.
Background Validation
The process running after AssumeUTXO bootstrap that validates all historical blocks from Genesis.
assumevalid
An older Bitcoin Core optimization that skips script validation for known-good old blocks. Not the same as AssumeUTXO.