Bloom Filter


Bloom filters were a proposed scheme which would have allowed light clients to request transactions of interest in a private manner. When a light client, such as an SPV node or a wallet, is attempting to track a Bitcoin transaction, they must query a node which stores the entire blockchain and the mempool, a so-called full node.

In order to track a user’s transaction history and balance, a wallet could query a full node for the status of a certain transaction, and the node could return the requested information. However, such a protocol would leak the financial privacy of the wallet itself.

To protect a wallet’s privacy, a wallet will instead request a large number of transactions from a node while only interested in one or a few of the transactions. In this way, the wallet will obtain the desired information while the node must guess which of the many transactions was the transaction of interest.

Bloom filters were proposed by BIP 37, but were proven to be vulnerable to several privacy leaks, negating their purpose as a privacy-preserving technique. Thus, bloom filters are not used by almost any Bitcoin software.