Bitcoin Core Developer Amiti Uttarwar is focused on improving aspects of Bitcoin’s peer-to-peer layer by addressing the tension between reliability and privacy
As the title of the Bitcoin white paper famously says, Bitcoin is a “peer-to-peer electronic cash system.” There is a tension, however, at the heart of such a project. It’s difficult for a system to be “peer-to-peer” and for it to work as “cash” at the same time; participating in a peer-to-peer network leaks identifying information which can threaten the privacy that cash requires. It is this tension that captivated Amiti Uttarwar, one of OKCoin’s Open-source Developer Grant recipients, when she became a Bitcoin Core developer. She is currently working on different aspects of the problem to help resolve it.
The intrinsic tension between “peer-to-peer” and “cash”
Bitcoin aims to be both as decentralized and as private as possible but there is a tension between these two aspects. In order to be decentralized, Bitcoin works in a peer-to-peer fashion: similar to torrent networks, the information it stores is distributed as widely as possible among the network’s participants. This is necessary in order to avoid centralized third parties getting involved in the transactions, but also to ensure the network’s reliability: even if one participant in the network shuts down for some reason, the network keeps running as normal.
On the other hand, in order to function as cash, Bitcoin needs to remain private. If everyone could see in real time everything you are doing with your money, whether as an individual or as a company, there would be little use of it. Therefore, it’s key to minimize as much as possible the amount of identifying information leaked by transactions. Having every transaction distributed to everyone and keeping them private at the same time, however, put opposing design constraints on the network.
Bitcoin’s privacy vs. reliability problem
In a talk titled “Attacking Bitcoin Core,” Amiti explained how this tension unfolds in Bitcoin. A peer-to-peer network, she argued, needs to have the three following characteristics:
- Reliability: the valid messages need to be delivered to all the participants in the network;
- Timeliness: the messages need to be delivered in a reasonable amount of time;
- Accessibility: it shouldn’t be too demanding, technically or computationally, to participate in the network (in the case of Bitcoin, to run a validating node).
Because Bitcoin is also a currency, it adds two additional requirements:
- Privacy: the behavior of the network’s participants shouldn’t be linked to their real world identities;
- Upgradability: the network should run, inclusive of all versions of the software.
The reliability of the Bitcoin network depends on the efficiency of its peer-to-peer infrastructure but its ability to work as cash hinges on its privacy feature. The conflict between the two, Amiti observed, is the following: concerns of reliability imply you want to tell everyone your message but concerns of privacy require you don’t want them to know it’s yours. Solving this conundrum is key to ensure Bitcoin’s success.
How much information should a Bitcoin node relay?
To help solve the problem, Amiti works on improving some aspects of Bitcoin’s peer-to-peer layer. As a reminder, the participants in the Bitcoin network are called nodes and they propagate three types of information around the network: they relay addresses of other known nodes in the network, as well as blocks and unconfirmed transactions. Two nodes are in a “full relay connection” when they send each other all three types of messages (addresses, transactions and blocks). The issue is that addresses and transactions leak information and can be spied on. Blocks, on the other hand, reveal little identifying information. One way to improve the situation has been to add “block only relay connection”. Two nodes are in a “block only relay connection” when they only send each other blocks. The option to do this is a net gain in privacy and even increases the network’s reliability.
Another important aspect of the reliability of the Bitcoin network is that the more features are added, the more complexity there is, the higher the risk of bug or vulnerability. This is why work on testing at the protocol level is so important: without it, Bitcoin couldn’t operate as a secure means of payment and saving.
To help improve the reliability of block-relay-only connections, Amiti has focused on two proposals, called “pull requests”. The first one makes the names of each type of connections, and the relations between each, more simple and better structured. The second one enables testing of both full-relay and block-relay-only connections. This helps ensure that the addition of “block only relay connections” is not not only a gain in privacy that keeps Bitcoin Core reliable but also one that keeps it secure.
In a nutshell, Bitcoin’s goal of a “peer-to-peer cash system” faces a privacy vs. reliability problem, and Amiti’s work on improving the security of block only relay connections is part of the solution to address it.