IntersectMBO / ouroboros-network

Specifications of network protocols and implementations of components running these protocols which support a family of Ouroboros Consesus protocols; the diffusion layer of the Cardano Node.
https://ouroboros-network.cardano.intersectmbo.org
Apache License 2.0
274 stars 87 forks source link

Bootstrap Peers #4615

Closed bolt12 closed 8 months ago

bolt12 commented 1 year ago

Boostrap Peers

Bootstrap peers are designed to provide safety guarantee for nodes joining the network while still taking advantage of the distributed network for nodes that are synced. This will be an intermediate step before Genesis which will allow to further distribute the system. The bootstrap peers will be run by some trusted parners like CF, Emurgo or IOG. They are primarly designed for leaf nodes (e.g. full node wallets), who often end up syncing and require access to honest chain.

Here's some relevant links regarding this issue:

Implementation plan

In practice, the topology file will remain largely the same, however we will need a new field which provides bootstrap peers URL. Bootstrap peers will serve to sync the node until it is near the tip, and will also act as a fallback set when the node falls significantly behind the tip. This depends on #4555 .

Notes

Edge nodes (daedalus wallets) are not expected to use local roots. We are planing to preserve local roots even when bootstrap peers are being used in syncing mode. Local roots are considered trusted nodes.

After having the notion of bootstrapping peers one needs to make sure that whenever the node gets far behind the tip we switch to only using bootstrapping peers instead of peers from the ledger. I think a good way to have this is to make the outbound governor aware of the state of the tip (i.e. if we are behind or close) and use that in the peer picking policy so as to only pick bootstrapping peers.

References

Related to #3969.

bolt12 commented 1 year ago

Here's some relevant links regarding this issue: