Skip to content

Fix/bootnodes typos and stale peer ids#73

Merged
hitchho merged 3 commits into
mainfrom
fix/bootnodes-typos-and-stale-peer-ids
May 13, 2026
Merged

Fix/bootnodes typos and stale peer ids#73
hitchho merged 3 commits into
mainfrom
fix/bootnodes-typos-and-stale-peer-ids

Conversation

@hitchho
Copy link
Copy Markdown
Collaborator

@hitchho hitchho commented May 13, 2026

No description provided.

hitchho and others added 3 commits May 13, 2026 22:06
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 hitchho merged commit 02a4983 into main May 13, 2026
1 check passed
@hitchho hitchho deleted the fix/bootnodes-typos-and-stale-peer-ids branch May 13, 2026 18:01
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant