-
Notifications
You must be signed in to change notification settings - Fork 1k
Closed
Labels
area:p2ppriority:highHigh priority issue to be prioritized for the current/following sprintHigh priority issue to be prioritized for the current/following sprint
Description
All our infrastructure is based around bootstrappers, and each time a node starts; it connects to them and only to them. We do not save any information about other discovered peers during runtime on disk.
This is a choke point for our networks. In case network bootstrappers go offline, a node connected to the network won't be able to rejoin it after the restart.
Saving known peers on disk and using them for bootstrapping will solve the problem, decrease the load on bootstrappers, and enhance network decentralization.
To ultimately achieve the goal, we should:
- Use persistent PeerStore instead of in memory
- Periodically saving some fraction of connected peers and using them for bootstrapping instead of hardcoded bootstrappers
- For this, we should introduce a Bootstrapper p2p component that handles/contains the saving and reconnecting logic
- We must implement this first and then migrate to libp2p native solutions once Persist routing table libp2p/go-libp2p-kad-dht#254 is implemented.
- The storing of discovered full nodes and the reconnection to them on start should be in the Discovery component. We should additionally make periodic rotations of discovered full nodes.
- This point needs more thinking, though, and saving might be unnecessary if we do rotations anyway
renaynay and derrandz
Metadata
Metadata
Assignees
Labels
area:p2ppriority:highHigh priority issue to be prioritized for the current/following sprintHigh priority issue to be prioritized for the current/following sprint