Privacy Provision Via Bloom Filter
There is a huge number of reasons behind the success of Bitcoin. Let’s call several of them:
- The system is decentralized, which means that nobody can control its processes alone. It is impossible to turn off the whole system upon someone's desire. All nodes have equal rights, and the only way to attack this network is to acquire the majority of performance.
- It requires no registration. You don’t have to disclose your personal data to be able to join other network participants. In contradiction to traditional banking systems that officially request your data and may use it thereafter, Bitcoin interacts with you just like with other strangers.
- It is easy to join. All you need is software to operate with blockchain data and exchange it with other network participants. Even inexperienced users can join Bitcoin.
- It is heavily protected. Bitcoin uses different cryptographic approaches to support assets safety. Hacking or breaking the system using brute force is close to impossible.
There are many other reasons why Bitcoin is so popular nowadays, yet it has drawbacks. Data protection gives no chance for asset recovery in case of password loss. Decentralization does not allow involving any third party to resolve property conflicts. Every strong suit of the system is at the same time its weakness. One of those weaknesses is low privacy as a result of a chosen transactions system.
Transactions And Privacy
A transaction is the only way of guaranteed assets transfer between two participants in Bitcoin. In theory, one can try to mine a new block and send the block reward to another. But this approach is absolutely unreliable and cannot be counted on.
Each successful assets transfer consists of two parts. To be valid, they have to fit each other. Otherwise, the assets may be lost forever. In order to unlock money sent to a particular address, one needs to use a public key. This key should be used every time new assets arrive to the same account. Since all data is available for every system member, it is possible to trace transferred funds, which is a clear gap in privacy.
There is a way to hide assets though. Using a new private key every time allows you to segregate transactions as new public keys will be used. But this solution is available for full nodes only since light nodes commonly query for transactions. It discloses which transaction belongs to a particular node, especially taking into account that a standard network data exchange uses a unique network address.
Lightweight Node Privacy
Light nodes still have an option to protect their privacy. It is possible due to a special technique called the Bloom filter. It was implemented in the form it was described in a correspondent BIP. The key idea of the Bloom filter is that a light node can ask for many different transactions data. As soon as the data is received, unnecessary transactions get dropped. The main problem here is the balance between a transferred data amount and privacy assurance.
Earlier, we already talked about the block content. In order to request for transaction data, a light node should rather ask for its hash. The hash is taken from the Merkle tree that is queried partially. After the Merkle tree part is received, the node can check desired transactions and manage correspondent assets.
The Bloom filter implementation is optional though. As it is explained in the BIP, it is up to the user to decide whether to use it or not. If not, the user should be aware of security issues. One of disadvantages of the Bloom filter is the possibility of a false-positive result. This means that once the filter is received, it may show that a transaction exists while it actually doesn’t.
Unfortunately, the core algorithm of the Bloom filter is too big to be explained in a single article. According to the specification, it uses three different commands, a set of flags, and various data types. All these topics will be discussed in the following articles.