Fix/bootnodes typos and stale peer ids#73
Merged
Conversation
Found via a 200-endpoint bootyspector sweep against this file.
Typos (multiaddr parser rejected — these entries never reached any test):
- dwellir/{asset-hub-{kusama,polkadot},bridge-hub-{kusama,polkadot},collectives-polkadot}
had a double-slash before /tcp/ (e.g. `.com//tcp/443/wss/...`).
- turboflakes/people-paseo had a peer id starting with `2D3KooW…` (missing
the leading `1`, so 51 chars instead of the standard 52).
Stale peer IDs (multiaddr-declared id ≠ running node's id, surfaced as
NegotiationError(PeerIdMismatch) during dial):
- rotko/asset-hub-paseo (both tcp and wss variants):
LzC336hvwY7… → DapKRooNM78…
- stakeplus/collectives-polkadot: BCewTdMPoXNv… → QGy6gckVQXC8…
- stakeplus/coretime-polkadot: FJ2yBTKFKYwg… → QSCbhuSKP9Am…
- stakeplus/hydration (port 30332): GZaDfqPyzVxh… → AXMAjUzkvsWq…
- stakeplus/hydration (port 31332): BJMG8LCh6pLY… → H4wfLxJ69D3n…
- stakeplus/people-kusama: RuKr3ogzXwD8… → CXp4KET4ujUk…
- dwellir/people-polkadot: LVCw68epXsdX… → KMYu1L28TkDf…
Not addressed here:
- amforc TCP endpoints fail substrate protocol negotiation with
MultistreamSelectError on every network — needs amforc-side
investigation, not a config edit.
- A handful of stakeplus / amforc / radiumblock TCP entries time out
without a specific dial-failure event; same — operator-side issue.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comparison of `bootnodes.json` against the upstream `paritytech/chainspecs` repo found 7 WSS variants of existing operator entries that the IBP was missing. Adding them widens client transport options and gives a working fallback for operators whose TCP endpoint is currently broken (notably amforc, where TCP fails substrate negotiation but WSS works fine). | operator | network | port | |-------------|--------------------|-------| | amforc | encointer-kusama | 30333 | | stakeplus | encointer-kusama | 31332 | | dwellir | hydration | 443 | | radiumblock | hydration | 30336 | | stakeplus | paseo | 31334 | | dwellir | people-polkadot | 443 | | radiumblock | polkadot | 30335 | Each address was taken verbatim from the bootNodes array in the corresponding chainspec, so peer IDs are upstream-canonical. Not auto-applied (require curator review): - 3 stakeplus entries (collectives-polkadot, hydration, kusama) where the chainspec declared peer id disagrees with both the IBP entry and the running node — chainspec appears stale. - 2 addr_diff cases for encointer-kusama (gatotech `boot.gatotech.network` vs chainspec `boot-cr.gatotech.network`; rotko `encointer-kusama.boot.rotko.net` vs chainspec `enc14.rotko.net`) — same peer id, different DNS name. - 2 operator entries in chainspec for coretime-polkadot (dwellir, radiumblock) that the IBP doesn't list at all — may be intentional omission. - 4 paseo system parachain networks (asset-hub, bridge-hub, coretime, people) — chainspecs are symlinks into a `downloads/` directory that wasn't fetched; couldn't compare. See `bootnodes-status.md` in the bootyspector repo for the full report. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
These operators have coretime-polkadot bootnodes in `paritytech/chainspecs` but were missing from the IBP config. Both operators are already IBP members on adjacent networks (asset-hub, bridge-hub, people, polkadot), so adding their coretime entries is consistent with the rest of their membership. dwellir/coretime-polkadot: /dns/coretime-polkadot-boot-ng.dwellir.com/tcp/443/wss/p2p/12D3KooWGpmytHjdthrkKgkXDZyKm9ABtJ2PtGk9NStJDG4pChy9 /dns/coretime-polkadot-boot-ng.dwellir.com/tcp/30361/p2p/12D3KooWGpmytHjdthrkKgkXDZyKm9ABtJ2PtGk9NStJDG4pChy9 radiumblock/coretime-polkadot: /dns/coretime-polkadot-bootnode.radiumblock.com/tcp/30333/p2p/12D3KooWFsQphSqvqjVyKcEdR1D7LPcXHqjmy6ASuJrTr5isk9JU /dns/coretime-polkadot-bootnode.radiumblock.com/tcp/30336/wss/p2p/12D3KooWFsQphSqvqjVyKcEdR1D7LPcXHqjmy6ASuJrTr5isk9JU Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hitchho
added a commit
that referenced
this pull request
May 13, 2026
These are outputs of `scripts/bootnode_coverage.py` and `scripts/probe_bootnodes.py`. Committing them means: - they go stale the moment anyone edits bootnodes.json (PRs #73 and #74 immediately invalidated both), and - every regeneration produces a noisy diff against an artefact nobody reads from the repo. Removing both files and adding them to `.gitignore`. Generate locally with the scripts when you want a current snapshot. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hitchho
added a commit
that referenced
this pull request
May 13, 2026
After landing #73 (typo / stale peer-id fixes) and #74 (Level6 / PAsset / metaspan cleanup), bootyspector swept the current `bootnodes.json` at 60s timeout with the retry-with-jitter path; 23 multiaddrs still failed to establish a substrate-level connection on two attempts. Removing them. Going from **211 endpoints → 188 working** (89%). Breakdown of what was removed: **amforc TCP — 12 entries.** Every amforc TCP listener fails substrate protocol negotiation with `MultistreamSelectError`. WSS works on all amforc networks; TCP is consistently broken across all 12 networks they serve. Likely the TCP listeners aren't running the substrate p2p stack. **amforc/encointer-kusama — also the WSS.** Both transports failed (`tcp/30333/wss` and `tcp/30338`). The encointer-kusama WSS was the one I added from chainspec in #73; it's not reachable either. amforc loses encointer-kusama coverage entirely. **stakeplus shared-host TCP — 3 entries** on `boot.stake.plus`: asset-hub-paseo `:44333`, encointer-kusama `:36333`, paseo `:43333`. Time out with no specific dial-failure event. **radiumblock/polkadot — both transports** (`:30333` tcp, `:30335` wss). The whole `polkadot-bootnode.radiumblock.com` polkadot bootnode appears to be down; radiumblock loses polkadot coverage entirely. **radiumblock/coretime-polkadot WSS.** TCP variant works; WSS times out. **radiumblock/hydration WSS, dwellir/hydration WSS.** Both were chainspec-sourced additions (#73); both fail in practice. **radiumblock/coretime-polkadot WSS.** Same. Also removing 4 now-empty operator entries: amforc/asset-hub-paseo, stakeplus/asset-hub-paseo, amforc/encointer-kusama, radiumblock/polkadot. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.