Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Allow Bootnodes to be specified under nested domains in the chain spec #7811

Closed
wpank opened this issue Dec 31, 2020 · 4 comments
Closed

Allow Bootnodes to be specified under nested domains in the chain spec #7811

wpank opened this issue Dec 31, 2020 · 4 comments

Comments

@wpank
Copy link

wpank commented Dec 31, 2020

Right now bootnodes are individually defined in the chain spec, like this:

  "bootNodes": [
    "/dns/p2p.cc3-0.kusama.network/tcp/30100/p2p/12D3KooWDgtynm4S9M3m6ZZhXYu2RrWKdvkCSScc25xKDVSg1Sjd",
    "/dns/p2p.cc3-1.kusama.network/tcp/30100/p2p/12D3KooWNpGriWPmf621Lza9UWU9eLLBdCFaErf6d4HSK7Bcqnv4",
    "/dns/p2p.cc3-2.kusama.network/tcp/30100/p2p/12D3KooWLmLiB4AenmN2g2mHbhNXbUcNiGi99sAkSk1kAQedp8uE",
    "/dns/p2p.cc3-3.kusama.network/tcp/30100/p2p/12D3KooWEGHw84b4hfvXEfyq4XWEmWCbRGuHMHQMpby4BAtZ4xJf",
    "/dns/p2p.cc3-4.kusama.network/tcp/30100/p2p/12D3KooWF9KDPRMN8WpeyXhEeURZGP8Dmo7go1tDqi7hTYpxV9uW",
    "/dns/p2p.cc3-5.kusama.network/tcp/30100/p2p/12D3KooWDiwMeqzvgWNreS9sV1HW3pZv1PA7QGA7HUCo7FzN5gcA",
    "/dns/kusama-bootnode-0.paritytech.net/tcp/30333/p2p/12D3KooWSueCPH3puP2PcvqPJdNaDNF3jMZjtJtDiSy35pWrbt5h",
    "/dns/kusama-bootnode-0.paritytech.net/tcp/30334/ws/p2p/12D3KooWSueCPH3puP2PcvqPJdNaDNF3jMZjtJtDiSy35pWrbt5h",
    "/dns/kusama-bootnode-1.paritytech.net/tcp/30333/p2p/12D3KooWQKqane1SqWJNWMQkbia9qiMWXkcHtAdfW5eVF8hbwEDw"
  ]

This leaves some inflexibility in adding and removing nodes. Each addition or deletion requires a new client release, which can take a decent amount of time before the changes get rolled out to node operators.

Instead, it would be nice to be able to be able to provide a domain list, such as [https://bootnodes.parity.io, https://bootnodes.polkadot.network], where each domain can list a IPFS CID -> QmY7Yh4UquoXHLPFo2XbhXkhBvFoPwmQUSa92pxnxjQuPU. Fetching this content of this CID would then yield the previous list of bootnode multiaddrs. This approach makes it easier to dynamically add and remove bootnodes to networks at any point (irregardless of client release cycles).

CC @bkchr

@tomaka
Copy link
Contributor

tomaka commented Jan 11, 2021

There already is a libp2p feature where you'd pass /dnsaddr/bootnodes.polkadot.network. It's not implemented in rust-libp2p yet: libp2p/rust-libp2p#1450
https://github.com/multiformats/multiaddr/blob/master/protocols/DNSADDR.md

@tomaka tomaka added this to Triage in Networking (Outdated) via automation Jan 11, 2021
@tomaka
Copy link
Contributor

tomaka commented Mar 22, 2021

Implemented in libp2p: libp2p/rust-libp2p#1931
Remains to update libp2p in Substrate.

@romanb
Copy link
Contributor

romanb commented Mar 22, 2021

Remains to update libp2p in Substrate.

I'm preparing a PR.

@tomaka
Copy link
Contributor

tomaka commented Mar 29, 2021

Done in #8420

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
No open projects
Development

No branches or pull requests

3 participants