Owner: @Álvaro Castro-Castilla
<aside> ℹ️ TLDR; If not interested in the background or alternative solutions, jump to solution 2, but keep in mind that its viability is not fully determined yet.
</aside>
As we know by this time, privacy in PoS systems is not a trivial problem. Currently no PoS blockchain provides full stake privacy. Timing attacks and network observation strategies that aren't that hard or expensive to perform allow creating fairly accurate maps of the stake distribution in the network. This is essentially what we are trying to prevent with this protocol. The problem needs to be tackled holistically, emphasizing that the network cannot hide all identifiable traffic patterns unless a very high cost is incurred (rendering our target requirements for validators unachievable).
Part of the problem is tackled in the previous document. Mixnets and to a limited extent, broadcasting, help with sender/receiver unlinkability, which is another important component for privacy preservation in PPoS. Additionally, mixnets introduce noise (cover traffic) that helps by smoothing out otherwise distinct communication patterns between specific roles in the protocol (although as mentioned above can become prohibitively expensive if done naively). However, the use of a Mixnet does not solve the problem of private addressing. This boils down to the difference between private routing and private addressing:
From the definition of private routing vs addressing, we can derive what mixnets can and cannot do with more clarity:
The amount of real ingress/egress traffic of every node should be unobservable, without incurring in very high cost in terms of cover traffic. Mixnets have no way to regulate, optimally for both privacy and performance, the amount of cover traffic for protocols using it. A typical consensus protocol implementation has a message complexity per node at least proportional to the number of validators it hosts (if we have a flat p2p network). This means that the amount of cover traffic of the entire network is proportional to the node with the highest number of validators. Hence, with this approach home validators will be left behind by the ever-rising bar of professional node operators. This is antithetical to our principles of decentralization.
Private addressing is not solved by client/server mixnets, since the exit node always must know where to deliver the message. This easily leaks protocol behavior and stake information to the mixnet exit nodes, which could be malicious. Moreover, the problem of addressing is general in nature: if any single entity has access to the information of which specific node it needs to send a message to, this leaks enough information about nodes that can be used over time to build a view of the validator → node mapping. So even if we devise a better mixnet with no exit nodes (by for example eliminating the distinction between destination and last hop of the mixnet), it won't suffice. To see how this always holds, notice that all these situations leak enough information to an interested observer:
In short, private addressing requires the network to be able to deliver a message without nobody (except the receiver) knowing which node is the actual receiver.
The two limitations above have to be solved in order to provide the foundations for Private PoS. While the problem of private addressing could perhaps be solved at the network level (even if naively and inefficiently, with broadcasting), the problem of high cover traffic is inherent to Mixnets, and doesn't seem to have a feasible solution by means only of network architectures. The reason is because under an omniscient observer adversarial model, we will always have to match the total traffic of the node with the highest, and a mixnet has no control over what each node produces. We need the protocols that we want to protect at the network level to collaborate with the network design.
The solution that we will explore here for these problems relies on the following idea: the network should operate as ORAM (Oblivious Random Access Memory). More specifically:
Both sides must work together to solve the problem of private addressing. To make this possible we will be combining these tools: