Skip to main content

Simplified Payment Verification (SPV) | Bitcoin Glossary | Mapping Bitcoin

Simplified Payment Verification (SPV)

Protocol

Also known as: SPV

A method described in the Bitcoin whitepaper that allows lightweight clients to verify transactions without downloading the full blockchain. SPV clients only download block headers and use Merkle proofs to confirm that a transaction is included in a block.

Overview

Simplified Payment Verification (SPV) is a technique originally described in Section 8 of the Bitcoin whitepaper by Satoshi Nakamoto. It enables clients to verify that a transaction has been included in a block without downloading the entire blockchain, dramatically reducing the bandwidth and storage requirements for users who do not need to run a full node.

How It Works

An SPV client downloads only the block headers (80 bytes each) rather than full blocks. To verify a transaction, the client requests a Merkle proof from a full node, which demonstrates that the transaction's hash is included in the block's Merkle root.

         Block Header
         (80 bytes)
              |
         Merkle Root
        /           \
      H(AB)        H(CD)
     /    \        /    \
   H(A)  H(B)  H(C)  H(D)
    |      |     |      |
   TxA   TxB   TxC   TxD
                 ^
          (target transaction)

Merkle Proof for TxC: [H(D), H(AB)]

The client hashes TxC, combines it with H(D) to get H(CD), then combines H(CD) with H(AB) to verify it matches the Merkle root in the block header.

Security Considerations

SPV provides weaker security guarantees than full validation:

  • SPV clients trust that the longest chain contains only valid transactions, since they do not verify consensus rules beyond proof-of-work.
  • They are vulnerable to certain attacks where miners include invalid transactions in blocks.
  • Bloom filters (BIP37), historically used for privacy in SPV, have been shown to leak significant information about the user's addresses.

Modern alternatives like Electrum servers and compact block filters (BIP157/BIP158) offer improved privacy and efficiency for lightweight clients compared to the original SPV design.

Common Misconceptions

SPV does not mean "no verification." SPV clients still verify proof-of-work in block headers and confirm Merkle inclusion. The trade-off is that they do not independently validate every transaction and script in every block.