LearnBitcoin

Glossary

Merkle Block

A stripped-down block sent to SPV clients, containing only headers and minimal Merkle paths for relevant transactions.

A Merkle block is a Bitcoin peer-to-peer message (defined in BIP-37) that a full node sends to an SPV client. It contains:

This is what lets a phone wallet check whether its transactions appeared in the latest block, without downloading the whole block.

The downside, which has gotten more attention over the years: Bloom filters leak privacy. The SPV client sends its filter to the full node, which can probabilistically reverse-engineer which addresses or transactions the client cares about. For a privacy-conscious user, this is a meaningful concern - one that BIP-37 didn't anticipate when it was written in 2012.

The modern replacement is BIP-157/158 compact block filters: the server computes a filter per block, the client downloads it and checks for matches locally without revealing which addresses are theirs. Better privacy at modest bandwidth cost. Most modern SPV-style mobile wallets (Phoenix, Mutiny, Breez, etc.) use this approach rather than BIP-37 Merkle blocks.

Merkle blocks still work and are still implemented by Bitcoin Core, but their use has been deprecated in many parts of the modern wallet ecosystem.

Key takeaways

  • Used by SPV wallets to confirm specific transactions in a block
  • Contains minimal data: block header + Merkle path
  • Saves bandwidth/storage, enabling lightweight verification

Related terms (8)