Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bootstrap Peers #4615

Closed
4 of 6 tasks
bolt12 opened this issue Jul 4, 2023 · 1 comment · Fixed by #4555
Closed
4 of 6 tasks

Bootstrap Peers #4615

bolt12 opened this issue Jul 4, 2023 · 1 comment · Fixed by #4555
Assignees
Labels
bootstrap Issues / PRs related to bootstrap peers outbound-governor Issues / PRs related to outbound-governor

Comments

@bolt12
Copy link
Contributor

bolt12 commented Jul 4, 2023

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

  • Bootstrap Peers Implementation #4555 API from the consensus which provides information if we are in caught up or syncing mode
  • Add new boostrap peer notion to Governor state
    • mechanism to obtain bootstrap peers from an URL over https
  • changes to the outbound governor to accommodate transition changes between caught-up and syncing states
  • adaptation of PeerStateActions - they need to be aware of the transition, so the source of peers is changed
  • extend tests to cover bootstrap peers, especially the transition between both states. And making sure the IER is respected

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 bolt12 self-assigned this Jul 4, 2023
@bolt12 bolt12 mentioned this issue Jul 4, 2023
5 tasks
@bolt12
Copy link
Contributor Author

bolt12 commented Jul 10, 2023

@coot coot changed the title Add Bootstrap peers concept to the topology file Bootstrap Peers Aug 2, 2023
@coot coot moved this to In Progress in Ouroboros Network Aug 31, 2023
@coot coot linked a pull request Sep 14, 2023 that will close this issue
@coot coot removed the networking label Dec 18, 2023
@coot coot moved this to In Review in Ouroboros Network Jan 2, 2024
@coot coot added the outbound-governor Issues / PRs related to outbound-governor label Jan 24, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in Ouroboros Network Jan 29, 2024
@coot coot moved this from In Review to Done in Ouroboros Network Feb 22, 2024
@coot coot added the bootstrap Issues / PRs related to bootstrap peers label Sep 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bootstrap Issues / PRs related to bootstrap peers outbound-governor Issues / PRs related to outbound-governor
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants