diff --git a/benchmarks/boba-rpc.yml b/benchmarks/boba-rpc.yml index 7f14f098..2dc8ed5e 100644 --- a/benchmarks/boba-rpc.yml +++ b/benchmarks/boba-rpc.yml @@ -4,7 +4,7 @@ slug: boba-rpc number: "152" title: Fastest free Boba Network RPC, live no-key endpoint latency seo_title: "Fastest free Boba Network RPC 2026" -seo_description: "{{best_name}} leads free Boba Network RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +seo_description: "{{best_name}} leads free Boba Network RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 2 no-key providers measured every 60s from 3 regions." subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Boba Network RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs @@ -14,13 +14,13 @@ unit: ms higher_is_better: false seo_intro: | - Boba Network is an OP-Stack EVM L2 on Ethereum (chain 288) focusing on reducing gas costs for computationally intensive applications, BOBA governance token, operated by the Boba Foundation. The official endpoint at mainnet.boba.network and additional gateways from dRPC and Tenderly provide keyless access probed every 60 seconds from three regions. + Boba Network is an OP-Stack EVM L2 on Ethereum (chain 288) focusing on reducing gas costs for computationally intensive applications, BOBA governance token, operated by the Boba Foundation. The official endpoint at mainnet.boba.network and dRPC provide keyless access probed every 60 seconds from three regions. abstract: | Per-chain member of the RPC latency cluster, extended to Boba Network. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Boba Network endpoint - that sustains continuous probing, 4 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) so the leaderboard rewards sustained availability rather than @@ -34,16 +34,16 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`." - "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=\"boba\"`. Provider coverage at launch: 4 no-key endpoints (Boba Foundation, dRPC, Tenderly, Boba Replica)." + - "Chain scope: every query on this page is pinned to `chain=\"boba\"`. Provider coverage: 2 no-key endpoints (Boba Foundation, dRPC)." findings: - - "{{best_name}} currently leads free Boba Network RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free Boba Network RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 2 measured providers." faq: - q: "What is the fastest free Boba Network RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` 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." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` 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." - q: "Which Boba Network RPCs work without an API key?" - a: "4 endpoints sustain continuous keyless probing at launch: Boba Foundation, dRPC, Tenderly, Boba Replica. Every listed endpoint was live-verified before inclusion." + a: "2 endpoints sustain continuous keyless probing: Boba Foundation (mainnet.boba.network) and dRPC. Every listed endpoint was live-verified before inclusion." - q: "Does the fastest Boba Network RPC change by region?" a: "Often. 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 Boba Network RPC latency measured here?" @@ -110,49 +110,3 @@ providers: - region: ap-southeast p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="boba", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="boba", region="sgp"}[1h]) - - - slug: tenderly - name: Tenderly - tag: Tenderly Web3 Gateway - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Boba Network endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="boba"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="boba"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="tenderly", chain="boba"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="tenderly", chain="boba"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="tenderly", chain="boba"}) / sum(ocb:rpc_call:rate_24h{provider="tenderly", chain="boba"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="tenderly", chain="boba"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="boba"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="boba", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="boba", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="boba", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="boba", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="boba", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="boba", region="sgp"}[1h]) - - - slug: boba-replica - name: Boba Replica - tag: Boba Foundation replica RPC node - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Boba Foundation's replica node endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="boba-replica", chain="boba"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="boba-replica", chain="boba"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="boba-replica", chain="boba"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="boba-replica", chain="boba"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="boba-replica", chain="boba"}) / sum(ocb:rpc_call:rate_24h{provider="boba-replica", chain="boba"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="boba-replica", chain="boba"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="boba-replica", chain="boba"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="boba-replica", chain="boba", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="boba-replica", chain="boba", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="boba-replica", chain="boba", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="boba-replica", chain="boba", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="boba-replica", chain="boba", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="boba-replica", chain="boba", region="sgp"}[1h]) diff --git a/benchmarks/comdex-rpc.yml b/benchmarks/comdex-rpc.yml index b41aec6e..adcb0433 100644 --- a/benchmarks/comdex-rpc.yml +++ b/benchmarks/comdex-rpc.yml @@ -4,8 +4,8 @@ slug: comdex-rpc number: "183" title: Fastest free Comdex RPC, live no-key endpoint latency seo_title: "Fastest free Comdex RPC 2026" -seo_description: "{{best_name}} leads free Comdex RPC at {{best_p50}} (Tendermint status p50, 24h). 3 no-key providers measured every 60s from 3 regions." -subtitle: HTTP round-trip latency for the Tendermint status method against every free, no-key public Comdex Cosmos SDK endpoint, audited every 60 seconds from 3 regions. +seo_description: "{{best_name}} leads free Comdex RPC at {{best_p50}} (Tendermint status p50, 24h). 1 no-key provider measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for the Tendermint status method against the free, no-key public Comdex Cosmos SDK endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,13 +14,13 @@ unit: ms higher_is_better: false seo_intro: | - Comdex (comdex-1) is a Cosmos SDK DeFi blockchain providing a decentralised synthetics and lending protocol with on-chain commodity markets, CMDX staking token, CometBFT consensus, IBC-connected to Osmosis, Cosmos Hub, and other Cosmos chains. Polkachu, PublicNode, and LavenderFive provide keyless Tendermint RPC endpoints probed every 60 seconds from three regions. + Comdex (comdex-1) is a Cosmos SDK DeFi blockchain providing a decentralised synthetics and lending protocol with on-chain commodity markets, CMDX staking token, CometBFT consensus, IBC-connected to Osmosis, Cosmos Hub, and other Cosmos chains. STAVR provides a keyless Tendermint RPC endpoint probed every 60 seconds from three regions. abstract: | Per-chain member of the RPC latency cluster, extended to Comdex. We measure the round-trip latency of a single, identical Cosmos SDK call - (Tendermint `status`) against every no-key public Comdex endpoint - that sustains continuous probing, 3 providers at launch, + (Tendermint `status`) against the no-key public Comdex endpoint + that sustains continuous probing, 1 provider at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) so the leaderboard rewards sustained availability rather than @@ -34,20 +34,20 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 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 decimal `sync_info.latest_block_height`), `http_err`, `jsonrpc_err`, `stale` (more than 40 blocks behind the cross-provider tip), `timeout`." - "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=\"comdex\"`. Provider coverage at launch: 3 no-key endpoints (Polkachu, PublicNode, LavenderFive)." + - "Chain scope: every query on this page is pinned to `chain=\"comdex\"`. Provider coverage: 1 no-key endpoint (STAVR)." findings: - - "{{best_name}} currently leads free Comdex RPC at {{best_p50}} (Tendermint `status` p50, 24h) across 3 measured providers." + - "{{best_name}} currently leads free Comdex RPC at {{best_p50}} (Tendermint `status` p50, 24h)." faq: - q: "What is the fastest free Comdex RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (Tendermint `status` 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." + a: "{{best_name}} currently leads at {{best_p50}} (Tendermint `status` p50 over the last 24h), measured every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples." - q: "Which Comdex RPCs work without an API key?" - a: "3 endpoints sustain continuous keyless probing at launch: Polkachu, PublicNode, LavenderFive. Every listed endpoint was live-verified before inclusion." + a: "STAVR's endpoint (comdex.rpc.m.stavr.tech) is the free, keyless Comdex RPC sustaining probes from all 3 regions. Every listed endpoint was live-verified before inclusion." - q: "Does the fastest Comdex RPC change by region?" a: "Often. 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 Comdex RPC latency measured here?" - a: "One identical Tendermint `status` POST every 60 seconds against each provider from each of 3 regions. Responses are classified so an endpoint stuck on an old block is never ranked as fastest." + a: "One identical Tendermint `status` POST every 60 seconds against the provider from each of 3 regions. Responses are classified so an endpoint stuck on an old block is never ranked as fastest." source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities @@ -65,71 +65,25 @@ dimensions: - { value: sgp, label: Singapore } providers: - - slug: polkachu - name: Polkachu - tag: Community Cosmos validator and public RPC - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single Tendermint `status` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Polkachu's no-key Comdex endpoint." + - slug: stavr + name: STAVR + tag: STAVR validator public Cosmos RPC + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single Tendermint `status` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to STAVR's no-key Comdex endpoint." queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="comdex"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="polkachu", chain="comdex"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="polkachu", chain="comdex"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="polkachu", chain="comdex"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="polkachu", chain="comdex"}) / sum(ocb:rpc_call:rate_24h{provider="polkachu", chain="comdex"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="polkachu", chain="comdex"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="comdex"}[1h])) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stavr", chain="comdex"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="stavr", chain="comdex"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="stavr", chain="comdex"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="stavr", chain="comdex"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="stavr", chain="comdex"}) / sum(ocb:rpc_call:rate_24h{provider="stavr", chain="comdex"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="stavr", chain="comdex"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="stavr", chain="comdex"}[1h])) regions: - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="comdex", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="comdex", region="us-east"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stavr", chain="comdex", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="stavr", chain="comdex", region="us-east"}[1h]) - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="comdex", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="comdex", region="eu-west"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stavr", chain="comdex", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="stavr", chain="comdex", region="eu-west"}[1h]) - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="comdex", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="comdex", region="sgp"}[1h]) - - - slug: publicnode - name: PublicNode - tag: Allnodes-operated, 70+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single Tendermint `status` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Comdex endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="comdex"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="comdex"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="publicnode", chain="comdex"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="publicnode", chain="comdex"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="publicnode", chain="comdex"}) / sum(ocb:rpc_call:rate_24h{provider="publicnode", chain="comdex"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="publicnode", chain="comdex"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="comdex"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="comdex", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="comdex", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="comdex", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="comdex", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="comdex", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="comdex", region="sgp"}[1h]) - - - slug: lavenderfive - name: LavenderFive - tag: Cosmos validator and no-key RPC - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single Tendermint `status` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to LavenderFive's no-key Comdex endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lavenderfive", chain="comdex"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lavenderfive", chain="comdex"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="lavenderfive", chain="comdex"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="lavenderfive", chain="comdex"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="lavenderfive", chain="comdex"}) / sum(ocb:rpc_call:rate_24h{provider="lavenderfive", chain="comdex"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="lavenderfive", chain="comdex"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="lavenderfive", chain="comdex"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lavenderfive", chain="comdex", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="lavenderfive", chain="comdex", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lavenderfive", chain="comdex", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="lavenderfive", chain="comdex", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lavenderfive", chain="comdex", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="lavenderfive", chain="comdex", region="sgp"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stavr", chain="comdex", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="stavr", chain="comdex", region="sgp"}[1h]) diff --git a/benchmarks/corn-rpc.yml b/benchmarks/corn-rpc.yml index 5f72e7b4..66325701 100644 --- a/benchmarks/corn-rpc.yml +++ b/benchmarks/corn-rpc.yml @@ -4,8 +4,8 @@ slug: corn-rpc number: "162" title: Fastest free Corn RPC, live no-key endpoint latency seo_title: "Fastest free Corn RPC 2026" -seo_description: "{{best_name}} leads free Corn RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 2 no-key providers measured every 60s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Corn RPC endpoint, audited every 60 seconds from 3 regions. +seo_description: "{{best_name}} leads free Corn RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 1 no-key provider measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against the free, no-key public Corn RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,13 +14,13 @@ unit: ms higher_is_better: false seo_intro: | - Corn (chain 21000000, Maizenet) is a BTCFi EVM L2 that uses Wrapped BTC (BTCN) as the native gas token, backed by Polychain Capital. It targets Bitcoin-collateralized DeFi applications while remaining fully EVM-compatible. The Corn Foundation's maizenet-rpc.usecorn.com and dRPC provide keyless access probed every 60 seconds from three regions. + Corn (chain 21000000, Maizenet) is a BTCFi EVM L2 that uses Wrapped BTC (BTCN) as the native gas token, backed by Polychain Capital. It targets Bitcoin-collateralized DeFi applications while remaining fully EVM-compatible. Thirdweb's chain-ID RPC gateway provides keyless access probed every 60 seconds from three regions. abstract: | Per-chain member of the RPC latency cluster, extended to Corn. We measure the round-trip latency of a single, identical RPC call - (`eth_getBlockByNumber`) against every no-key public Corn endpoint - that sustains continuous probing, 2 providers at launch, + (`eth_getBlockByNumber`) against the no-key public Corn endpoint + that sustains continuous probing, 1 provider at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) so the leaderboard rewards sustained availability rather than @@ -34,20 +34,20 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`." - "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=\"corn\"`. Provider coverage at launch: 2 no-key endpoints (Corn Foundation, dRPC)." + - "Chain scope: every query on this page is pinned to `chain=\"corn\"`. Provider coverage: 1 no-key endpoint (Thirdweb)." findings: - - "{{best_name}} currently leads free Corn RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 2 measured providers." + - "{{best_name}} currently leads free Corn RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h)." faq: - q: "What is the fastest free Corn RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` 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." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples." - q: "Which Corn RPCs work without an API key?" - a: "2 endpoints sustain continuous keyless probing at launch: Corn Foundation, dRPC. Every listed endpoint was live-verified before inclusion." - - q: "Does the fastest Corn RPC change by region?" + a: "Thirdweb's chain-ID gateway (21000000.rpc.thirdweb.com) is the only free, keyless endpoint sustaining probes from all 3 regions. Every listed endpoint was live-verified before inclusion." + - q: "Does the Corn RPC latency change by region?" a: "Often. 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 Corn RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions. Responses are classified so an endpoint stuck on an old head or returning errors is never ranked as fastest." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against the provider from each of 3 regions. Responses are classified so an endpoint stuck on an old head or returning errors is never ranked as fastest." source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities @@ -65,48 +65,25 @@ dimensions: - { value: sgp, label: Singapore } providers: - - slug: corn-official - name: Corn Foundation - tag: Corn Foundation's official Maizenet RPC - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Corn Foundation's no-key Corn endpoint." + - slug: thirdweb + name: Thirdweb + tag: Thirdweb chain-ID RPC gateway + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key Corn endpoint." queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="corn-official", chain="corn"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="corn-official", chain="corn"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="corn-official", chain="corn"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="corn-official", chain="corn"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="corn-official", chain="corn"}) / sum(ocb:rpc_call:rate_24h{provider="corn-official", chain="corn"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="corn-official", chain="corn"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="corn-official", chain="corn"}[1h])) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="corn"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="corn"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="corn"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="corn"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="corn"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="corn"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="corn"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="corn"}[1h])) regions: - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="corn-official", chain="corn", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="corn-official", chain="corn", region="us-east"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="corn", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="corn", region="us-east"}[1h]) - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="corn-official", chain="corn", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="corn-official", chain="corn", region="eu-west"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="corn", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="corn", region="eu-west"}[1h]) - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="corn-official", chain="corn", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="corn-official", chain="corn", region="sgp"}[1h]) - - - slug: drpc - name: dRPC - tag: Decentralized RPC mesh - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Corn endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="corn"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="corn"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="corn"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="corn"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="corn"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="corn"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="corn"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="corn"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="corn", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="corn", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="corn", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="corn", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="corn", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="corn", region="sgp"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="corn", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="corn", region="sgp"}[1h]) diff --git a/benchmarks/sanko-rpc.yml b/benchmarks/sanko-rpc.yml index 6abdd840..fb0537bd 100644 --- a/benchmarks/sanko-rpc.yml +++ b/benchmarks/sanko-rpc.yml @@ -4,8 +4,8 @@ slug: sanko-rpc number: "166" title: Fastest free Sanko RPC, live no-key endpoint latency seo_title: "Fastest free Sanko RPC 2026" -seo_description: "{{best_name}} leads free Sanko RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 2 no-key providers measured every 60s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Sanko RPC endpoint, audited every 60 seconds from 3 regions. +seo_description: "{{best_name}} leads free Sanko RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 1 no-key provider measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against the free, no-key public Sanko RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,13 +14,13 @@ unit: ms higher_is_better: false seo_intro: | - Sanko (chain 1996) is an EVM-compatible L3 on Arbitrum Orbit using DMT as the native gas token, built for gaming and entertainment applications within the Sanko Games ecosystem. The Sanko Foundation's mainnet.sanko.xyz and dRPC provide keyless access probed every 60 seconds from three regions. + Sanko (chain 1996) is an EVM-compatible L3 on Arbitrum Orbit using DMT as the native gas token, built for gaming and entertainment applications within the Sanko Games ecosystem. Thirdweb's chain-ID RPC gateway provides keyless access probed every 60 seconds from three regions. abstract: | Per-chain member of the RPC latency cluster, extended to Sanko. We measure the round-trip latency of a single, identical RPC call - (`eth_getBlockByNumber`) against every no-key public Sanko endpoint - that sustains continuous probing, 2 providers at launch, + (`eth_getBlockByNumber`) against the no-key public Sanko endpoint + that sustains continuous probing, 1 provider at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) so the leaderboard rewards sustained availability rather than @@ -34,20 +34,20 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`." - "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=\"sanko\"`. Provider coverage at launch: 2 no-key endpoints (Sanko Foundation, dRPC)." + - "Chain scope: every query on this page is pinned to `chain=\"sanko\"`. Provider coverage: 1 no-key endpoint (Thirdweb)." findings: - - "{{best_name}} currently leads free Sanko RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 2 measured providers." + - "{{best_name}} currently leads free Sanko RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h)." faq: - q: "What is the fastest free Sanko RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` 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." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples." - q: "Which Sanko RPCs work without an API key?" - a: "2 endpoints sustain continuous keyless probing at launch: Sanko Foundation, dRPC. Every listed endpoint was live-verified before inclusion." - - q: "Does the fastest Sanko RPC change by region?" + a: "Thirdweb's chain-ID gateway (1996.rpc.thirdweb.com) is the only free, keyless endpoint sustaining probes from all 3 regions. Every listed endpoint was live-verified before inclusion." + - q: "Does the Sanko RPC latency change by region?" a: "Often. 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 Sanko RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions. Responses are classified so an endpoint stuck on an old head or returning errors is never ranked as fastest." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against the provider from each of 3 regions. Responses are classified so an endpoint stuck on an old head or returning errors is never ranked as fastest." source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities @@ -65,48 +65,25 @@ dimensions: - { value: sgp, label: Singapore } providers: - - slug: sanko-official - name: Sanko Foundation - tag: Sanko Foundation's official public RPC - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Sanko Foundation's no-key Sanko endpoint." + - slug: thirdweb + name: Thirdweb + tag: Thirdweb chain-ID RPC gateway + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key Sanko endpoint." queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sanko-official", chain="sanko"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="sanko-official", chain="sanko"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="sanko-official", chain="sanko"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="sanko-official", chain="sanko"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="sanko-official", chain="sanko"}) / sum(ocb:rpc_call:rate_24h{provider="sanko-official", chain="sanko"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="sanko-official", chain="sanko"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="sanko-official", chain="sanko"}[1h])) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sanko"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="sanko"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="sanko"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="sanko"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="sanko"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="sanko"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="sanko"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sanko"}[1h])) regions: - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sanko-official", chain="sanko", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="sanko-official", chain="sanko", region="us-east"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sanko", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sanko", region="us-east"}[1h]) - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sanko-official", chain="sanko", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="sanko-official", chain="sanko", region="eu-west"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sanko", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sanko", region="eu-west"}[1h]) - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sanko-official", chain="sanko", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="sanko-official", chain="sanko", region="sgp"}[1h]) - - - slug: drpc - name: dRPC - tag: Decentralized RPC mesh - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Sanko endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sanko"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="sanko"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="sanko"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="sanko"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="sanko"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="sanko"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="sanko"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sanko"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sanko", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sanko", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sanko", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sanko", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sanko", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sanko", region="sgp"}[1h]) + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sanko", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sanko", region="sgp"}[1h]) diff --git a/benchmarks/zircuit-rpc.yml b/benchmarks/zircuit-rpc.yml index 59492ff4..c77e03f4 100644 --- a/benchmarks/zircuit-rpc.yml +++ b/benchmarks/zircuit-rpc.yml @@ -4,7 +4,7 @@ slug: zircuit-rpc number: "160" title: Fastest free Zircuit RPC, live no-key endpoint latency seo_title: "Fastest free Zircuit RPC 2026" -seo_description: "{{best_name}} leads free Zircuit RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 2 no-key providers measured every 60s from 3 regions." +seo_description: "{{best_name}} leads free Zircuit RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 1 no-key provider measured every 60s from 3 regions." subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Zircuit RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs @@ -14,13 +14,13 @@ unit: ms higher_is_better: false seo_intro: | - Zircuit (chain 48900) is an EVM-compatible L2 with sequencer-level threat detection using AI models to classify and quarantine malicious transactions before they are included in blocks. It launched on mainnet in 2024, ZRC governance token, built on an OP-Stack foundation with custom security extensions. The Zircuit Foundation's mainnet.zircuit.com and dRPC provide keyless access probed every 60 seconds from three regions. + Zircuit (chain 48900) is an EVM-compatible L2 with sequencer-level threat detection using AI models to classify and quarantine malicious transactions before they are included in blocks. It launched on mainnet in 2024, ZRC governance token, built on an OP-Stack foundation with custom security extensions. The Zircuit Foundation's mainnet.zircuit.com provides keyless access probed every 60 seconds from three regions. abstract: | Per-chain member of the RPC latency cluster, extended to Zircuit. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Zircuit endpoint - that sustains continuous probing, 2 providers at launch, + that sustains continuous probing, 1 provider at launch, every 60 seconds, from us-east, eu-west and Singapore. The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout) so the leaderboard rewards sustained availability rather than @@ -34,16 +34,16 @@ methodology: - "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`." - "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=\"zircuit\"`. Provider coverage at launch: 2 no-key endpoints (Zircuit Foundation, dRPC)." + - "Chain scope: every query on this page is pinned to `chain=\"zircuit\"`. Provider coverage: 1 no-key endpoint (Zircuit Foundation)." findings: - - "{{best_name}} currently leads free Zircuit RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 2 measured providers." + - "{{best_name}} currently leads free Zircuit RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h)." faq: - q: "What is the fastest free Zircuit RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` 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." + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples." - q: "Which Zircuit RPCs work without an API key?" - a: "2 endpoints sustain continuous keyless probing at launch: Zircuit Foundation, dRPC. Every listed endpoint was live-verified before inclusion." + a: "The Zircuit Foundation endpoint (mainnet.zircuit.com) is the free, keyless Zircuit RPC sustaining probes from all 3 regions. Every listed endpoint was live-verified before inclusion." - q: "Does the fastest Zircuit RPC change by region?" a: "Often. 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 Zircuit RPC latency measured here?" @@ -87,26 +87,3 @@ providers: - region: ap-southeast p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="zircuit-official", chain="zircuit", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="zircuit-official", chain="zircuit", region="sgp"}[1h]) - - - slug: drpc - name: dRPC - tag: Decentralized RPC mesh - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Zircuit endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zircuit"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="zircuit"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="zircuit"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="zircuit"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="zircuit"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="zircuit"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="zircuit"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zircuit"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zircuit", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zircuit", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zircuit", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zircuit", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zircuit", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zircuit", region="sgp"}[1h]) diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index 683b7f98..814e40f6 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -1061,15 +1061,13 @@ func chains() []Chain { }, }, // 2026-08-04 wave-6 EVM chains (benches 152-166). eth_getBlockByNumber probe. - // Boba Network — Optimistic rollup L2 (chain 288). 4 keyless providers. + // Boba Network — Optimistic rollup L2 (chain 288). 2 keyless providers. { Slug: "boba", Name: "Boba Network", Providers: []Provider{ - {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_BOBA_PUBLICNODE", "https://boba-mainnet.public.blastapi.io")}, - {Slug: "ankr", Name: "Ankr", URL: envDefault("RPC_URL_BOBA_ANKR", "https://rpc.ankr.com/boba_network")}, - {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_BOBA_DRPC", "https://boba.drpc.org")}, - {Slug: "boba-replica", Name: "Boba Replica", URL: envDefault("RPC_URL_BOBA_REPLICA", "https://replica.boba.network")}, + {Slug: "boba-official", Name: "Boba Foundation", URL: envDefault("RPC_URL_BOBA_OFFICIAL", "https://mainnet.boba.network")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_BOBA_DRPC", "https://boba-eth.drpc.org")}, }, }, // XDC Network — Enterprise EVM L1 (chain 50). 5 keyless providers. @@ -1148,13 +1146,12 @@ func chains() []Chain { {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_HARMONY_1RPC", "https://1rpc.io/one")}, }, }, - // Zircuit — ZK rollup L2 (chain 48900). 2 keyless providers. + // Zircuit — ZK rollup L2 (chain 48900). 1 keyless provider. { Slug: "zircuit", Name: "Zircuit", Providers: []Provider{ - {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_ZIRCUIT_PUBLICNODE", "https://zircuit-mainnet.public.blastapi.io")}, - {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_ZIRCUIT_DRPC", "https://zircuit.drpc.org")}, + {Slug: "zircuit-official", Name: "Zircuit Foundation", URL: envDefault("RPC_URL_ZIRCUIT_OFFICIAL", "https://mainnet.zircuit.com")}, }, }, // Plume — RWA EVM L1 (chain 98866). 2 keyless providers. @@ -1166,13 +1163,12 @@ func chains() []Chain { {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_PLUME_DRPC", "https://plume.drpc.org")}, }, }, - // Corn — BTC-backed EVM L2 (chain 21000000). 2 keyless providers. + // Corn — BTC-backed EVM L2 (chain 21000000). 1 keyless provider. { Slug: "corn", Name: "Corn", Providers: []Provider{ - {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_CORN_PUBLICNODE", "https://mainnet.corn-rpc.com")}, - {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_CORN_DRPC", "https://corn-mainnet.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_CORN_THIRDWEB", "https://21000000.rpc.thirdweb.com")}, }, }, // Vana — Data economy EVM L1 (chain 1480). 2 keyless providers. @@ -1203,12 +1199,11 @@ func chains() []Chain { {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_REYA_THIRDWEB", "https://1729.rpc.thirdweb.com")}, }, }, - // Sanko — Gaming L3 on Arbitrum Orbit (chain 1996). 2 keyless providers. + // Sanko — Gaming L3 on Arbitrum Orbit (chain 1996). 1 keyless provider. { Slug: "sanko", Name: "Sanko", Providers: []Provider{ - {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_SANKO_PUBLICNODE", "https://mainnet.sanko.xyz")}, {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_SANKO_THIRDWEB", "https://1996.rpc.thirdweb.com")}, }, }, @@ -1398,15 +1393,13 @@ func chains() []Chain { {Slug: "lavenderfive", Name: "LavenderFive", URL: envDefault("RPC_URL_REGEN_LAVENDERFIVE", "https://rpc.lavenderfive.com:443/regen")}, }, }, - // Comdex — DeFi synthetics chain (comdex-1). 3 keyless providers. + // Comdex — DeFi synthetics chain (comdex-1). 1 keyless provider. { Slug: "comdex", Name: "Comdex", Kind: "cosmos", Providers: []Provider{ - {Slug: "polkachu", Name: "Polkachu", URL: envDefault("RPC_URL_COMDEX_POLKACHU", "https://comdex-rpc.polkachu.com")}, - {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_COMDEX_PUBLICNODE", "https://comdex-rpc.publicnode.com:443")}, - {Slug: "lavenderfive", Name: "LavenderFive", URL: envDefault("RPC_URL_COMDEX_LAVENDERFIVE", "https://rpc.lavenderfive.com:443/comdex")}, + {Slug: "stavr", Name: "STAVR", URL: envDefault("RPC_URL_COMDEX_STAVR", "https://comdex.rpc.m.stavr.tech:443")}, }, }, } diff --git a/public/logos/stavr.png b/public/logos/stavr.png new file mode 100644 index 00000000..ec6c484a Binary files /dev/null and b/public/logos/stavr.png differ diff --git a/src/app/chains/[slug]/page.tsx b/src/app/chains/[slug]/page.tsx index 6c8db84c..91dfbb3f 100644 --- a/src/app/chains/[slug]/page.tsx +++ b/src/app/chains/[slug]/page.tsx @@ -210,9 +210,22 @@ export default async function ChainPage({
-

- {chain.label} live benchmarks -

+
+

+ {chain.label} live benchmarks +

+ {chain.website && ( + + {chain.website.replace(/^https?:\/\//, "")} + + + )} +

diff --git a/src/lib/chains.ts b/src/lib/chains.ts index a57d0cf6..d1abd7e9 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -40,6 +40,8 @@ export type ChainEntry = { * the chain-kpis harness sources the series. */ nativeSymbol?: string; + /** Official project website, shown as an external link on /chains/[slug]. */ + website?: string; }; export const CHAINS: ChainEntry[] = [ @@ -602,6 +604,7 @@ export const CHAINS: ChainEntry[] = [ label: "Filecoin", category: "L1", nativeSymbol: "FIL", + website: "https://filecoin.io", description: "Ethereum-compatible smart-contract environment on Filecoin (FEVM, chain 314) powered by the Filecoin Virtual Machine, FIL gas token, ~30 s epoch time, decentralized storage proofs securing state.", }, @@ -610,6 +613,7 @@ export const CHAINS: ChainEntry[] = [ label: "Canto", category: "L1", nativeSymbol: "CANTO", + website: "https://canto.io", description: "Permissionless EVM L1 (chain 7700) with free public infrastructure (DEX, lending market, stablecoin) built into the protocol as core primitives, CANTO gas token, ~6 s block time.", }, @@ -618,6 +622,7 @@ export const CHAINS: ChainEntry[] = [ label: "Aurora", category: "L2", nativeSymbol: "ETH", + website: "https://aurora.dev", description: "EVM runtime on NEAR Protocol (chain 1313161554) exposing full Ethereum tooling to NEAR's sharded execution environment, ETH gas token bridged from Ethereum, operated by Aurora Labs.", }, @@ -626,6 +631,7 @@ export const CHAINS: ChainEntry[] = [ label: "Bitlayer", category: "L2", nativeSymbol: "BTC", + website: "https://www.bitlayer.org", description: "Bitcoin L2 with EVM compatibility (chain 200901) secured by a BitVM-based fraud-proof scheme, BTC gas token, ~0.5 s block time, first EVM-compatible Bitcoin Layer 2 using BitVM.", }, @@ -634,6 +640,7 @@ export const CHAINS: ChainEntry[] = [ label: "B² Network", category: "L2", nativeSymbol: "BTC", + website: "https://www.bsquared.network", description: "Bitcoin L2 combining ZK proof verification with a Rollup+Restaking hybrid model (chain 223), BTC gas token, targeting sub-second block confirmation for Bitcoin-secured EVM execution.", }, @@ -642,6 +649,7 @@ export const CHAINS: ChainEntry[] = [ label: "dYdX Chain", category: "L1", nativeSymbol: "DYDX", + website: "https://dydx.exchange", description: "Cosmos SDK app-chain (dydx-mainnet-1) running the dYdX perpetuals DEX entirely on-chain in CometBFT consensus, DYDX governance and staking token, ~1 s block time.", }, @@ -650,6 +658,7 @@ export const CHAINS: ChainEntry[] = [ label: "Celestia", category: "L1", nativeSymbol: "TIA", + website: "https://celestia.org", description: "Modular data availability network (celestia mainnet) decoupling DA from execution, TIA gas token, ~12 s block time, used as the DA layer by Arbitrum Nitro, OP Stack, and other rollup frameworks.", }, @@ -659,6 +668,7 @@ export const CHAINS: ChainEntry[] = [ label: "Boba Network", category: "L2", nativeSymbol: "BOBA", + website: "https://boba.network", description: "Optimistic rollup L2 (boba-mainnet, chain 288) bridged from Ethereum, BOBA governance token, hybrid compute enabling off-chain logic callable from smart contracts.", }, @@ -667,6 +677,7 @@ export const CHAINS: ChainEntry[] = [ label: "XDC Network", category: "L1", nativeSymbol: "XDC", + website: "https://xdc.network", description: "EVM-compatible L1 (XinFin mainnet, chain 50) targeting enterprise trade finance and real-world asset tokenisation, XDC staking token, delegated proof-of-stake consensus with ~2 s block time.", }, @@ -675,6 +686,7 @@ export const CHAINS: ChainEntry[] = [ label: "Astar", category: "L1", nativeSymbol: "ASTR", + website: "https://astar.network", description: "Polkadot parachain and standalone EVM chain (Astar mainnet, chain 592) supporting both EVM and WASM smart contracts, ASTR staking token, dApp staking model rewarding developers.", }, @@ -683,6 +695,7 @@ export const CHAINS: ChainEntry[] = [ label: "Oasis Sapphire", category: "L1", nativeSymbol: "ROSE", + website: "https://oasisprotocol.org", description: "Confidential EVM-compatible paratime on the Oasis Network (chain 23294) with hardware-backed TEE confidentiality for smart contract state, ROSE gas token, sub-second finality.", }, @@ -691,6 +704,7 @@ export const CHAINS: ChainEntry[] = [ label: "Oasis Emerald", category: "L1", nativeSymbol: "ROSE", + website: "https://oasisprotocol.org", description: "EVM-compatible paratime on the Oasis Network (chain 42262) offering standard Solidity smart contracts with Oasis consensus security, ROSE gas token.", }, @@ -699,6 +713,7 @@ export const CHAINS: ChainEntry[] = [ label: "Conflux", category: "L1", nativeSymbol: "CFX", + website: "https://confluxnetwork.org", description: "Tree-Graph consensus L1 (Conflux eSpace, chain 1030) with EVM compatibility via its eSpace layer, CFX staking and gas token, high throughput without sacrificing decentralisation.", }, @@ -707,6 +722,7 @@ export const CHAINS: ChainEntry[] = [ label: "IoTeX", category: "L1", nativeSymbol: "IOTX", + website: "https://iotex.io", description: "EVM-compatible L1 (IoTeX mainnet, chain 4689) purpose-built for decentralised physical infrastructure (DePIN) and IoT applications, IOTX staking token, Roll-DPoS consensus.", }, @@ -715,6 +731,7 @@ export const CHAINS: ChainEntry[] = [ label: "Harmony", category: "L1", nativeSymbol: "ONE", + website: "https://harmony.one", description: "Sharded EVM-compatible L1 (Harmony Shard 0, chain 1666600000) using FBFT consensus with ~2 s finality, ONE staking token, cross-shard and cross-chain IBC bridges.", }, @@ -723,6 +740,7 @@ export const CHAINS: ChainEntry[] = [ label: "Zircuit", category: "L2", nativeSymbol: "ZRC", + website: "https://www.zircuit.com", description: "ZK rollup L2 (Zircuit mainnet, chain 48900) on Ethereum with sequencer-level MEV protection and ZK-proven execution, ZRC governance token.", }, @@ -731,6 +749,7 @@ export const CHAINS: ChainEntry[] = [ label: "Plume", category: "L1", nativeSymbol: "PLUME", + website: "https://plumenetwork.xyz", description: "EVM-compatible L1 (Plume mainnet, chain 98866) purpose-built for real-world asset tokenisation with native compliance rails and asset primitives, PLUME gas token.", }, @@ -739,6 +758,7 @@ export const CHAINS: ChainEntry[] = [ label: "Corn", category: "L2", nativeSymbol: "BTCN", + website: "https://usecorn.com", description: "Bitcoin-backed EVM L2 (Corn mainnet, chain 21000000) using BTCN (wrapped BTC) as the native gas token, secured by Ethereum via the AltLayer restaking stack.", }, @@ -747,6 +767,7 @@ export const CHAINS: ChainEntry[] = [ label: "Vana", category: "L1", nativeSymbol: "VANA", + website: "https://www.vana.org", description: "EVM-compatible L1 (Vana mainnet, chain 1480) designed for user-owned data economies, enabling individuals to monetise their data via DataDAOs, VANA staking token.", }, @@ -755,6 +776,7 @@ export const CHAINS: ChainEntry[] = [ label: "Gravity", category: "L2", nativeSymbol: "G", + website: "https://gravity.xyz", description: "EVM-compatible L2 (Gravity Alpha mainnet, chain 1625) built by Galxe, using Celestia for DA and AltLayer for restaked security, G gas token.", }, @@ -763,6 +785,7 @@ export const CHAINS: ChainEntry[] = [ label: "Reya Network", category: "L2", nativeSymbol: "REYA", + website: "https://reya.network", description: "Trading-optimised EVM L2 (Reya mainnet, chain 1729) built on Arbitrum Orbit with a cross-margined clearing layer enabling capital-efficient perp and options trading, REYA token.", }, @@ -771,6 +794,7 @@ export const CHAINS: ChainEntry[] = [ label: "Sanko", category: "L3", nativeSymbol: "DMT", + website: "https://sanko.xyz", description: "Gaming L3 (Sanko mainnet, chain 1996) built on Arbitrum Orbit using DMT as the native gas token, targeting on-chain gaming and NFT applications.", }, @@ -779,6 +803,7 @@ export const CHAINS: ChainEntry[] = [ label: "Akash", category: "L1", nativeSymbol: "AKT", + website: "https://akash.network", description: "Cosmos SDK decentralised cloud compute marketplace (akashnet-2) where users bid on idle server capacity with AKT, CometBFT consensus, IBC-connected to the broader Cosmos ecosystem.", }, @@ -787,6 +812,7 @@ export const CHAINS: ChainEntry[] = [ label: "Stargaze", category: "L1", nativeSymbol: "STARS", + website: "https://www.stargaze.zone", description: "Cosmos SDK NFT and social blockchain (stargaze-1) with first-class on-chain NFT primitives, STARS staking token, CometBFT consensus, IBC-connected to Osmosis and other Cosmos chains.", }, @@ -795,6 +821,7 @@ export const CHAINS: ChainEntry[] = [ label: "Stride", category: "L1", nativeSymbol: "STRD", + website: "https://stride.zone", description: "Cosmos SDK liquid staking zone (stride-1) issuing stTokens (stATOM, stOSMO, stTIA, etc.) redeemable for the underlying staked asset plus rewards, STRD governance token, CometBFT consensus.", }, @@ -803,6 +830,7 @@ export const CHAINS: ChainEntry[] = [ label: "Juno", category: "L1", nativeSymbol: "JUNO", + website: "https://junonetwork.io", description: "Cosmos SDK CosmWasm smart contract platform (juno-1) permissionlessly hosting dApps, JUNO staking token, CometBFT consensus, IBC-connected to Osmosis and the wider Cosmos ecosystem.", }, @@ -811,6 +839,7 @@ export const CHAINS: ChainEntry[] = [ label: "Kujira", category: "L1", nativeSymbol: "KUJI", + website: "https://kujira.network", description: "Cosmos SDK DeFi chain (kaiyo-1) with native on-chain order book (FIN), liquidation engine (ORCA), and money market (GHOST), KUJI staking token, CometBFT consensus.", }, @@ -819,6 +848,7 @@ export const CHAINS: ChainEntry[] = [ label: "Evmos", category: "L1", nativeSymbol: "EVMOS", + website: "https://evmos.org", description: "Cosmos SDK EVM-compatible chain (evmos_9001-2) combining Tendermint consensus with full Ethereum tooling compatibility, EVMOS staking token, dApp revenue share model.", }, @@ -827,6 +857,7 @@ export const CHAINS: ChainEntry[] = [ label: "Axelar", category: "L1", nativeSymbol: "AXL", + website: "https://axelar.network", description: "Cosmos SDK cross-chain communication network (axelar-dojo-1) providing generalised message passing and token transfers between 50+ blockchains, AXL staking token, CometBFT consensus.", }, @@ -835,6 +866,7 @@ export const CHAINS: ChainEntry[] = [ label: "Dymension", category: "L1", nativeSymbol: "DYM", + website: "https://dymension.xyz", description: "Cosmos SDK modular L1 (dymension_1100-1) serving as the settlement and hub layer for RollApps (sovereign rollups), DYM staking token, CometBFT consensus, IBC-native bridging.", }, @@ -843,6 +875,7 @@ export const CHAINS: ChainEntry[] = [ label: "Persistence", category: "L1", nativeSymbol: "XPRT", + website: "https://persistence.one", description: "Cosmos SDK liquid staking and DeFi hub (core-1) issuing stkAssets for IBC-connected chains and hosting pSTAKE Finance, XPRT staking token, CometBFT consensus.", }, @@ -851,6 +884,7 @@ export const CHAINS: ChainEntry[] = [ label: "Coreum", category: "L1", nativeSymbol: "COREUM", + website: "https://coreum.com", description: "Cosmos SDK enterprise and RWA blockchain (coreum-mainnet-1) with native smart token primitives including NFTs and fungible tokens with built-in transfer rules, COREUM staking token, CometBFT consensus.", }, @@ -859,6 +893,7 @@ export const CHAINS: ChainEntry[] = [ label: "Nolus", category: "L1", nativeSymbol: "NLS", + website: "https://nolus.io", description: "Cosmos SDK DeFi lease protocol (pirin-1) enabling leveraged positions with lower collateral requirements than traditional CDPs, NLS staking token, CometBFT consensus, IBC-connected to Osmosis.", }, @@ -867,6 +902,7 @@ export const CHAINS: ChainEntry[] = [ label: "Archway", category: "L1", nativeSymbol: "ARCH", + website: "https://archway.io", description: "Cosmos SDK CosmWasm chain (archway-1) with a built-in developer rewards model where dApps earn a portion of gas fees generated by their users, ARCH staking token, CometBFT consensus.", }, @@ -875,6 +911,7 @@ export const CHAINS: ChainEntry[] = [ label: "Nibiru", category: "L1", nativeSymbol: "NIBI", + website: "https://nibiru.fi", description: "Cosmos SDK blockchain (cataclysm-1) supporting both CosmWasm and EVM smart contracts with sub-second block times, NIBI staking token, CometBFT consensus.", }, @@ -883,6 +920,7 @@ export const CHAINS: ChainEntry[] = [ label: "Quicksilver", category: "L1", nativeSymbol: "QCK", + website: "https://quicksilver.zone", description: "Cosmos SDK ICS liquid staking protocol (quicksilver-2) providing qATOM, qOSMO, qSTARS and other IBC-connected staked representations, QCK staking token, CometBFT consensus.", }, @@ -891,6 +929,7 @@ export const CHAINS: ChainEntry[] = [ label: "Terra", category: "L1", nativeSymbol: "LUNA", + website: "https://www.terra.money", description: "Cosmos SDK blockchain (phoenix-1) relaunched after the 2022 Terra/Luna collapse, LUNA staking token, CometBFT consensus, CosmWasm smart contracts, IBC-connected to the Cosmos ecosystem.", }, @@ -899,6 +938,7 @@ export const CHAINS: ChainEntry[] = [ label: "Regen Network", category: "L1", nativeSymbol: "REGEN", + website: "https://www.regen.network", description: "Cosmos SDK ecological assets blockchain (regen-1) enabling on-chain issuance, retirement and trading of verified carbon credits and ecological credits, REGEN staking token, CometBFT consensus.", }, @@ -907,6 +947,7 @@ export const CHAINS: ChainEntry[] = [ label: "Comdex", category: "L1", nativeSymbol: "CMDX", + website: "https://comdex.one", description: "Cosmos SDK DeFi chain (comdex-1) providing decentralised synthetics and lending with on-chain commodity markets, CMDX staking token, CometBFT consensus, IBC-connected to Osmosis and Cosmos Hub.", }, diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts index db627d8c..928f3254 100644 --- a/src/lib/logo-manifest.ts +++ b/src/lib/logo-manifest.ts @@ -479,6 +479,7 @@ const RAW: Record = { // ─── Wave-6 Cosmos RPC providers ─── ecostake: "/logos/ecostake.png", autostake: "/logos/autostake.png", + stavr: "/logos/stavr.png", }; // Asset-symbol aliases used by perp-fees as chain dimension values. @@ -590,6 +591,8 @@ const ALIASES: Record = { unifra: "conflux", // Wave-6 extra provider aliases (2026-08-04) "boba-replica": "boba", + "boba-official": "boba", + "zircuit-official": "zircuit", "xdc-erpc": "xdc", "xdc-org": "xdc", "iotex-mirror": "iotex",