Skip to content

Mainnet chainspec bootnodes are unreachable over the advertised /ws transport — fresh nodes cannot bootstrap (Idle, 0 peers) #5645

Description

@potterbm-cb

What is broken?

The two bootnodes shipped in the Vara mainnet chainspec (vara/node/res/vara.json) both advertise a WebSocket transport (/tcp/30333/ws), but neither serves a working /ws endpoint:

  • vara-connect-2 is unreachable at every layer — its DNS name resolves to
    Cloudflare and TCP/30333 is filtered.
  • vara-connect-1 is alive on plain TCP/30333, but does not respond
    to a WebSocket upgrade on that port, so the /ws multiaddr in the chainspec
    fails.

As a result, a fresh node started from the shipped chainspec (with no external peer configuration) cannot bootstrap and sits at Idle (0 peers). This is version-independent — the bootNodes list is byte-identical across v1.9.1 through v2.0.0/master.

Problem code

vara/node/res/vara.json:

"bootNodes": [
  "/dns4/vara-connect-1.vara-network.io/tcp/30333/ws/p2p/12D3KooWLDpZ5sWtSmZtiHXBstoQVwMAZ5yRWpDUBdjQHV7vBLHy",
  "/dns4/vara-connect-2.vara-network.io/tcp/30333/ws/p2p/12D3KooWCJas1xGRDUC8nnSvfSiC1RcTXWaAef6oom1vGvqUMZV7"
]

Confirmed identical onv1.9.1, v1.10.0, and v2.0.0

The fix: remove the /ws

Using /dns4/vara-connect-1.vara-network.io/tcp/30333/p2p/12D3KooWLDpZ5sWtSmZtiHXBstoQVwMAZ5yRWpDUBdjQHV7vBLHy with the --bootnodes flag DOES work.

Steps to reproduce

Start a fresh node using only the shipped chainspec bootnodes and observe it never acquires peers:

  gear --chain vara --tmp \
    --reserved-only \
    --reserved-nodes "/dns4/vara-connect-1.vara-network.io/tcp/30333/ws/p2p/12D3KooWLDpZ5sWtSmZtiHXBstoQVwMAZ5yRWpDUBdjQHV7vBLHy" \
    --reserved-nodes "/dns4/vara-connect-2.vara-network.io/tcp/30333/ws/p2p/12D3KooWCJas1xGRDUC8nnSvfSiC1RcTXWaAef6oom1vGvqUMZV7" \
    -l sub-libp2p=debug

Expected behavior

The node connects to at least one bootnode over the advertised transport and begins syncing.

Actual behavior

The node fails to dial both bootnodes over /ws and stays at Idle (0 peers):

2026-09-22 00:00:20.341  INFO main sc_cli::runner: Gear Node    
2026-09-22 00:00:20.341  INFO main sc_cli::runner: ✌️  version 1.10.0-600576ccafa    
2026-09-22 00:00:20.341  INFO main sc_cli::runner: ❤️  by Gear Technologies, 2021-2026    
2026-09-22 00:00:20.341  INFO main sc_cli::runner: 📋 Chain specification: Vara Network    
2026-09-22 00:00:20.341  INFO main sc_cli::runner: 🏷  Node name: aboard-box-7997    
2026-09-22 00:00:20.341  INFO main sc_cli::runner: 👤 Role: FULL    
2026-09-22 00:00:20.341  INFO main sc_cli::runner: 💾 Database: RocksDb at /tmp/substrateAGgkDQ/chains/vara_network/db/full    
2026-09-22 00:00:23.442  INFO main sc_service::client::client: 🔨 Initializing Genesis block/state (state: 0x5068…e5dc, header-hash: 0xfe1b…3763)    
2026-09-22 00:00:23.454  INFO main grandpa: 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2026-09-22 00:00:23.454  INFO main babe: 👶 Creating empty BABE epoch changes on what appears to be first startup.    
2026-09-22 00:00:23.455  INFO main sub-libp2p: Running libp2p network backend    

...SNIP...

2026-09-22 00:00:23.465  INFO main sc_service::builder: 📦 Highest known block at #0    
2026-09-22 00:00:23.465  INFO main sc_rpc_server: Running JSON-RPC server: addr=127.0.0.1:34933,[::1]:9944    
2026-09-22 00:00:23.465  INFO main sc_sysinfo: 🏁 CPU single core score: 972.68 MiBs, parallelism score: 969.96 MiBs with expected cores: 8    
2026-09-22 00:00:23.465  INFO main sc_sysinfo: 🏁 Memory score: 5.15 GiBs    
2026-09-22 00:00:23.465  INFO main sc_sysinfo: 🏁 Disk score (seq. writes): 297.89 MiBs    
2026-09-22 00:00:23.465  INFO main sc_sysinfo: 🏁 Disk score (rand. writes): 62.58 MiBs    
2026-09-22 00:00:23.467  INFO tokio-runtime-worker libp2p_mdns::behaviour: discovered: 12D3KooWMjvvuH7qbgzakDWxfi9okad7ko9YV8ZQS12DdzHfVVH7 /ip4/10.230.10.113/tcp/30333/ws    
2026-09-22 00:00:28.466  INFO tokio-runtime-worker substrate: 💤 Idle (0 peers), best: #0 (0xfe1b…3763), finalized #0 (0xfe1b…3763), ⬇ 0 ⬆ 0    
2026-09-22 00:00:33.466  INFO tokio-runtime-worker substrate: 💤 Idle (0 peers), best: #0 (0xfe1b…3763), finalized #0 (0xfe1b…3763), ⬇ 0 ⬆ 0    
2026-09-22 00:00:38.466  INFO tokio-runtime-worker substrate: 💤 Idle (0 peers), best: #0 (0xfe1b…3763), finalized #0 (0xfe1b…3763), ⬇ 0 ⬆ 0

Additional context

Did some testing on the included bootnodes:

  • vara-connect-2.vara-network.io — resolves to Cloudflare; TCP/30333 times out. Unreachable.
  • vara-connect-1.vara-network.io — TCP/30333 open, but the WebSocket upgrade receives no "101 Switching Protocols" (times out / empty reply). The /ws transport is not served.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: fixBug fix correcting incorrect behavior

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions