Skip to content

six chain RPC benches that nobody answers - #2784

Merged
Flotapponnier merged 1 commit into
devfrom
fix/retire-dead-rpc-benches
Oct 2, 2026
Merged

Flotapponnier merged 1 commit into
devfrom
fix/retire-dead-rpc-benches

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

What was audited

All 161 chain RPC benches. Seven had no provider producing a number. Every declared endpoint was re-tested by hand with the right protocol per chain — Tendermint /status for Cosmos, starknet_blockNumber for Starknet, XRP's own format — which is what separated the dead from the merely non-EVM. My first sweep used eth_blockNumber everywhere and was wrong about five of them.

Six retired

Bench Endpoints alive Last sample
quicksilver-rpc 0 of 3 29 days
thundercore-rpc 0 of 3 (two answer 503) 24 days
canto-rpc 0 of 1 (times out) 24 days
neon-rpc 0 of 3 8 days
plume-rpc 0 of 1 (drpc answers 400) fresh
zetachain-rpc 1 alive, 0.37 % success fresh

The last two are worth reading twice: the probes run, the data is current, and what it says is that nobody answers. Zetachain's one endpoint is Thirdweb, which serves browsers and refuses our probe hosts on every chain we measure it (#2779).

One kept, deliberately

starknet-rpc is not retired. Its probe has produced unbroken data for at least seven days (57 samples, zero gaps), OnFinality clears the 50 % floor at 50.69 % with a 339 ms p50, and every query the spec declares resolves against Prometheus right now. The published blob is 585 hours old regardless, so this is a publication bug, not a dead chain. Retiring it would have destroyed working measurement.

Scope of the removal

  • Specs deleted; slugs in REMOVED_BENCH_SLUGS so indexed URLs answer 410 Gone, not 404
  • Middleware matcher kept in sync — its test caught my first attempt, which used the wrong indentation and silently inserted nothing
  • Six chains leave the harness, so three probe regions stop spending calls on endpoints that time out
  • Five leave the chain registry, removing an empty /chains page each: all linked the RPC bench and nothing else, and all six were already out of the sitemap
  • plume stays in the registry: chain-bridged-tvl and chain-fees-revenue measure it

Verified

go build and go vet clean on the harness, tsc and eslint clean, 235 specs valid (down from 241), 418 tests pass.

The harness edit took three attempts: a regex over the Go composite literal left an orphan brace twice and go build caught both. The version here cuts on exact line boundaries.

An audit of all 161 chain RPC benches found seven with no provider
producing a number. Each declared endpoint was re-tested by hand, with
the right protocol per chain rather than eth_blockNumber everywhere,
which is what separated the dead from the merely non-EVM.

Six are retired:

  quicksilver   0 of 3 endpoints alive, last sample 29 days old
  thundercore   0 of 3 (two answer 503), 24 days
  canto         0 of 1 (connection times out), 24 days
  neon          0 of 3, 8 days
  plume         0 of 1 (drpc answers 400), probe fresh
  zetachain     1 endpoint alive, 0.37 % success, probe fresh

