Crypto glossary

Simplified payment verification (SPV)

Definition

Simplified payment verification (SPV) lets a light Bitcoin wallet confirm a payment is in a block using headers and a Merkle proof, not the full chain.

SPV is described in section 8 of the Bitcoin whitepaper. Instead of storing every transaction, an SPV wallet downloads the chain of 80-byte block headers and checks that it follows the chain with the most proof of work. To verify an incoming payment, it requests a Merkle branch linking the transaction to the Merkle root in one of those headers.

The method made mobile Bitcoin wallets practical when downloading the full chain was out of the question. Variants of it still underpin light wallets, and the same idea of proving inclusion against a header is used by sidechains, bridges and Lightning implementations that need to check on-chain events cheaply.

SPV proves that a transaction was included in a block, not that the block itself is valid, so it assumes the majority of hashrate is honest. Early implementations based on Bloom filters leaked which addresses belonged to the wallet; newer compact block filters (BIP-157 and BIP-158) improve privacy, but an SPV wallet still relies on connecting to honest full nodes.

Example

A phone wallet receives a payment and asks a full node for a Merkle proof; after checking it against a header buried under six more blocks, the wallet shows the payment as confirmed.

Related terms