In peer-to-peer networks like IOTA, a node’s neighbors are its only source of information. Any peering mechanism must therefore focus on connecting to a healthy number of honest neighbors, i.e. nodes not trying to harm the network.
We introduce an autopeering mechanism in which every node has specific criteria for selecting potential neighbors. Its goal is to build a secure and reliable node's neighborhood, to be used by the gossip protocol, while preventing attackers from “tricking” other nodes into becoming their neighbors. The autopeering mechanism also creates an efficient small-world network, in which messages can be propagated to every other node through a small number of intermediate steps.
At its core, the neighbor selection protocol of the autopeering mechanism uses both a screening process called Mana Rank and a score function that takes into account some private as well as verifiable public randomness. Effectively, if there is a large number of nodes, only nodes with similar consensus mana can become neighbors.
The protocol explicitly distinguishes between Outbound and Inbound neighbors groups. That means, each node is free to request preferred neighbors to become members of its Outbound group, and build up the Inbound group by screening incoming peering requests based on local and private requirements. This division provides some unpredictability of the network topology as well as protection against outside attacks (such as eclipse attacks). This makes it hard for attackers to target certain nodes in the peering process, while ensuring nodes always have at least a certain amount of honest neighbors.