A bloom filter is a probabilistic data structure that can determine whether or not an element is in a set by an extremely high speed operation. By probabilistic, it means that the only possible results are either "not in the set" or "possibly in the set." It can not give a result of "definitely in the set." This means that false positives are possible but false negatives are impossible. Although Simplified Payment Verification (SPV) is referenced in the Bitcoin whitepaper, current methods of downloading partial data did not exist for some time. Until then, there was no efficient way to create an SPV client until a protocol expansion allowed the use of bloom filters to download transactions only related to one's Bitcoin address.