Peer rotation



Summary:

The author of this post begins by bringing up the issue of network attacks, which have become more prevalent in recent years with the publication of new papers on the topic. In particular, revealing the topology of a network can increase the risk of various types of attacks including partitioning/eclipse and deanonymization of transactions. The current join/leave algorithm makes the network fairly static, making it possible to reconstruct the topology by observing events in the network. Rotation of peers is an obvious solution to this problem, but there are several questions to answer. For example, in a P2P network, rotation of peers may cause an additional threat because having connections to more different peers increases the chances of connecting to an attacker. One important detail to keep in mind is that a node may act legitimately, but just to wait until all of the connections are under the control of an attacker. Therefore, it is a good idea to avoid disconnecting the most reliable peers. There are several metrics that might be used to consider peers reliable, such as the fraction of recent blocks or transactions a particular node has relayed to us, and how long the connection has been maintained.Rotation of the outgoing connections only seems to be sufficient yet not very hard to implement and analyze. Current 8 peers for outgoing connections is an arbitrary number, however, there is a reason behind keeping a number of outgoing connections low. Thus, there are three values to discuss: N, M, T. N is the number of persistent peers that are considered trustworthy based on the metrics discussed earlier, M is the number of peers to be rotated every T seconds. Figuring out an optimal set {N, M, T} may be done analytically or by simulation. It may also be useful to keep track of previous connections (which were evicted due to the rotation) and get back to those after a while under certain conditions. The rotation of peers itself may increase the chance that a particular Bitcoin address or set of transactions would be linked to a node. In this case, either Dandelion or sending own transactions to a static set of peers (say first 8 peers) may help.


Updated on: 2023-06-13T02:55:27.280942+00:00