Bitcoin SPV clients, also known as Simplified Payment Verification clients, are clients that verify whether particular transactions are included in a block without downloading the entire blockchain. SPV clients trust full nodes to follow consensus rules and to validate transactions. They download only the block headers and filter the headers through a bloom filter to check for the presence of transactions they are interested in.
If a full node tells them that a transaction is in a particular block, they can trust that information because it would be economically disastrous for a full node to lie about which blocks contain transactions. Bitcoin SPV clients do not check whether blocks themselves follow the consensus rules; instead, they rely on full nodes to follow the rules.
The bloom filter is a key part of how SPV clients work. A bloom filter is a probabilistic data structure that allows for quick membership testing of an element against a set of elements. The tradeoff is that bloom filters may give false positives; that is, an element may be reported as being in the set when it actually is not.
The false positive rate can be tuned by adjusting the size of the bloom filter and the number of hash functions used. Bitcoin uses bloom filters to allow SPV clients to quickly check whether a transaction might be relevant to them without having to download and process the entire blockchain.
There are two types of SPV clients: lightweight clients and full-fledged SPV clients. Lightweight clients only download block headers and do not perform any verification themselves; they simply trust that full nodes are following consensus rules and validating transactions.
Full-fledged SPV clients download block headers and perform some verification themselves; for example, they may check whether Transactions in each block actually spend inputs from earlier unspent Transaction outputs (UTXOs).
The security model for Bitcoin SPV clients is that they rely on full nodes to follow consensus rules and validate transactions. If all full nodes were honest, then all Bitcoin SPV clients would be secure.
However, in practice, there may be some malicious full nodes on the network. For this reason, it is recommended that Bitcoin SPV clients connect to multiple full nodes and cross-check information between them whenever possible.
In conclusion, Bitcoin SPV works by allowing light weight or mobile wallets to connect to any full node on the network without having to download the entire blockchain themselves. By doing this, it improves decentralization as now anyone can run a full node, regardless of their computing power or storage capacity. Furthermore, it increases security as all information passed from full node to client is verified using cryptographic techniques such as hashing and bloom filters.