Blockchain/Level III · The network/3.1 Nodes/Lesson 4
Pruned nodes and light clients (SPV)
The architecture of trust: from full verification to Merkle proofs
MaterialsA Bitcoin Core node configured with prune=550 (optional)A light walletA block explorer
Wonder
- How does a node validate the entire history of Bitcoin without storing every block forever?
- What specific cryptographic mechanism allows a smartphone wallet to verify its balance without downloading hundreds of gigabytes of data?
- Why did the original privacy-preserving filters for light wallets leak user identities, and how was that flaw fixed?
Explore
- Full validation and full storage are separable. Every validating node must process every block once to build the current set of unspent outputs, but it need not keep old blocks afterwards. Some clients go further and skip validation entirely, checking only that transactions are included in blocks with enough proof of work. The choices trade disk space, bandwidth and privacy against independence.
- A pruned node performs this same initial validation of every block from genesis but subsequently deletes old block data to save disk space. The `prune` setting in Bitcoin Core retains at least 550 MB of recent blocks while discarding older ones once verified. It remains a full validator, capable of enforcing consensus rules and protecting its owner’s wallet with independent truth. However, it can no longer serve historical block data to other peers or support features requiring deep chain lookups like `txindex`.
- Light clients, or SPV nodes, take a different approach by not validating the full ruleset. They download only block headers, which contain the Merkle root of all transactions in that block. To verify a specific transaction’s inclusion, the client requests a Merkle proof from a peer and checks it against the header’s root. This relies on the assumption that the chain with the most cumulative work is valid, trading independent rule-enforcement for drastic reductions in storage and bandwidth requirements.
- Early SPV implementations used BIP37 Bloom filters to let wallets request only relevant transactions from peers. The wallet sent a filter describing its addresses; peers would scan their mempool and send matching transactions. This design leaked privacy: by observing the filters, a malicious peer could deduce which addresses belonged to the user and track their activity. Bitcoin Core stopped serving Bloom filters by default in 2019 (version 0.19).
- Compact Block Filters (BIP157/158) reversed this flow to restore privacy. Instead of the wallet revealing its addresses, full nodes publish a compact filter for each block; the client downloads these filters and tests them locally against its own keys. When a filter matches, the client downloads the whole block, because requesting a single transaction would reveal it to the peer. This prevents peers from knowing which addresses the wallet monitors, significantly improving user privacy while maintaining efficient synchronization.
- Many mobile wallets rely on a third-party server, for example an Electrum server, for data, while checking Merkle proofs against block headers themselves. The trade-off is clear: convenience and low resource usage versus independent verification and privacy. A user running a pruned node retains full validation capability but limited historical serving; an SPV wallet retains a minimal footprint but relies on peers to show it every relevant transaction and assumes, without checking, that the most-work chain is valid.
Key facts
- A pruned node validates all blocks from genesis but deletes old data, retaining at least 550 MB of recent blocks.
- SPV clients download only block headers and verify transactions using Merkle proofs against the header’s root hash.
- BIP37 Bloom filters leaked user privacy by revealing which addresses a wallet monitored to its peers.
- Compact Block Filters (BIP157/158) allow clients to test server-provided filters locally, preserving address privacy.
- SPV wallets trust that the chain with the most cumulative proof-of-work is valid, rather than enforcing all consensus rules independently.
- Pruned nodes remain full validators and can protect their owner’s funds but cannot serve historical block data to other peers.
Exercise nine, six, three, one
9CollectList 9 types of Bitcoin nodes or client implementations. Note for each: storage requirements, validation capability (full vs. SPV), and primary use case.
6ClusterGroup the 9 into 6 categories based on their level of independent verification and data retention.
3DistillReduce the 6 groups to 3 distinct trade-offs between privacy, security, and resource consumption.
1CrystallizeWrite 1 sentence explaining why a light client’s trust model differs fundamentally from a full node’s.
Fact check
Dates, figures and claims checked against the published sources listed below.
- Satoshi Nakamoto, 'Bitcoin: A Peer-to-Peer Electronic Cash System' (2008), Section 8
- BIP37: Connection Bloom filtering
- BIP157: Client Side Block Filtering
- BIP158: Compact Block Filters for Light Clients
- Bitcoin Core release notes 0.11.0 (pruning)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 10