The last two are the pair worth reading twice. Their probes run and
their data is current, and what the data says is that nobody answers.
zetachain's single endpoint is Thirdweb, which serves browsers and
refuses our probe hosts on every chain we measure it (0.3 % to 1.5 %
across 29, see #2779).

The seventh, starknet-rpc, is NOT retired. Its probe has produced
unbroken data for at least seven days, OnFinality clears the 50 % floor
at 50.69 % with a 339 ms p50, and every query the spec declares resolves
against Prometheus right now. The published blob is 585 hours old
regardless, so the bench is a publication bug and not a dead chain.
Removing it would have destroyed working measurement.

Specs deleted, slugs added to REMOVED_BENCH_SLUGS so indexed URLs answer
410 Gone rather than 404, matcher kept in sync (its test caught the
first attempt, which had the wrong indentation and inserted nothing).

The six chains leave the harness too, so three probe regions stop
spending calls on endpoints that time out. Five leave the chain registry
with their bench, which removes an empty /chains page: each linked the
RPC bench and nothing else, and all six were already out of the sitemap.
plume stays in the registry because chain-bridged-tvl and
chain-fees-revenue measure it.

The harness edit took three attempts. A regex over the Go composite
literal left an orphan brace twice; `go build` caught both. The version
here cuts on exact line boundaries and passes build and vet.
@Flotapponnier
Flotapponnier merged commit 519a6c6 into dev Oct 2, 2026
2 checks passed
@Flotapponnier
Flotapponnier deleted the fix/retire-dead-rpc-benches branch October 2, 2026 14:12
Flotapponnier added a commit that referenced this pull request Oct 2, 2026
An audit of all 161 chain RPC benches found seven with no provider
producing a number. Each declared endpoint was re-tested by hand, with
the right protocol per chain rather than eth_blockNumber everywhere,
which is what separated the dead from the merely non-EVM.

Six are retired:

  quicksilver   0 of 3 endpoints alive, last sample 29 days old
  thundercore   0 of 3 (two answer 503), 24 days
  canto         0 of 1 (connection times out), 24 days
  neon          0 of 3, 8 days
  plume         0 of 1 (drpc answers 400), probe fresh
  zetachain     1 endpoint alive, 0.37 % success, probe fresh

The last two are the pair worth reading twice. Their probes run and
their data is current, and what the data says is that nobody answers.
zetachain's single endpoint is Thirdweb, which serves browsers and
refuses our probe hosts on every chain we measure it (0.3 % to 1.5 %
across 29, see #2779).

The seventh, starknet-rpc, is NOT retired. Its probe has produced
unbroken data for at least seven days, OnFinality clears the 50 % floor
at 50.69 % with a 339 ms p50, and every query the spec declares resolves
against Prometheus right now. The published blob is 585 hours old
regardless, so the bench is a publication bug and not a dead chain.
Removing it would have destroyed working measurement.

Specs deleted, slugs added to REMOVED_BENCH_SLUGS so indexed URLs answer
410 Gone rather than 404, matcher kept in sync (its test caught the
first attempt, which had the wrong indentation and inserted nothing).

The six chains leave the harness too, so three probe regions stop
spending calls on endpoints that time out. Five leave the chain registry
with their bench, which removes an empty /chains page: each linked the
RPC bench and nothing else, and all six were already out of the sitemap.
plume stays in the registry because chain-bridged-tvl and
chain-fees-revenue measure it.

The harness edit took three attempts. A regex over the Go composite
literal left an orphan brace twice; `go build` caught both. The version
here cuts on exact line boundaries and passes build and vet.
Flotapponnier added a commit that referenced this pull request Oct 19, 2026
…, 8 replacements join (#3044)

* swellchain-rpc and superseed-rpc retire: no keyless endpoint answers

swellchain: Ankr now requires a key (403), Sentio answers 404 and Thirdweb
refuses, so only dRPC is left and the page has read expired since
2026-08-23. superseed: the official RPC and Thirdweb both front Conduit,
which now demands a key (-32403), and dRPC no longer serves the chain
(-32601); nothing has answered since 2026-10-14.

A second keyless provider was searched for on both (PublicNode,
Tenderly, OnFinality, Alchemy public, the chains' own hosts) and none
answered. Same retirement as #2784: specs and harness entries deleted,
/chains entries and the speedtest directory row go, slugs added to
REMOVED_BENCH_SLUGS and the middleware matcher so indexed URLs answer
410 Gone.

* RPC sweep: 34 dead endpoints leave, 8 replacements join

Every public RPC pair under 5 percent success over 24h was re-tested by
hand with its chain's own protocol on 2026-10-19. 34 are dead and leave
the harness and their spec: Lava's hosts answer 410 Gone (arbitrum,
ethereum, near, solana, sonic), AutoStake's Cosmos hosts 404, PublicNode
dropped eleven Cosmos chains plus XRP, Ankr now requires a key (bitlayer,
iotex), Mysten's fullnode retired JSON-RPC, and a handful of single hosts
stopped resolving or answer 502. Bandchain's Stakewolle row answers by
hand and stays. Thirdweb stays everywhere: it answers browsers and
refuses probe hosts, which the pages already report.

Eight replacements were found, each checked for chain id and head height
against the chain's live endpoint: dRPC on aurora, harmony and gravity,
IoTeX's own .io gateway, AU on songbird, Stake&Relax on neutron,
Stakewolle on nolus and ECO Stake on regen. Copy that named a departed
provider is rewritten and dated. New marks for ECO Stake and AU, an alias
for iotex-official, registry entries for AU and iotex-official.
bakabhai993 pushed a commit to bakabhai993/OpenChainBench that referenced this pull request Oct 20, 2026
…, 8 replacements join (ChainBench#3044)

* swellchain-rpc and superseed-rpc retire: no keyless endpoint answers

swellchain: Ankr now requires a key (403), Sentio answers 404 and Thirdweb
refuses, so only dRPC is left and the page has read expired since
2026-08-23. superseed: the official RPC and Thirdweb both front Conduit,
which now demands a key (-32403), and dRPC no longer serves the chain
(-32601); nothing has answered since 2026-10-14.

A second keyless provider was searched for on both (PublicNode,
Tenderly, OnFinality, Alchemy public, the chains' own hosts) and none
answered. Same retirement as ChainBench#2784: specs and harness entries deleted,
/chains entries and the speedtest directory row go, slugs added to
REMOVED_BENCH_SLUGS and the middleware matcher so indexed URLs answer
410 Gone.

* RPC sweep: 34 dead endpoints leave, 8 replacements join

Every public RPC pair under 5 percent success over 24h was re-tested by
hand with its chain's own protocol on 2026-10-19. 34 are dead and leave
the harness and their spec: Lava's hosts answer 410 Gone (arbitrum,
ethereum, near, solana, sonic), AutoStake's Cosmos hosts 404, PublicNode
dropped eleven Cosmos chains plus XRP, Ankr now requires a key (bitlayer,
iotex), Mysten's fullnode retired JSON-RPC, and a handful of single hosts
stopped resolving or answer 502. Bandchain's Stakewolle row answers by
hand and stays. Thirdweb stays everywhere: it answers browsers and
refuses probe hosts, which the pages already report.

Eight replacements were found, each checked for chain id and head height
against the chain's live endpoint: dRPC on aurora, harmony and gravity,
IoTeX's own .io gateway, AU on songbird, Stake&Relax on neutron,
Stakewolle on nolus and ECO Stake on regen. Copy that named a departed
provider is rewritten and dated. New marks for ECO Stake and AU, an alias
for iotex-official, registry entries for AU and iotex-official.

(cherry picked from commit fac4b5f)
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