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.
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/wsendpoint:vara-connect-2is unreachable at every layer — its DNS name resolves toCloudflare and TCP/30333 is filtered.
vara-connect-1is alive on plain TCP/30333, but does not respondto a WebSocket upgrade on that port, so the
/wsmultiaddr in the chainspecfails.
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 — thebootNodeslist is byte-identical acrossv1.9.1throughv2.0.0/master.Problem code
vara/node/res/vara.json:Confirmed identical on
v1.9.1,v1.10.0, andv2.0.0The fix: remove the
/wsUsing
/dns4/vara-connect-1.vara-network.io/tcp/30333/p2p/12D3KooWLDpZ5sWtSmZtiHXBstoQVwMAZ5yRWpDUBdjQHV7vBLHywith the--bootnodesflag DOES work.Steps to reproduce
Start a fresh node using only the shipped chainspec bootnodes and observe it never acquires peers:
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):Additional context
Did some testing on the included bootnodes:
/wstransport is not served.