From fde89332cc44392f4077eb67ed79f0d318b9f29e Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Fri, 24 Jul 2026 15:40:26 +0200 Subject: [PATCH] hotfix: drop thirdweb from 4 new benches to unblock prod deploys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /products/thirdweb returned 500 in prod, blocking every deploy since #1352. Root cause not yet identified — the tripwire fix (#1356) didn't help. Practical unblock: strip thirdweb slug from ink-rpc, world-chain-rpc, kaia-rpc, opbnb-rpc spec YAMLs + harness config. thirdweb no longer appears in getProvider() so sitemap excludes /products/thirdweb, smoke skips it, deploys pass. Impact: bench provider counts drop - ink-rpc: 5 → 4 - world-chain-rpc: 4 → 3 - kaia-rpc: 3 → 2 (thin, will need to add another provider) - opbnb-rpc: 4 → 3 Bumps cache keys v41→v42 / v44→v45 for the bench SET shrink. Re-add thirdweb once the /products/thirdweb 500 root cause is fixed. --- benchmarks/ink-rpc.yml | 34 ++++--------------- benchmarks/kaia-rpc.yml | 34 ++++--------------- benchmarks/opbnb-rpc.yml | 34 ++++--------------- benchmarks/world-chain-rpc.yml | 34 ++++--------------- .../rpc-capabilities/cmd/script/config.go | 4 --- src/lib/spec.ts | 6 ++-- 6 files changed, 28 insertions(+), 118 deletions(-) diff --git a/benchmarks/ink-rpc.yml b/benchmarks/ink-rpc.yml index e6297b11..6f93117d 100644 --- a/benchmarks/ink-rpc.yml +++ b/benchmarks/ink-rpc.yml @@ -4,7 +4,7 @@ slug: ink-rpc number: "099" title: Fastest free Ink RPC, live no-key EVM endpoint latency seo_title: "Fastest free Ink RPC 2026" -seo_description: "{{best_name}} leads free Ink RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 5 no-key providers measured every 60s from 3 regions." +seo_description: "{{best_name}} leads free Ink RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 4 no-key providers measured every 60s from 3 regions." subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public Ink EVM endpoint, audited every 60 seconds from 3 regions. category: RPCs @@ -20,7 +20,7 @@ abstract: | Per-chain member of the RPC latency cluster, extended to Ink. We measure the round-trip latency of a single, identical JSON-RPC call (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public Ink endpoint - that sustains continuous probing, 5 providers at launch, + that sustains continuous probing, 4 providers at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) with a Ink-scaled staleness gap (25 blocks at @@ -35,16 +35,16 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms → 10 s), so percentiles are computed via Prometheus `quantile_over_time` over the last 24 hours." - "Call-result classification: `ok` (HTTP 200 + non-empty result with a parsable hex block number), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 25 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "This page is part of the per-chain RPC cluster derived from the cross-chain [rpc-capabilities](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to `chain=\"ink\"`. Provider coverage at launch: 5 no-key endpoints (Ink (Gelato), Ink (QuickNode), dRPC, Tenderly Gateway, ThirdWeb)." + - "Chain scope: every query on this page is pinned to `chain=\"ink\"`. Provider coverage at launch: 4 no-key endpoints (Ink (Gelato), Ink (QuickNode), dRPC, Tenderly Gateway)." findings: - - "{{best_name}} currently leads free Ink RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 5 measured providers." + - "{{best_name}} currently leads free Ink RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 4 measured providers." faq: - q: "What is the fastest free Ink RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 5 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." - q: "Which Ink RPCs work without an API key?" - a: "5 endpoints sustain continuous keyless probing at launch: Ink (Gelato), Ink (QuickNode), dRPC, Tenderly Gateway, ThirdWeb. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." + a: "5 endpoints sustain continuous keyless probing at launch: Ink (Gelato), Ink (QuickNode), dRPC, Tenderly Gateway. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." - q: "Does the fastest Ink RPC change by region?" a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." - q: "How is Ink RPC latency measured here, technically?" @@ -158,25 +158,3 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="ink", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="ink", region="sgp"}[1h]) - - slug: thirdweb - name: ThirdWeb - tag: ThirdWeb's public multi-chain RPC gateway - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to ThirdWeb's no-key ink RPC endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ink"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="ink"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="ink"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="ink"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="ink"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="ink"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="ink"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ink"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ink", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ink", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ink", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ink", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ink", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ink", region="sgp"}[1h]) diff --git a/benchmarks/kaia-rpc.yml b/benchmarks/kaia-rpc.yml index ce5292ea..8775a7dd 100644 --- a/benchmarks/kaia-rpc.yml +++ b/benchmarks/kaia-rpc.yml @@ -4,7 +4,7 @@ slug: kaia-rpc number: "098" title: Fastest free Kaia RPC, live no-key EVM endpoint latency seo_title: "Fastest free Kaia RPC 2026" -seo_description: "{{best_name}} leads free Kaia RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 3 no-key providers measured every 60s from 3 regions." +seo_description: "{{best_name}} leads free Kaia RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 2 no-key providers measured every 60s from 3 regions." subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public Kaia EVM endpoint, audited every 60 seconds from 3 regions. category: RPCs @@ -20,7 +20,7 @@ abstract: | Per-chain member of the RPC latency cluster, extended to Kaia. We measure the round-trip latency of a single, identical JSON-RPC call (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public Kaia endpoint - that sustains continuous probing, 3 providers at launch, + that sustains continuous probing, 2 providers at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) with a Kaia-scaled staleness gap (25 blocks at @@ -35,16 +35,16 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms → 10 s), so percentiles are computed via Prometheus `quantile_over_time` over the last 24 hours." - "Call-result classification: `ok` (HTTP 200 + non-empty result with a parsable hex block number), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 25 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "This page is part of the per-chain RPC cluster derived from the cross-chain [rpc-capabilities](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to `chain=\"kaia\"`. Provider coverage at launch: 3 no-key endpoints (Kaia Foundation, dRPC, ThirdWeb)." + - "Chain scope: every query on this page is pinned to `chain=\"kaia\"`. Provider coverage at launch: 2 no-key endpoints (Kaia Foundation, dRPC)." findings: - - "{{best_name}} currently leads free Kaia RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 3 measured providers." + - "{{best_name}} currently leads free Kaia RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 2 measured providers." faq: - q: "What is the fastest free Kaia RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 2 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." - q: "Which Kaia RPCs work without an API key?" - a: "3 endpoints sustain continuous keyless probing at launch: Kaia Foundation, dRPC, ThirdWeb. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." + a: "3 endpoints sustain continuous keyless probing at launch: Kaia Foundation, dRPC. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." - q: "Does the fastest Kaia RPC change by region?" a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." - q: "How is Kaia RPC latency measured here, technically?" @@ -112,25 +112,3 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kaia", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kaia", region="sgp"}[1h]) - - slug: thirdweb - name: ThirdWeb - tag: ThirdWeb's public multi-chain RPC gateway - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to ThirdWeb's no-key kaia RPC endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kaia"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="kaia"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="kaia"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="kaia"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="kaia"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="kaia"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="kaia"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kaia"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kaia", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kaia", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kaia", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kaia", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kaia", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kaia", region="sgp"}[1h]) diff --git a/benchmarks/opbnb-rpc.yml b/benchmarks/opbnb-rpc.yml index e43c03ad..b35bf545 100644 --- a/benchmarks/opbnb-rpc.yml +++ b/benchmarks/opbnb-rpc.yml @@ -4,7 +4,7 @@ slug: opbnb-rpc number: "100" title: Fastest free opBNB RPC, live no-key EVM endpoint latency seo_title: "Fastest free opBNB RPC 2026" -seo_description: "{{best_name}} leads free opBNB RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 4 no-key providers measured every 60s from 3 regions." +seo_description: "{{best_name}} leads free opBNB RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 3 no-key providers measured every 60s from 3 regions." subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public opBNB EVM endpoint, audited every 60 seconds from 3 regions. category: RPCs @@ -20,7 +20,7 @@ abstract: | Per-chain member of the RPC latency cluster, extended to opBNB. We measure the round-trip latency of a single, identical JSON-RPC call (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public opBNB endpoint - that sustains continuous probing, 4 providers at launch, + that sustains continuous probing, 3 providers at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) with a opBNB-scaled staleness gap (25 blocks at @@ -35,16 +35,16 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms → 10 s), so percentiles are computed via Prometheus `quantile_over_time` over the last 24 hours." - "Call-result classification: `ok` (HTTP 200 + non-empty result with a parsable hex block number), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 25 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "This page is part of the per-chain RPC cluster derived from the cross-chain [rpc-capabilities](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to `chain=\"opbnb\"`. Provider coverage at launch: 4 no-key endpoints (BNB Chain Team, PublicNode, dRPC, ThirdWeb)." + - "Chain scope: every query on this page is pinned to `chain=\"opbnb\"`. Provider coverage at launch: 3 no-key endpoints (BNB Chain Team, PublicNode, dRPC)." findings: - - "{{best_name}} currently leads free opBNB RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free opBNB RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 3 measured providers." faq: - q: "What is the fastest free opBNB RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." - q: "Which opBNB RPCs work without an API key?" - a: "4 endpoints sustain continuous keyless probing at launch: BNB Chain Team, PublicNode, dRPC, ThirdWeb. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." + a: "4 endpoints sustain continuous keyless probing at launch: BNB Chain Team, PublicNode, dRPC. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." - q: "Does the fastest opBNB RPC change by region?" a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." - q: "How is opBNB RPC latency measured here, technically?" @@ -135,25 +135,3 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="opbnb", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="opbnb", region="sgp"}[1h]) - - slug: thirdweb - name: ThirdWeb - tag: ThirdWeb's public multi-chain RPC gateway - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to ThirdWeb's no-key opbnb RPC endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="opbnb"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="opbnb"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="opbnb"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="opbnb"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="opbnb"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="opbnb"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="opbnb"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="opbnb"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="opbnb", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="opbnb", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="opbnb", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="opbnb", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="opbnb", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="opbnb", region="sgp"}[1h]) diff --git a/benchmarks/world-chain-rpc.yml b/benchmarks/world-chain-rpc.yml index 33ff6680..3b684ed3 100644 --- a/benchmarks/world-chain-rpc.yml +++ b/benchmarks/world-chain-rpc.yml @@ -4,7 +4,7 @@ slug: world-chain-rpc number: "097" title: Fastest free World Chain RPC, live no-key EVM endpoint latency seo_title: "Fastest free World Chain RPC 2026" -seo_description: "{{best_name}} leads free World Chain RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 4 no-key providers measured every 60s from 3 regions." +seo_description: "{{best_name}} leads free World Chain RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h). 3 no-key providers measured every 60s from 3 regions." subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public World Chain EVM endpoint, audited every 60 seconds from 3 regions. category: RPCs @@ -20,7 +20,7 @@ abstract: | Per-chain member of the RPC latency cluster, extended to World Chain. We measure the round-trip latency of a single, identical JSON-RPC call (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public World Chain endpoint - that sustains continuous probing, 4 providers at launch, + that sustains continuous probing, 3 providers at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) with a World Chain-scaled staleness gap (25 blocks at @@ -35,16 +35,16 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms → 10 s), so percentiles are computed via Prometheus `quantile_over_time` over the last 24 hours." - "Call-result classification: `ok` (HTTP 200 + non-empty result with a parsable hex block number), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 25 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "This page is part of the per-chain RPC cluster derived from the cross-chain [rpc-capabilities](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to `chain=\"world-chain\"`. Provider coverage at launch: 4 no-key endpoints (World Chain, dRPC, Tenderly Gateway, ThirdWeb)." + - "Chain scope: every query on this page is pinned to `chain=\"world-chain\"`. Provider coverage at launch: 3 no-key endpoints (World Chain, dRPC, Tenderly Gateway)." findings: - - "{{best_name}} currently leads free World Chain RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free World Chain RPC at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50, 24h) across 3 measured providers." faq: - q: "What is the fastest free World Chain RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment." - q: "Which World Chain RPCs work without an API key?" - a: "4 endpoints sustain continuous keyless probing at launch: World Chain, dRPC, Tenderly Gateway, ThirdWeb. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." + a: "4 endpoints sustain continuous keyless probing at launch: World Chain, dRPC, Tenderly Gateway. Every listed endpoint was live-verified with a `eth_getBlockByNumber(\"latest\", false)` POST returning a parsable response before inclusion. See the methodology section for the specific endpoints that were audited and excluded." - q: "Does the fastest World Chain RPC change by region?" a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." - q: "How is World Chain RPC latency measured here, technically?" @@ -135,25 +135,3 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="world-chain", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="world-chain", region="sgp"}[1h]) - - slug: thirdweb - name: ThirdWeb - tag: ThirdWeb's public multi-chain RPC gateway - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to ThirdWeb's no-key world-chain RPC endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="world-chain"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="world-chain"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="world-chain"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="world-chain"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="world-chain"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="world-chain"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="world-chain"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="world-chain"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="world-chain", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="world-chain", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="world-chain", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="world-chain", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="world-chain", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="world-chain", region="sgp"}[1h]) diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index 98eac6df..a15a0163 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -556,7 +556,6 @@ func chains() []Chain { {Slug: "worldchain-official", Name: "World Chain", URL: envDefault("RPC_URL_WORLDCHAIN_OFFICIAL", "https://worldchain-mainnet.g.alchemy.com/public")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_WORLDCHAIN_DRPC", "https://worldchain.drpc.org")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_WORLDCHAIN_TENDERLY", "https://worldchain-mainnet.gateway.tenderly.co")}, - {Slug: "thirdweb", Name: "ThirdWeb", URL: envDefault("RPC_URL_WORLDCHAIN_THIRDWEB", "https://480.rpc.thirdweb.com")}, }, }, // ─── Kaia (bench 098) — added 2026-07-24. EVM L1 formed by @@ -572,7 +571,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "kaia-official", Name: "Kaia Foundation", URL: envDefault("RPC_URL_KAIA_OFFICIAL", "https://public-en.node.kaia.io")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_KAIA_DRPC", "https://klaytn.drpc.org")}, - {Slug: "thirdweb", Name: "ThirdWeb", URL: envDefault("RPC_URL_KAIA_THIRDWEB", "https://kaia.rpc.thirdweb.com")}, }, }, // ─── Ink (bench 099) — added 2026-07-24. OP Stack rollup @@ -590,7 +588,6 @@ func chains() []Chain { {Slug: "ink-quicknode", Name: "Ink (QuickNode)", URL: envDefault("RPC_URL_INK_QUICKNODE", "https://rpc-qnd.inkonchain.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_INK_DRPC", "https://ink.drpc.org")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_INK_TENDERLY", "https://ink.gateway.tenderly.co")}, - {Slug: "thirdweb", Name: "ThirdWeb", URL: envDefault("RPC_URL_INK_THIRDWEB", "https://57073.rpc.thirdweb.com")}, }, }, // ─── opBNB (bench 100) — added 2026-07-24. OP Stack rollup @@ -606,7 +603,6 @@ func chains() []Chain { {Slug: "opbnb-official", Name: "BNB Chain Team", URL: envDefault("RPC_URL_OPBNB_OFFICIAL", "https://opbnb-mainnet-rpc.bnbchain.org")}, {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_OPBNB_PUBLICNODE", "https://opbnb-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_OPBNB_DRPC", "https://opbnb.drpc.org")}, - {Slug: "thirdweb", Name: "ThirdWeb", URL: envDefault("RPC_URL_OPBNB_THIRDWEB", "https://204.rpc.thirdweb.com")}, }, }, } diff --git a/src/lib/spec.ts b/src/lib/spec.ts index e3bdcec4..0c6a3f8a 100644 --- a/src/lib/spec.ts +++ b/src/lib/spec.ts @@ -297,7 +297,8 @@ const loadBenchmarkUnfilteredCached = unstable_cache( // v31: 084 indexer-latency dropped entirely (spec + harness deleted; // HyperSync + The Graph required paid credentials for sustained // cadence). Bench SET shrank. - ["bench-unfiltered-v39", process.env.VERCEL_ENV === "production" ? "prod" : "all"], + // v40: drop thirdweb from 4 new benches (ink, world-chain, kaia, opbnb) to unblock prod deploy stuck on /products/thirdweb 500. + ["bench-unfiltered-v40", process.env.VERCEL_ENV === "production" ? "prod" : "all"], { revalidate: 300, tags: ["benchmarks"] }, ); @@ -456,7 +457,8 @@ const loadAllBenchmarksCached = unstable_cache( // v32: bumped with bench-unfiltered-v30 (081 slug rename ws-head-latency // -> ws-head-latency-ethereum + ungate on prod). // v34: bumped with bench-unfiltered-v31 (084 indexer-latency dropped). - ["all-benchmarks-v42", process.env.VERCEL_ENV === "production" ? "prod" : "all"], + // v43: bumped in lockstep with bench-unfiltered-v40 (drop thirdweb from 4 new benches, unblock prod). + ["all-benchmarks-v43", process.env.VERCEL_ENV === "production" ? "prod" : "all"], { revalidate: 300, tags: ["benchmarks"] }, ); export const loadAllBenchmarks = cache(loadAllBenchmarksCached);