What is Bloom Filter?
Let's find out Bloom Filter meaning, definition in crypto, what is Bloom Filter, and all other detailed facts.
A Bloom filter, which was developed in 1970 by Burton Howard Bloom, informs the user if a certain item belongs to a set or not. However, the filter can only show with complete certainty that an item is not in the set. If it indicates that the item is in the set, in some cases, it could be wrong.
Due to their space-saving efficiency, Bloom filters are appealing for a variety of applications. In the crypto world, they are widely used in Simplified Payment Verification (SPV), especially when it comes to Bitcoin.
Users can employ the Bitcoin network without operating full nodes by utilizing an SPV client. It’s difficult to run full nodes on low-powered devices such as smartphones because they have specific storage and processing requirements. Therefore, SPV clients can ask full nodes only for information about their wallets.
The simplest way to get this information is to make full nodes aware of the keys of the user. This way only relevant transactions would be transmitted to them. However, this is a bad option because the user's privacy would be compromised this way.
Though downloading all transactions just to delete the majority of them also wouldn’t be a good option because it would waste a lot of bandwidth. That’s where a Bloom filter comes to the rescue.
Imagine that Anna is a client and John is a full node. Anna has a costly transaction but she doesn’t want John to know about it. Thus, she needs to find a way to "mask" her transaction. To do that, she creates a Bloom filter. Let’s say that it looks like that:
3 4 2 1 6 8 7 5 0 9
She runs the transaction data through two distinct hash functions. Each of these functions ends up choosing two values from the string of numbers you can see above. Let’s say these values come out to be 2 and 8.
3 4 2 1 6 8 7 5 0 9
After that, Anna sends the filter to John. It's obvious that there's no possibility of knowing what data Anna has submitted to the filter based solely on this grid.
Though if John had the whole set that contains Anna's data, he could hash it and search for similarities in the filter. If there was a match, it's possible that it was the data that Anna asked for.
However, several inputs are likely to refer to 2 and 8 at the same time. Therefore, John wouldn’t be able to tell which part of the data Anna is actually interested in. Thus, he would return all of the matches, which Anna would then sort through.
Obviously, the process is much more complex than that. However, it does illustrate the fact that the Bloom filter disguises the actual interests of the client.
Bloom filter might not the best method to retrieve the desired information because it also has some privacy concerns. However, it’s still a better option than simply putting an undisguised request to a node.