The Autopeering Module
A few months ago, we opened up the source code of GoShimmer, IOTA’s prototype and research tool to experiment and test the building blocks of Coordicide. We are thrilled to see such a big and productive engagement from the community and we want to thank you all for your contributions and feedback! They have been very useful to improve GoShimmer as well as to help us identify how to better redesign the autopeering module.
We are excited to share with you the source code of the improved redesign of the autopeering module. You can access the code from the following repository:
In the IOTA protocol, a node (or peer) is a machine storing the information about the Tangle, IOTA’s underlying data structure. Nodes also commonly act as the entry point for accessing and utilizing the Tangle. In order for the network to work efficiently, nodes exchange information with each other to be kept up-to-date about the new ledger state. Currently, a manual peering or connection process is used for nodes to register mutually as neighbors. However, manual peering might be subject to attacks (e.g., social engineering) to affect the network topology. To prevent these attacks, and to simplify the setup process of new nodes, we introduced, in the Coordicide white paper, a mechanism that allows nodes to choose their neighbors automatically. The process of nodes choosing their neighbors without manual intervention by the node operator is called autopeering.
The aim of the autopeering module redesign is to ease simulations while keeping the same code base that will be used in GoShimmer. Being able to assess the autopeering behavior and performance via simulations is very important for IOTA. It allows answering several questions, such as how many peering requests each node has to send on average before getting accepted, how long a connection is going to last, how fast the protoco...