From d183de2714b013a2a5a07ee73880f4bb745ca7aa Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Wed, 8 Jul 2026 13:59:38 +0200 Subject: [PATCH] rpc cluster: 60s cadence + 1RPC descoped to eth/arbitrum (per-IP keyless budgets saturated by aggregate probe load) --- benchmarks/arbitrum-rpc.yml | 30 +++++----- benchmarks/avalanche-rpc.yml | 53 +++++------------- benchmarks/base-rpc.yml | 26 ++++----- benchmarks/berachain-rpc.yml | 22 ++++---- benchmarks/blast-rpc.yml | 20 +++---- benchmarks/bnb-rpc.yml | 22 ++++---- benchmarks/celo-rpc.yml | 51 +++++------------ benchmarks/cronos-rpc.yml | 53 ++++++------------ benchmarks/ethereum-rpc.yml | 32 +++++------ benchmarks/fraxtal-rpc.yml | 22 ++++---- benchmarks/gnosis-rpc.yml | 53 +++++------------- benchmarks/linea-rpc.yml | 49 +++++----------- benchmarks/mantle-rpc.yml | 49 +++++----------- benchmarks/megaeth-rpc.yml | 46 ++++----------- benchmarks/monad-rpc.yml | 24 ++++---- benchmarks/moonbeam-rpc.yml | 56 ++++++------------- benchmarks/optimism-rpc.yml | 53 +++++------------- benchmarks/polygon-rpc.yml | 51 +++++------------ benchmarks/rpc-capabilities.yml | 40 ++++++------- benchmarks/scroll-rpc.yml | 49 +++++----------- benchmarks/soneium-rpc.yml | 22 ++++---- benchmarks/sonic-rpc.yml | 53 +++++------------- benchmarks/taiko-rpc.yml | 22 ++++---- benchmarks/unichain-rpc.yml | 51 +++++------------ benchmarks/zksync-rpc.yml | 49 +++++----------- .../rpc-capabilities/cmd/script/config.go | 14 ----- .../rpc-capabilities/cmd/script/probe.go | 8 ++- 27 files changed, 348 insertions(+), 672 deletions(-) diff --git a/benchmarks/arbitrum-rpc.yml b/benchmarks/arbitrum-rpc.yml index 227088f7..8af3fa7d 100644 --- a/benchmarks/arbitrum-rpc.yml +++ b/benchmarks/arbitrum-rpc.yml @@ -4,8 +4,8 @@ slug: arbitrum-rpc number: "045" title: Fastest free Arbitrum RPC, live no-key endpoint latency seo_title: "Fastest free Arbitrum RPC 2026" -seo_description: "{{best_name}} leads free Arbitrum RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 8 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Arbitrum RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Arbitrum RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 8 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Arbitrum 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: | - Arbitrum is the second-largest cohort in the cluster: 8 no-key providers including the Arbitrum Foundation's own `arb1.arbitrum.io/rpc`, and one of the few chains where Lava and MeowRPC still compete on a free tier. Foundation endpoints are documented best-effort, and our data shows what that means in practice: a respectable median with a p99 roughly ten times worse. Every provider answers the identical `eth_getBlockByNumber` probe every 15 seconds from us-east, eu-west and Singapore. + Arbitrum is the second-largest cohort in the cluster: 8 no-key providers including the Arbitrum Foundation's own `arb1.arbitrum.io/rpc`, and one of the few chains where Lava and MeowRPC still compete on a free tier. Foundation endpoints are documented best-effort, and our data shows what that means in practice: a respectable median with a p99 roughly ten times worse. Every provider answers the identical `eth_getBlockByNumber` probe every 60 seconds from us-east, eu-west and Singapore. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Arbitrum endpoint that sustains continuous probing, 8 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Arbitrum-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Arbitrum endpoint that sustains continuous probing, 8 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Arbitrum-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Arbitrum RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 8 no-key providers probed every 15 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` p50 over the last 24h), measured against 8 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 Arbitrum RPCs work without an API key?" a: "The 8 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies, Lava, MeowRPC, Arbitrum. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Arbitrum RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Arbitrum RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Should I use the official Arbitrum Foundation RPC in production?" a: "The Foundation documents `arb1.arbitrum.io/rpc` as best-effort and rate-limited, intended for development. Our continuous measurement confirms the profile: acceptable p50 with a p99 tail several times worse than the leading gateways. For read-heavy production paths a gateway with a tighter distribution is the safer default; keep the official endpoint as a fallback rather than a primary." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Arbitrum endpoint." + 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 PublicNode's no-key Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="arbitrum"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Arbitrum endpoint." + 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 Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="arbitrum"}) @@ -114,7 +114,7 @@ providers: - slug: 1rpc name: 1RPC tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Arbitrum endpoint." + 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 1RPC's no-key Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="arbitrum"}) @@ -137,7 +137,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Arbitrum endpoint." + 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 Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="arbitrum"}) @@ -160,7 +160,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Arbitrum endpoint." + 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 Nodies's no-key Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="arbitrum"}) @@ -183,7 +183,7 @@ providers: - slug: lava name: Lava tag: Decentralized permissionless RPC mesh (ETH + Arbitrum no-key) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Lava's no-key Arbitrum endpoint." + 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 Lava's no-key Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lava", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lava", chain="arbitrum"}) @@ -206,7 +206,7 @@ providers: - slug: meowrpc name: MeowRPC tag: Free public RPC, no registration - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to MeowRPC's no-key Arbitrum endpoint." + 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 MeowRPC's no-key Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="meowrpc", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="meowrpc", chain="arbitrum"}) @@ -229,7 +229,7 @@ providers: - slug: arbitrum-official name: Arbitrum tag: Arbitrum Foundation public RPC, Arbitrum One only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Arbitrum's no-key Arbitrum endpoint." + 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 Arbitrum's no-key Arbitrum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="arbitrum-official", chain="arbitrum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="arbitrum-official", chain="arbitrum"}) diff --git a/benchmarks/avalanche-rpc.yml b/benchmarks/avalanche-rpc.yml index 662fb2fd..d86167cc 100644 --- a/benchmarks/avalanche-rpc.yml +++ b/benchmarks/avalanche-rpc.yml @@ -4,8 +4,8 @@ slug: avalanche-rpc number: "048" title: Fastest free Avalanche RPC, live no-key endpoint latency seo_title: "Fastest free Avalanche RPC 2026" -seo_description: "{{best_name}} leads free Avalanche RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 6 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Avalanche RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Avalanche RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Avalanche RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,34 +14,34 @@ unit: ms higher_is_better: false seo_intro: | - Avalanche's C-Chain field combines Ava Labs' official `api.avax.network` with 5 no-key multi-chain gateways. The official endpoint shows one of the tightest distributions among foundation RPCs, a contrast with the best-effort profiles on Arbitrum and Optimism. Every provider answers the identical probe every 15 seconds from us-east, eu-west and Singapore, with stale-head detection flagging anything more than 20 blocks behind the cross-provider tip. + Avalanche's C-Chain field combines Ava Labs' official `api.avax.network` with 5 no-key multi-chain gateways. The official endpoint shows one of the tightest distributions among foundation RPCs, a contrast with the best-effort profiles on Arbitrum and Optimism. Every provider answers the identical probe every 60 seconds from us-east, eu-west and Singapore, with stale-head detection flagging anything more than 20 blocks behind the cross-provider tip. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Avalanche endpoint that sustains continuous probing, 6 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Avalanche-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Avalanche endpoint that sustains continuous probing, 6 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Avalanche-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"avalanche\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Nodies, Avalanche). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"avalanche\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, Tenderly, Nodies, Avalanche). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Avalanche RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 6 measured providers." + - "{{best_name}} currently leads free Avalanche RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." - "Unlike the Arbitrum and Optimism foundation endpoints, `api.avax.network` keeps a tight p50-to-p99 ratio, an official endpoint that behaves like managed infrastructure rather than a best-effort courtesy." - "{{name:publicnode}} ({{p50:publicnode}}) and {{name:drpc}} ({{p50:drpc}}) give the C-Chain the same reliable gateway floor they provide on every EVM chain we measure." faq: - q: "What is the fastest free Avalanche RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 6 no-key providers probed every 15 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` 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." - q: "Which Avalanche RPCs work without an API key?" - a: "The 6 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies, Avalanche. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 6 providers on this page: PublicNode, dRPC, Tenderly, Nodies, Avalanche. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Avalanche RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Avalanche RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Is the official Avalanche RPC good enough for production reads?" a: "Among chain-official endpoints it is one of the strongest we measure: tight latency distribution and a high success rate rather than the best-effort tail seen on some other foundation RPCs. The usual free-tier caveats still apply (shared rate limits, no SLA), but as a read path it holds up unusually well against the commercial gateways." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Avalanche endpoint." + 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 PublicNode's no-key Avalanche endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="avalanche"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="avalanche"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Avalanche endpoint." + 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 Avalanche endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="avalanche"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="avalanche"}) @@ -110,33 +110,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="avalanche", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="avalanche", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Avalanche endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="avalanche"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="avalanche"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="avalanche"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="avalanche"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="avalanche"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="avalanche"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="avalanche"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="avalanche"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="avalanche", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="avalanche", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="avalanche", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="avalanche", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="avalanche", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="avalanche", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Avalanche endpoint." + 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 Avalanche endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="avalanche"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="avalanche"}) @@ -159,7 +136,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Avalanche endpoint." + 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 Nodies's no-key Avalanche endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="avalanche"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="avalanche"}) @@ -182,7 +159,7 @@ providers: - slug: avalanche-official name: Avalanche tag: Ava Labs C-Chain public RPC, Avalanche C-Chain only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Avalanche's no-key Avalanche endpoint." + 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 Avalanche's no-key Avalanche endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="avalanche-official", chain="avalanche"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="avalanche-official", chain="avalanche"}) diff --git a/benchmarks/base-rpc.yml b/benchmarks/base-rpc.yml index 86c05f45..e648d43c 100644 --- a/benchmarks/base-rpc.yml +++ b/benchmarks/base-rpc.yml @@ -4,8 +4,8 @@ slug: base-rpc number: "046" title: Fastest free Base RPC, live no-key endpoint latency seo_title: "Fastest free Base RPC 2026" -seo_description: "{{best_name}} leads free Base RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 6 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Base RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Base RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 6 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Base 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: | - Base offers the cleanest official-versus-gateway comparison in the cluster: Coinbase operates both the sequencer and the chain-official `mainnet.base.org`, so the house endpoint has every locational advantage, and it still has to beat PublicNode, dRPC, Tenderly, Nodies and Merkle on a level probe. 6 providers, the same `eth_getBlockByNumber` call every 15 seconds, three regions, stale-head detection against the cross-provider tip. + Base offers the cleanest official-versus-gateway comparison in the cluster: Coinbase operates both the sequencer and the chain-official `mainnet.base.org`, so the house endpoint has every locational advantage, and it still has to beat PublicNode, dRPC, Tenderly, Nodies and Merkle on a level probe. 6 providers, the same `eth_getBlockByNumber` call every 60 seconds, three regions, stale-head detection against the cross-provider tip. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Base endpoint that sustains continuous probing, 6 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Base-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Base endpoint that sustains continuous probing, 6 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Base-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -35,13 +35,13 @@ findings: faq: - q: "What is the fastest free Base RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 6 no-key providers probed every 15 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` p50 over the last 24h), measured against 6 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 Base RPCs work without an API key?" a: "The 6 providers on this page: PublicNode, dRPC, Tenderly, Nodies, Merkle, Base. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Base RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Base RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Is Coinbase's official Base RPC faster than third-party gateways?" a: "Not consistently. Despite being operated by the same team that runs the sequencer, `mainnet.base.org` trades the lead with PublicNode, dRPC and Tenderly depending on which region the request originates from. Check the region tabs on this page for the origin closest to your deployment; the cross-region average hides these flips." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Base endpoint." + 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 PublicNode's no-key Base endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="base"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="base"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Base endpoint." + 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 Base endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="base"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="base"}) @@ -113,7 +113,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Base endpoint." + 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 Base endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="base"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="base"}) @@ -136,7 +136,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Base endpoint." + 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 Nodies's no-key Base endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="base"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="base"}) @@ -159,7 +159,7 @@ providers: - slug: merkle name: Merkle tag: Base + BSC public no-key gateway (Ethereum hit by Cloudflare 20-min lockout, excluded) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Merkle's no-key Base endpoint." + 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 Merkle's no-key Base endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merkle", chain="base"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="merkle", chain="base"}) @@ -182,7 +182,7 @@ providers: - slug: base-official name: Base tag: Coinbase-operated, Base mainnet RPC - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Base's no-key Base endpoint." + 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 Base's no-key Base endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="base-official", chain="base"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="base-official", chain="base"}) diff --git a/benchmarks/berachain-rpc.yml b/benchmarks/berachain-rpc.yml index b871745c..4bc26daa 100644 --- a/benchmarks/berachain-rpc.yml +++ b/benchmarks/berachain-rpc.yml @@ -4,8 +4,8 @@ slug: berachain-rpc number: "062" title: Fastest free Berachain RPC, live no-key endpoint latency seo_title: "Fastest free Berachain RPC 2026" -seo_description: "{{best_name}} leads free Berachain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Berachain RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Berachain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Berachain 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: | - Berachain's proof-of-liquidity L1 fields 4 no-key providers: the Foundation's `rpc.berachain.com` plus PublicNode, dRPC and Tenderly. A thin cohort is itself a signal, several sibling chains failed the cluster's four-keyless-provider bar entirely, so each endpoint that qualifies here carries more of the redundancy burden. Identical probes every 15 seconds, three regions, full response classification. + Berachain's proof-of-liquidity L1 fields 4 no-key providers: the Foundation's `rpc.berachain.com` plus PublicNode, dRPC and Tenderly. A thin cohort is itself a signal, several sibling chains failed the cluster's four-keyless-provider bar entirely, so each endpoint that qualifies here carries more of the redundancy burden. Identical probes every 60 seconds, three regions, full response classification. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Berachain endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Berachain-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Berachain endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Berachain-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Berachain 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 15 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` 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 Berachain RPCs work without an API key?" a: "The 4 providers on this page: PublicNode, dRPC, Tenderly, Berachain. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Berachain RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Berachain RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Are free Berachain RPCs ready for production traffic?" a: "The four qualifying endpoints all sustain our 15-second cadence with high measured success rates, which is the floor for production reads. The real constraint is redundancy: with 4 providers, one incident removes a quarter of your options, so run the current leader ({{best_name}}, {{best_p50}}) as primary with the runner-up wired as fallback and let this page arbitrate after incidents." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Berachain endpoint." + 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 PublicNode's no-key Berachain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="berachain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="berachain"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Berachain endpoint." + 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 Berachain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="berachain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="berachain"}) @@ -114,7 +114,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Berachain endpoint." + 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 Berachain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="berachain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="berachain"}) @@ -137,7 +137,7 @@ providers: - slug: berachain-official name: Berachain tag: Berachain Foundation public RPC, Berachain only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Berachain's no-key Berachain endpoint." + 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 Berachain's no-key Berachain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="berachain-official", chain="berachain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="berachain-official", chain="berachain"}) diff --git a/benchmarks/blast-rpc.yml b/benchmarks/blast-rpc.yml index 96159861..df93cbae 100644 --- a/benchmarks/blast-rpc.yml +++ b/benchmarks/blast-rpc.yml @@ -4,8 +4,8 @@ slug: blast-rpc number: "060" title: Fastest free Blast RPC, live no-key endpoint latency seo_title: "Fastest free Blast RPC 2026" -seo_description: "{{best_name}} leads free Blast RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Blast RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Blast RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Blast RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -17,10 +17,10 @@ seo_intro: | Blast is the expansion's measurement cautionary tale. The chain-official `rpc.blast.io` answers in roughly 2 ms from all three probe regions at once, which no single origin can do: Virginia, Amsterdam and Singapore are separated by 80+ ms round trips at the speed of light. The endpoint terminates at an edge network. Our stale-head detection confirms the blocks it serves are fresh, but a sub-5 ms number measures the edge handshake, not the chain. 4 no-key providers, identical probes, three regions. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Blast endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Blast-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Blast endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Blast-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Blast 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 15 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` 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 Blast RPCs work without an API key?" a: "The 4 providers on this page: PublicNode, dRPC, Tenderly, Blast. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Blast RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Blast RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Is rpc.blast.io really that fast, or is something else going on?" a: "Something else. Two milliseconds simultaneously from Virginia, Amsterdam and Singapore is below the physical round-trip floor for any single origin, so the endpoint is answering at an anycast/CDN edge. Our stale-head detection shows the blocks it returns are current, so it is not serving a stale cache today, but edge termination means the latency figure describes the edge network, not node processing. We keep it ranked with the caveat documented, exactly as we do for Cloudflare's fast-but-permissioned Ethereum endpoint." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Blast endpoint." + 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 PublicNode's no-key Blast endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="blast"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="blast"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Blast endpoint." + 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 Blast endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="blast"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="blast"}) @@ -114,7 +114,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Blast endpoint." + 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 Blast endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="blast"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="blast"}) @@ -137,7 +137,7 @@ providers: - slug: blast-official name: Blast tag: Chain-official RPC, edge-terminated (see findings) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Blast's no-key Blast endpoint." + 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 Blast's no-key Blast endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="blast-official", chain="blast"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="blast-official", chain="blast"}) diff --git a/benchmarks/bnb-rpc.yml b/benchmarks/bnb-rpc.yml index c87a4de3..6bd90aa6 100644 --- a/benchmarks/bnb-rpc.yml +++ b/benchmarks/bnb-rpc.yml @@ -4,8 +4,8 @@ slug: bnb-rpc number: "049" title: Fastest free BNB Chain RPC, live no-key endpoint latency seo_title: "Fastest free BNB Chain RPC 2026" -seo_description: "{{best_name}} leads free BNB Chain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public BNB Chain RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free BNB Chain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public BNB Chain RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -17,10 +17,10 @@ seo_intro: | BNB Chain is the incumbent's chain: Binance's `bsc-dataseed1.binance.org` has been the copy-paste default since 2020, and from some regions it is still the single fastest RPC response we measure anywhere in the cluster. The catch is that it serves exactly one chain, while PublicNode, dRPC, Nodies and Merkle bring multi-chain coverage with increasingly competitive latency from EU origins. 5 providers, identical probes, three regions. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public BNB Chain endpoint that sustains continuous probing, 5 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the BNB Chain-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public BNB Chain endpoint that sustains continuous probing, 5 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the BNB Chain-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -35,13 +35,13 @@ findings: faq: - q: "What is the fastest free BNB Chain RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 5 no-key providers probed every 15 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` 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." - q: "Which BNB Chain RPCs work without an API key?" a: "The 5 providers on this page: PublicNode, dRPC, Nodies, Merkle, Binance. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest BNB Chain RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is BNB Chain RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Is bsc-dataseed still the best RPC for BNB Chain?" a: "It depends entirely on where your requests originate. From regions near Binance's infrastructure the dataseed is often the fastest single response in our whole dataset; from Singapore it can be 10x slower than the gateway tier. Check the region tabs above, the cross-region average is meaningless for an endpoint with this much geographic variance." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key BNB Chain endpoint." + 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 PublicNode's no-key BNB Chain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="bnb"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="bnb"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key BNB Chain endpoint." + 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 BNB Chain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="bnb"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="bnb"}) @@ -113,7 +113,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key BNB Chain endpoint." + 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 Nodies's no-key BNB Chain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="bnb"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="bnb"}) @@ -136,7 +136,7 @@ providers: - slug: merkle name: Merkle tag: Base + BSC public no-key gateway (Ethereum hit by Cloudflare 20-min lockout, excluded) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Merkle's no-key BNB Chain endpoint." + 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 Merkle's no-key BNB Chain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merkle", chain="bnb"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="merkle", chain="bnb"}) @@ -159,7 +159,7 @@ providers: - slug: binance name: Binance tag: BNB Chain dataseed RPC, Binance-operated - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Binance's no-key BNB Chain endpoint." + 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 Binance's no-key BNB Chain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="binance", chain="bnb"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="binance", chain="bnb"}) diff --git a/benchmarks/celo-rpc.yml b/benchmarks/celo-rpc.yml index 5967ae4c..edc49f4f 100644 --- a/benchmarks/celo-rpc.yml +++ b/benchmarks/celo-rpc.yml @@ -4,8 +4,8 @@ slug: celo-rpc number: "057" title: Fastest free Celo RPC, live no-key endpoint latency seo_title: "Fastest free Celo RPC 2026" -seo_description: "{{best_name}} leads free Celo RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Celo RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Celo RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Celo RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,35 +14,35 @@ unit: ms higher_is_better: false seo_intro: | - Celo brings 5 no-key providers anchored by Forno (`forno.celo.org`), cLabs' public endpoint that predates most of the gateway industry. Since Celo's migration to an Ethereum L2 the RPC surface is standard EVM, so the multi-chain gateways (PublicNode, dRPC, 1RPC, Tenderly) compete directly with the house endpoint on the identical `eth_getBlockByNumber` probe every 15 seconds from three regions. + Celo brings 4 no-key providers anchored by Forno (`forno.celo.org`), cLabs' public endpoint that predates most of the gateway industry. Since Celo's migration to an Ethereum L2 the RPC surface is standard EVM, so the multi-chain gateways (PublicNode, dRPC, Tenderly) compete directly with the house endpoint on the identical `eth_getBlockByNumber` probe every 60 seconds from three regions. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Celo endpoint that sustains continuous probing, 5 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Celo-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Celo endpoint that sustains continuous probing, 5 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Celo-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"celo\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Celo (Forno)). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"celo\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, Tenderly, Celo (Forno)). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Celo RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." + - "{{best_name}} currently leads free Celo RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." - "{{name:drpc}} ({{p50:drpc}}) extends its long-tail run here, 10 of the 12 expansion chains fall to it on the 3-region average, a consistency win built on anycast rather than any single-region record." - "Forno remains a serviceable default years after launch, but it is one origin: at least two of our three probe regions always see it with an ocean in the path, which the region tabs make visible." - "{{name:tenderly}} shows the same long-tail collapse measured across this expansion: ~330 ms flat in all three regions, single-origin routing behind a gateway that is genuinely fast on the majors." faq: - q: "What is the fastest free Celo RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 5 no-key providers probed every 15 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` 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 Celo RPCs work without an API key?" - a: "The 5 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Celo (Forno). Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 5 providers on this page: PublicNode, dRPC, Tenderly, Celo (Forno). Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Celo RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Celo RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Is Forno still the right default RPC for Celo?" a: "Forno is stable and honest, but it is a single origin, so at least two of our three probe regions always pay cross-ocean latency to reach it. The current leader above ({{best_name}} at {{best_p50}}) reflects the 3-region average; if your traffic is single-region, open that region's tab, Forno's ranking moves markedly by origin." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Celo endpoint." + 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 PublicNode's no-key Celo endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="celo"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="celo"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Celo endpoint." + 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 Celo endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="celo"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="celo"}) @@ -111,33 +111,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="celo", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="celo", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Celo endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="celo"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="celo"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="celo"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="celo"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="celo"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="celo"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="celo"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="celo"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="celo", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="celo", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="celo", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="celo", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="celo", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="celo", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Celo endpoint." + 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 Celo endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="celo"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="celo"}) @@ -160,7 +137,7 @@ providers: - slug: celo-official name: Celo (Forno) tag: cLabs Forno public RPC, Celo mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Celo (Forno)'s no-key Celo endpoint." + 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 Celo (Forno)'s no-key Celo endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="celo-official", chain="celo"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="celo-official", chain="celo"}) diff --git a/benchmarks/cronos-rpc.yml b/benchmarks/cronos-rpc.yml index 15499959..bd8182c4 100644 --- a/benchmarks/cronos-rpc.yml +++ b/benchmarks/cronos-rpc.yml @@ -4,8 +4,8 @@ slug: cronos-rpc number: "064" title: Fastest free Cronos RPC, live no-key endpoint latency seo_title: "Fastest free Cronos RPC 2026" -seo_description: "{{best_name}} leads free Cronos RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Cronos RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Cronos RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Cronos RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,19 +14,25 @@ unit: ms higher_is_better: false seo_intro: | - Cronos fields 4 no-key providers and encodes two integration traps from our sweep: PublicNode serves the chain at `cronos-evm-rpc.publicnode.com` (the intuitive `cronos-rpc` subdomain resolves but returns non-JSON), and 1RPC uses the ticker path `1rpc.io/cro`. Tenderly's public gateway does not reach Cronos, making this one of the few pages in the cluster without it. Probes every 15 seconds from three regions. + Cronos fields 3 no-key providers and encodes an integration trap + from our sweep: PublicNode serves the chain at + `cronos-evm-rpc.publicnode.com` (the intuitive `cronos-rpc` + subdomain resolves but returns non-JSON). Tenderly's public gateway + does not reach Cronos, making this one of the few pages in the + Arbitrum after its keyless per-IP daily budget proved too tight for + continuous multi-chain probing. Probes every 60 seconds from three + regions with the cluster's anti-cache payload. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Cronos endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Cronos-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Cronos endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Cronos-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"cronos\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, 1RPC, Cronos). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - "{{best_name}} currently leads free Cronos RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." @@ -36,13 +42,13 @@ findings: faq: - q: "What is the fastest free Cronos 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 15 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` 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 Cronos RPCs work without an API key?" - a: "The 4 providers on this page: PublicNode, dRPC, 1RPC, Cronos. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "Three endpoints sustain continuous keyless probing: PublicNode (at `cronos-evm-rpc.publicnode.com`, note the non-intuitive subdomain), dRPC, and the chain-linked public endpoint. Tenderly's public gateway does not reach Cronos, and 1RPC was descoped cluster-wide to Ethereum and Arbitrum because its keyless per-IP daily budget cannot sustain continuous multi-chain probing. Every listed endpoint was live-verified before inclusion." - q: "Does the fastest Cronos RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Cronos RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why isn't MeowRPC listed on Cronos?" a: "We tried it. MeowRPC's long-tail endpoints no longer resolve (DNS gone), and the provider appears defunct outside a few legacy chains, so it failed the live verification, eth_chainId match plus sustained probing, that gates admission to this cluster. Directories still listing it are copying stale metadata; this bench only ranks endpoints that answer." @@ -68,7 +74,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Cronos endpoint." + 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 PublicNode's no-key Cronos endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="cronos"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="cronos"}) @@ -91,7 +97,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Cronos endpoint." + 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 Cronos endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="cronos"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="cronos"}) @@ -111,33 +117,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="cronos", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="cronos", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Cronos endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="cronos"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="cronos"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="cronos"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="cronos"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="cronos"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="cronos"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="cronos"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="cronos"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="cronos", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="cronos", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="cronos", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="cronos", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="cronos", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="cronos", region="sgp"}[1h]) - - slug: cronos-official name: Cronos tag: Cronos Labs public RPC, Cronos EVM only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Cronos's no-key Cronos endpoint." + 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 Cronos's no-key Cronos endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cronos-official", chain="cronos"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="cronos-official", chain="cronos"}) diff --git a/benchmarks/ethereum-rpc.yml b/benchmarks/ethereum-rpc.yml index 6cc3d1a4..7854f601 100644 --- a/benchmarks/ethereum-rpc.yml +++ b/benchmarks/ethereum-rpc.yml @@ -4,8 +4,8 @@ slug: ethereum-rpc number: "044" title: Fastest free Ethereum RPC, live no-key endpoint latency seo_title: "Fastest free Ethereum RPC 2026" -seo_description: "{{best_name}} leads free Ethereum RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 9 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Ethereum RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Ethereum RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 9 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Ethereum 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: | - Ethereum carries the largest free-RPC cohort we measure: 9 no-key providers answering the same `eth_getBlockByNumber` probe every 15 seconds from three regions. It is also the chain where reliability analysis earns its keep. Cloudflare-eth answers HTTP 200 in well under a second while an increasing share of calls resolve to a JSON-RPC error body (`-32046 Cannot fulfill request`), and Merkle is excluded outright after recurring Cloudflare lockouts that froze our probes for 20 minutes after a single request. If you paste a free RPC URL into an Ethereum dapp, this page is the live answer to which one deserves it. + Ethereum carries the largest free-RPC cohort we measure: 9 no-key providers answering the same `eth_getBlockByNumber` probe every 60 seconds from three regions. It is also the chain where reliability analysis earns its keep. Cloudflare-eth answers HTTP 200 in well under a second while an increasing share of calls resolve to a JSON-RPC error body (`-32046 Cannot fulfill request`), and Merkle is excluded outright after recurring Cloudflare lockouts that froze our probes for 20 minutes after a single request. If you paste a free RPC URL into an Ethereum dapp, this page is the live answer to which one deserves it. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Ethereum endpoint that sustains continuous probing, 9 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Ethereum-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Ethereum endpoint that sustains continuous probing, 9 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Ethereum-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Ethereum RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 9 no-key providers probed every 15 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` p50 over the last 24h), measured against 9 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 Ethereum RPCs work without an API key?" a: "The 9 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies, Lava, MeowRPC, Flashbots, Cloudflare. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Ethereum RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Ethereum RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why is Cloudflare's Ethereum RPC marked unreliable here?" a: "Cloudflare's public Ethereum gateway switched to a permissioned mode for many JSON-RPC methods. The endpoint still responds fast with HTTP 200, but the body is increasingly a JSON-RPC error (`-32046`) rather than a usable result. We classify a call as `ok` only when the HTTP status is 200 AND the body carries a usable `result` field, so Cloudflare's real success rate is visible in the reliability column instead of hiding behind fast error responses." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Ethereum endpoint." + 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 PublicNode's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="ethereum"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Ethereum endpoint." + 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 Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="ethereum"}) @@ -114,7 +114,7 @@ providers: - slug: 1rpc name: 1RPC tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Ethereum endpoint." + 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 1RPC's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="ethereum"}) @@ -137,7 +137,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Ethereum endpoint." + 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 Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="ethereum"}) @@ -160,7 +160,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Ethereum endpoint." + 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 Nodies's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="ethereum"}) @@ -183,7 +183,7 @@ providers: - slug: lava name: Lava tag: Decentralized permissionless RPC mesh (ETH + Arbitrum no-key) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Lava's no-key Ethereum endpoint." + 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 Lava's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lava", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lava", chain="ethereum"}) @@ -206,7 +206,7 @@ providers: - slug: meowrpc name: MeowRPC tag: Free public RPC, no registration - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to MeowRPC's no-key Ethereum endpoint." + 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 MeowRPC's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="meowrpc", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="meowrpc", chain="ethereum"}) @@ -229,7 +229,7 @@ providers: - slug: flashbots name: Flashbots tag: Private-mempool RPC, anti-sandwich - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Flashbots's no-key Ethereum endpoint." + 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 Flashbots's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="flashbots", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="flashbots", chain="ethereum"}) @@ -252,7 +252,7 @@ providers: - slug: cloudflare name: Cloudflare tag: Permissioned-mode for many JSON-RPC methods - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Cloudflare's no-key Ethereum endpoint." + 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 Cloudflare's no-key Ethereum endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cloudflare", chain="ethereum"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="cloudflare", chain="ethereum"}) diff --git a/benchmarks/fraxtal-rpc.yml b/benchmarks/fraxtal-rpc.yml index 4d06d344..3205c165 100644 --- a/benchmarks/fraxtal-rpc.yml +++ b/benchmarks/fraxtal-rpc.yml @@ -4,8 +4,8 @@ slug: fraxtal-rpc number: "065" title: Fastest free Fraxtal RPC, live no-key endpoint latency seo_title: "Fastest free Fraxtal RPC 2026" -seo_description: "{{best_name}} leads free Fraxtal RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Fraxtal RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Fraxtal RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Fraxtal 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: | - Fraxtal, Frax's OP Stack rollup, fields 4 no-key providers: PublicNode, dRPC, Tenderly and Frax's own `rpc.frax.com`. The four-provider floor it just clears is the cluster's deliberate admission bar, chains that could not field four keyless endpoints (Mode, Zora, Abstract) were left out of the expansion entirely rather than shipped as two-row leaderboards. Identical probes every 15 seconds, three regions. + Fraxtal, Frax's OP Stack rollup, fields 4 no-key providers: PublicNode, dRPC, Tenderly and Frax's own `rpc.frax.com`. The four-provider floor it just clears is the cluster's deliberate admission bar, chains that could not field four keyless endpoints (Mode, Zora, Abstract) were left out of the expansion entirely rather than shipped as two-row leaderboards. Identical probes every 60 seconds, three regions. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Fraxtal endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Fraxtal-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Fraxtal endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Fraxtal-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Fraxtal 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 15 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` 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 Fraxtal RPCs work without an API key?" a: "The 4 providers on this page: PublicNode, dRPC, Tenderly, Fraxtal. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Fraxtal RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Fraxtal RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why are chains like Mode, Zora or Sei missing from this cluster?" a: "Each failed a specific admission test. Mode, Zora and Abstract could not field 4 keyless providers, below the bar for a meaningful leaderboard. Sei was excluded because dRPC caches `eth_getBlockByNumber` there, poisoning the exact probe we rank on. opBNB fell out because 1RPC returns 429 at our 15-second cadence, leaving only 3 solid providers. The cluster only ships chains where the comparison is honest." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Fraxtal endpoint." + 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 PublicNode's no-key Fraxtal endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="fraxtal"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="fraxtal"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Fraxtal endpoint." + 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 Fraxtal endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="fraxtal"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="fraxtal"}) @@ -114,7 +114,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Fraxtal endpoint." + 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 Fraxtal endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="fraxtal"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="fraxtal"}) @@ -137,7 +137,7 @@ providers: - slug: fraxtal-official name: Fraxtal tag: Frax-operated public RPC, Fraxtal mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Fraxtal's no-key Fraxtal endpoint." + 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 Fraxtal's no-key Fraxtal endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="fraxtal-official", chain="fraxtal"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="fraxtal-official", chain="fraxtal"}) diff --git a/benchmarks/gnosis-rpc.yml b/benchmarks/gnosis-rpc.yml index 59d74456..07d673c6 100644 --- a/benchmarks/gnosis-rpc.yml +++ b/benchmarks/gnosis-rpc.yml @@ -4,8 +4,8 @@ slug: gnosis-rpc number: "056" title: Fastest free Gnosis RPC, live no-key endpoint latency seo_title: "Fastest free Gnosis RPC 2026" -seo_description: "{{best_name}} leads free Gnosis RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 6 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Gnosis RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Gnosis RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Gnosis RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,35 +14,35 @@ unit: ms higher_is_better: false seo_intro: | - Gnosis is the cluster's clearest proof that official does not mean fast: the chain-official `rpc.gnosischain.com` is the slowest endpoint we measure on the chain, around 433 ms p50 on the 3-region average, while five third-party gateways beat it, including Nodies, whose POKT-backed infrastructure reaches Gnosis as its only chain in this 12-chain expansion. 6 no-key providers, the same `eth_getBlockByNumber` call every 15 seconds, three regions. + Gnosis is the cluster's clearest proof that official does not mean fast: the chain-official `rpc.gnosischain.com` is the slowest endpoint we measure on the chain, around 433 ms p50 on the 3-region average, while five third-party gateways beat it, including Nodies, whose POKT-backed infrastructure reaches Gnosis as its only chain in this 12-chain expansion. 5 no-key providers, the same `eth_getBlockByNumber` call every 60 seconds, three regions. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Gnosis endpoint that sustains continuous probing, 6 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Gnosis-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Gnosis endpoint that sustains continuous probing, 6 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Gnosis-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"gnosis\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Nodies, Gnosis). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"gnosis\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, Tenderly, Nodies, Gnosis). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Gnosis RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 6 measured providers." + - "{{best_name}} currently leads free Gnosis RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." - "The chain-official endpoint anchors the wrong end of the board: ~433 ms p50 with a similar profile from every region, slower than every gateway on this page. It is honest about its blocks; it is just slow." - "{{name:nodies}} ({{p50:nodies}}) is the quiet story of the expansion: Gnosis is the only long-tail chain it qualifies on, and it serves the chain well, a POKT-routed gateway beating the house endpoint by a wide margin." - "{{name:drpc}} ({{p50:drpc}}) shows its usual anycast consistency here, part of the pattern that has it leading 10 of the 12 long-tail chains on the 3-region average." faq: - q: "What is the fastest free Gnosis RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 6 no-key providers probed every 15 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` 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." - q: "Which Gnosis RPCs work without an API key?" - a: "The 6 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies, Gnosis. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 6 providers on this page: PublicNode, dRPC, Tenderly, Nodies, Gnosis. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Gnosis RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Gnosis RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Should I use rpc.gnosischain.com as my Gnosis RPC?" a: "Only as a fallback. It is the slowest endpoint we measure on Gnosis, roughly 433 ms median across three regions, several times the gateway tier, though its reliability and head freshness are fine. The measured leaders above serve the same chain with a fraction of the round trip; keep the official endpoint in the rotation for redundancy rather than as primary." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Gnosis endpoint." + 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 PublicNode's no-key Gnosis endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="gnosis"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="gnosis"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Gnosis endpoint." + 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 Gnosis endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="gnosis"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="gnosis"}) @@ -111,33 +111,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="gnosis", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="gnosis", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Gnosis endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="gnosis"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="gnosis"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="gnosis"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="gnosis"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="gnosis"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="gnosis"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="gnosis"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="gnosis"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="gnosis", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="gnosis", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="gnosis", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="gnosis", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="gnosis", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="gnosis", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Gnosis endpoint." + 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 Gnosis endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="gnosis"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="gnosis"}) @@ -160,7 +137,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Gnosis endpoint." + 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 Nodies's no-key Gnosis endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="gnosis"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="gnosis"}) @@ -183,7 +160,7 @@ providers: - slug: gnosis-official name: Gnosis tag: Gnosis chain-official RPC (rpc.gnosischain.com) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Gnosis's no-key Gnosis endpoint." + 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 Gnosis's no-key Gnosis endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="gnosis-official", chain="gnosis"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="gnosis-official", chain="gnosis"}) diff --git a/benchmarks/linea-rpc.yml b/benchmarks/linea-rpc.yml index 266815c7..f2d55dad 100644 --- a/benchmarks/linea-rpc.yml +++ b/benchmarks/linea-rpc.yml @@ -4,8 +4,8 @@ slug: linea-rpc number: "051" title: Fastest free Linea RPC, live no-key endpoint latency seo_title: "Fastest free Linea RPC 2026" -seo_description: "{{best_name}} leads free Linea RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Linea RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Linea RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Linea RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,34 +14,34 @@ unit: ms higher_is_better: false seo_intro: | - The no-key field thins out on Linea: 4 providers qualify (PublicNode, dRPC, 1RPC, Tenderly), all multi-chain gateways. Thinner competition makes the reliability columns matter more than raw speed, a fast endpoint with a high stale or timeout rate is a worse default than a slightly slower consistent one. Probes run every 15 seconds from us-east, eu-west and Singapore with full response classification. + The no-key field thins out on Linea: 4 providers qualify (PublicNode, dRPC, Tenderly), all multi-chain gateways. Thinner competition makes the reliability columns matter more than raw speed, a fast endpoint with a high stale or timeout rate is a worse default than a slightly slower consistent one. Probes run every 60 seconds from us-east, eu-west and Singapore with full response classification. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Linea endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Linea-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Linea endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Linea-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"linea\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"linea\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, Tenderly). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Linea RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free Linea RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." - "With only 4 qualifying providers, a single gateway having a bad day reshuffles the whole board; the success-rate column is the tiebreaker the median doesn't show." - "{{name:tenderly}} covers Linea in its 9-chain public gateway, one of the few non-major chains where its no-key tier reaches." faq: - q: "What is the fastest free Linea 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 15 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` 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 Linea RPCs work without an API key?" - a: "The 4 providers on this page: PublicNode, dRPC, 1RPC, Tenderly. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 4 providers on this page: PublicNode, dRPC, Tenderly. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Linea RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Linea RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why do so few free RPCs support Linea?" a: "Free-tier coverage follows demand: gateways add no-key chains when traffic justifies the infrastructure. Linea's cohort (4 providers) is typical of newer L2s, compare with 9 on Ethereum and 8 on Arbitrum. The flip side is that the providers that do qualify are the disciplined multi-chain operators, so the reliability floor is high even where the field is thin." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Linea endpoint." + 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 PublicNode's no-key Linea endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="linea"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="linea"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Linea endpoint." + 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 Linea endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="linea"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="linea"}) @@ -110,33 +110,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="linea", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="linea", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Linea endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="linea"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="linea"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="linea"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="linea"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="linea"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="linea"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="linea"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="linea"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="linea", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="linea", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="linea", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="linea", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="linea", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="linea", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Linea endpoint." + 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 Linea endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="linea"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="linea"}) diff --git a/benchmarks/mantle-rpc.yml b/benchmarks/mantle-rpc.yml index 99317af2..fd4df0be 100644 --- a/benchmarks/mantle-rpc.yml +++ b/benchmarks/mantle-rpc.yml @@ -4,8 +4,8 @@ slug: mantle-rpc number: "053" title: Fastest free Mantle RPC, live no-key endpoint latency seo_title: "Fastest free Mantle RPC 2026" -seo_description: "{{best_name}} leads free Mantle RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Mantle RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Mantle RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Mantle RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,34 +14,34 @@ unit: ms higher_is_better: false seo_intro: | - Mantle rounds out the cluster's long tail with 4 qualifying no-key providers, all multi-chain gateways (PublicNode, dRPC, 1RPC, Tenderly). Like every chain in the family, the number that matters is a sustained median, the same `eth_getBlockByNumber` call every 15 seconds from three regions over a rolling 24 hours, not a one-off marketing burst, and archive-depth support is audited separately every 5 minutes. + Mantle rounds out the cluster's long tail with 4 qualifying no-key providers, all multi-chain gateways (PublicNode, dRPC, Tenderly). Like every chain in the family, the number that matters is a sustained median, the same `eth_getBlockByNumber` call every 60 seconds from three regions over a rolling 24 hours, not a one-off marketing burst, and archive-depth support is audited separately every 5 minutes. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Mantle endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Mantle-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Mantle endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Mantle-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"mantle\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"mantle\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, Tenderly). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Mantle RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free Mantle RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." - "Mantle's field mirrors Linea and Scroll: the disciplined multi-chain gateways and nobody else, so the leaderboard is a pure read on how each gateway's infrastructure reaches the chain." - "Thin cohorts amplify tail events, one regional incident at one gateway visibly moves the 24h aggregate, which is exactly why the page shows per-region breakdowns instead of only the average." faq: - q: "What is the fastest free Mantle 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 15 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` 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 Mantle RPCs work without an API key?" - a: "The 4 providers on this page: PublicNode, dRPC, 1RPC, Tenderly. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 4 providers on this page: PublicNode, dRPC, Tenderly. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Mantle RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Mantle RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Are free Mantle RPCs reliable enough to build on?" a: "The four qualifying gateways all maintain high measured success rates on Mantle, but a 4-provider field means less redundancy if one degrades. Use the current leader as primary and the runner-up as fallback, and re-check this page after incidents, the ranking is live and the honest answer moves." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Mantle endpoint." + 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 PublicNode's no-key Mantle endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="mantle"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="mantle"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Mantle endpoint." + 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 Mantle endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="mantle"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="mantle"}) @@ -110,33 +110,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="mantle", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="mantle", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Mantle endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mantle"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="mantle"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="mantle"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="mantle"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="mantle"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="mantle"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="mantle"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mantle"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mantle", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mantle", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mantle", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mantle", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mantle", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mantle", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Mantle endpoint." + 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 Mantle endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="mantle"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="mantle"}) diff --git a/benchmarks/megaeth-rpc.yml b/benchmarks/megaeth-rpc.yml index c3f8a798..329c30ad 100644 --- a/benchmarks/megaeth-rpc.yml +++ b/benchmarks/megaeth-rpc.yml @@ -4,8 +4,8 @@ slug: megaeth-rpc number: "072" title: Fastest free MegaETH RPC, live no-key endpoint latency seo_title: "Fastest free MegaETH RPC 2026" -seo_description: "{{best_name}} leads free MegaETH RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 30s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public MegaETH RPC endpoint, audited every 30 seconds from 3 regions. +seo_description: "{{best_name}} leads free MegaETH RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public MegaETH RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -20,7 +20,7 @@ seo_intro: | February 2026. Marketing aside, builders still reach it through ordinary JSON-RPC, and the free tier of that surface is what this page measures. the official mainnet.megaeth.com endpoint plus - 1RPC, dRPC and Tenderly Gateway, probed every 30 seconds from + dRPC and Tenderly Gateway, probed every 60 seconds from three regions with the cluster's anti-cache payload. The chain's 10 ms story lives on its WebSocket realtime API; the HTTP numbers below are what a wallet, indexer or bot actually experiences when @@ -38,24 +38,23 @@ abstract: | MegaETH-scoped answer with per-region breakdowns first-class. methodology: - - "Cadence: every 30 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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`. 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](/benchmarks/rpc-capabilities) benchmark; the identical harness, methodology and exclusion rules apply on every chain. Every endpoint on this page was live-verified (eth_chainId match + anti-cache probe) before inclusion on 2026-07-08." - - "Chain scope: every query on this page is pinned to chain=\"megaeth\" (chain id 4326, mainnet since February 2026). Provider coverage: 4 no-key endpoints (MegaETH Official, 1RPC, dRPC, Tenderly Gateway). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"megaeth\" (chain id 4326, mainnet since February 2026). Provider coverage: 4 no-key endpoints (MegaETH Official, dRPC, Tenderly Gateway). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads the free MegaETH RPC field at {{best_p50}} (p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads the free MegaETH RPC field at {{best_p50}} (p50, 24h) across 3 measured providers." - "{{name:megaeth-official}} answers at {{p50:megaeth-official}}. The official endpoint applies dynamic compute-unit limiting rather than a fixed rps cap; our 1 probe/30s/region load never approaches it." - - "{{name:drpc}} at {{p50:drpc}}, {{name:tenderly}} at {{p50:tenderly}} and {{name:1rpc}} at {{p50:1rpc}} give MegaETH multi-gateway coverage months after mainnet, a faster third-party adoption curve than most 2025-class chains." - "A 1 s EVM block time means the stale classification window (20 blocks) is only 20 seconds here, the tightest honesty gate in the cluster." faq: - q: "What is the fastest free MegaETH RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (p50 over 24h), measured against 4 no-key providers probed every 30 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}} (p50 over 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." - q: "Which MegaETH RPCs work without an API key in 2026?" - a: "Four endpoints sustain continuous keyless probing: the official mainnet.megaeth.com/rpc (dynamic compute-unit limiting), 1RPC, dRPC and Tenderly Gateway. All were live-verified (eth_chainId 4326 + anti-cache probe) before inclusion. The 10 ms mini-block realtime API is WebSocket-only and out of scope for this HTTP latency page." + a: "Four endpoints sustain continuous keyless probing: the official mainnet.megaeth.com/rpc (dynamic compute-unit limiting), dRPC and Tenderly Gateway. All were live-verified (eth_chainId 4326 + anti-cache probe) before inclusion. The 10 ms mini-block realtime API is WebSocket-only and out of scope for this HTTP latency page." - q: "Does this page measure MegaETH's 10 ms real-time claim?" a: "No, and deliberately so. The 10 ms figure refers to sequencer mini-blocks delivered over the WebSocket realtime API; this page measures the plain HTTP JSON-RPC surface that wallets, indexers and most tooling actually poll. Both numbers are real, they describe different transport layers. A WebSocket-level benchmark is a separate methodology." @@ -78,7 +77,7 @@ providers: - slug: megaeth-official name: MegaETH Official tag: Foundation endpoint, compute-unit limited - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to MegaETH Official's no-key MegaETH endpoint." + 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 MegaETH Official's no-key MegaETH endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="megaeth-official", chain="megaeth"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="megaeth-official", chain="megaeth"}) @@ -98,33 +97,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="megaeth-official", chain="megaeth", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="megaeth-official", chain="megaeth", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key MegaETH endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="megaeth"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="megaeth"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="megaeth"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="megaeth"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="megaeth"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="megaeth"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="megaeth"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="megaeth"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="megaeth", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="megaeth", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="megaeth", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="megaeth", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="megaeth", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="megaeth", region="sgp"}[1h]) - - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key MegaETH endpoint." + 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 MegaETH endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="megaeth"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="megaeth"}) @@ -147,7 +123,7 @@ providers: - slug: tenderly name: Tenderly Gateway tag: Public gateway by Tenderly - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to Tenderly Gateway's no-key MegaETH endpoint." + 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 Gateway's no-key MegaETH endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="megaeth"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="megaeth"}) diff --git a/benchmarks/monad-rpc.yml b/benchmarks/monad-rpc.yml index d6068b06..8a14e1a5 100644 --- a/benchmarks/monad-rpc.yml +++ b/benchmarks/monad-rpc.yml @@ -4,8 +4,8 @@ slug: monad-rpc number: "071" title: Fastest free Monad RPC, live no-key endpoint latency seo_title: "Fastest free Monad RPC 2026" -seo_description: "{{best_name}} leads free Monad RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 30s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Monad RPC endpoint, audited every 30 seconds from 3 regions. +seo_description: "{{best_name}} leads free Monad RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Monad RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -21,7 +21,7 @@ seo_intro: | vendors (QuickNode, Alchemy, Goldsky, Ankr and its own nodes), and the multi-chain gateways followed within weeks. We probe the primary official endpoint plus dRPC, Tenderly Gateway, bloXroute - and OnFinality, every 30 seconds from three regions, with the same + and OnFinality, every 60 seconds from three regions, with the same anti-cache payload as every chain in the cluster. If you are building on Monad and pasting a free RPC URL into your dapp, this page is the live answer to which one deserves it. @@ -29,7 +29,7 @@ seo_intro: | abstract: | We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Monad endpoint - that sustains continuous probing, 5 providers, every 30 seconds, + that sustains continuous probing, 5 providers, 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, honest availability rather than a @@ -38,7 +38,7 @@ abstract: | with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 30 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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`. Latency without reliability is a misleading ranking signal." @@ -53,11 +53,11 @@ findings: faq: - q: "What is the fastest free Monad RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (p50 over 24h), measured against 5 no-key providers probed every 30 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so this page is the answer right now, not a quarterly snapshot." + a: "{{best_name}} currently leads at {{best_p50}} (p50 over 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 this page is the answer right now, not a quarterly snapshot." - q: "Which Monad RPCs work without an API key in 2026?" a: "Five endpoints sustain continuous keyless probing: the official rpc.monad.xyz (QuickNode-backed, 25 rps; four sibling mirrors exist at rpc1-rpc3.monad.xyz and rpc-mainnet.monadinfra.com on Alchemy, Goldsky, Ankr and Foundation infra), dRPC, Tenderly Gateway, bloXroute and OnFinality. All were live-verified (eth_chainId 143 + anti-cache probe) before inclusion." - q: "How is Monad RPC latency measured on OpenChainBench?" - a: "One identical JSON-RPC POST (eth_getBlockByNumber latest, rotating request id) every 30 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus quantile_over_time over 24 hours. Responses are classified so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest." + a: "One identical JSON-RPC POST (eth_getBlockByNumber latest, rotating request id) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus quantile_over_time over 24 hours. Responses are classified so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest." source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities @@ -78,7 +78,7 @@ providers: - slug: monad-official name: Monad tag: Foundation endpoint (rpc.monad.xyz, QuickNode-backed, 25 rps) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to Monad Official's no-key Monad endpoint." + 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 Monad Official's no-key Monad endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="monad-official", chain="monad"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="monad-official", chain="monad"}) @@ -101,7 +101,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Monad endpoint." + 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 Monad endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="monad"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="monad"}) @@ -124,7 +124,7 @@ providers: - slug: tenderly name: Tenderly Gateway tag: Public gateway by Tenderly - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to Tenderly Gateway's no-key Monad endpoint." + 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 Gateway's no-key Monad endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="monad"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="monad"}) @@ -147,7 +147,7 @@ providers: - slug: bloxroute name: bloXroute tag: BDN operator's public Monad endpoint - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to bloXroute's no-key Monad endpoint." + 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 bloXroute's no-key Monad endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="bloxroute", chain="monad"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="bloxroute", chain="monad"}) @@ -170,7 +170,7 @@ providers: - slug: onfinality name: OnFinality tag: Public endpoint, 80+ networks - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 30s from 3 regions (us-east + eu-west + sgp) to OnFinality's no-key Monad endpoint." + 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 OnFinality's no-key Monad endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="onfinality", chain="monad"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="onfinality", chain="monad"}) diff --git a/benchmarks/moonbeam-rpc.yml b/benchmarks/moonbeam-rpc.yml index 6b030bec..ed7d9088 100644 --- a/benchmarks/moonbeam-rpc.yml +++ b/benchmarks/moonbeam-rpc.yml @@ -4,8 +4,8 @@ slug: moonbeam-rpc number: "058" title: Fastest free Moonbeam RPC, live no-key endpoint latency seo_title: "Fastest free Moonbeam RPC 2026" -seo_description: "{{best_name}} leads free Moonbeam RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Moonbeam RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Moonbeam RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Moonbeam RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,37 +14,38 @@ unit: ms higher_is_better: false seo_intro: | - Moonbeam, Polkadot's EVM parachain, fields 5 no-key providers including the Moonbeam Foundation's `rpc.api.moonbeam.network`. One integration trap surfaced in our verification sweep: 1RPC addresses the chain by its token code, so the working path is `1rpc.io/glmr` and the intuitive `/moonbeam` returns HTTP 400. Probes run every 15 seconds from three regions with full response classification. + Moonbeam, the EVM chain of the Polkadot ecosystem, fields 4 no-key + descoped cluster-wide to Ethereum and Arbitrum after its keyless + per-IP daily budget proved too tight for continuous multi-chain + probing; the remaining cohort covers the multi-chain gateways plus + the chain-official endpoint. Probes every 60 seconds from three + regions with the cluster's anti-cache payload. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Moonbeam endpoint that sustains continuous probing, 5 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Moonbeam-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Moonbeam endpoint that sustains continuous probing, 5 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Moonbeam-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"moonbeam\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Moonbeam). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - "{{best_name}} currently leads free Moonbeam RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." - "{{name:drpc}} ({{p50:drpc}}) carries its anycast-consistency pattern onto a Polkadot parachain unchanged: same probe, same edge behavior, same 3-region steadiness that wins it 10 of the 12 long-tail chains." - - "{{name:1rpc}} is reachable only at the token-code path `1rpc.io/glmr`; the obvious `/moonbeam` URL 400s, the kind of detail no status page documents and this bench exists to encode." - "{{name:tenderly}} posts the expansion's recurring flat ~330 ms in every region on Moonbeam too, single-origin routing rather than the edge network it runs for the major chains." faq: - q: "What is the fastest free Moonbeam RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 5 no-key providers probed every 15 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` 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 Moonbeam RPCs work without an API key?" - a: "The 5 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Moonbeam. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "Four endpoints sustain continuous keyless probing: PublicNode, dRPC, Tenderly Gateway and the Moonbeam Foundation's official endpoint. 1RPC was descoped cluster-wide to Ethereum and Arbitrum because its keyless per-IP daily budget cannot sustain continuous multi-chain probing. Every listed endpoint was live-verified (eth_chainId match + anti-cache probe) before inclusion." - q: "Does the fastest Moonbeam RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Moonbeam RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - - q: "Why does 1RPC's Moonbeam endpoint use /glmr instead of /moonbeam?" - a: "1RPC keys several chain paths on native-token tickers, and GLMR is Moonbeam's token, so the working endpoint is `1rpc.io/glmr` while `1rpc.io/moonbeam` returns HTTP 400. Our harness verified the chain identity behind the path (eth_chainId 1284) before admitting it, so the numbers above are guaranteed to be Moonbeam mainnet and not a lookalike." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities @@ -68,7 +69,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Moonbeam endpoint." + 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 PublicNode's no-key Moonbeam endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="moonbeam"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="moonbeam"}) @@ -91,7 +92,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Moonbeam endpoint." + 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 Moonbeam endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="moonbeam"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="moonbeam"}) @@ -111,33 +112,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="moonbeam", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="moonbeam", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Moonbeam endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="moonbeam"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="moonbeam"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="moonbeam"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="moonbeam"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="moonbeam"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="moonbeam"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="moonbeam"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="moonbeam"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="moonbeam", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="moonbeam", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="moonbeam", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="moonbeam", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="moonbeam", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="moonbeam", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Moonbeam endpoint." + 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 Moonbeam endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="moonbeam"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="moonbeam"}) @@ -160,7 +138,7 @@ providers: - slug: moonbeam-official name: Moonbeam tag: Moonbeam Foundation public RPC, Moonbeam only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Moonbeam's no-key Moonbeam endpoint." + 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 Moonbeam's no-key Moonbeam endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="moonbeam-official", chain="moonbeam"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="moonbeam-official", chain="moonbeam"}) diff --git a/benchmarks/optimism-rpc.yml b/benchmarks/optimism-rpc.yml index da396446..922f5fe6 100644 --- a/benchmarks/optimism-rpc.yml +++ b/benchmarks/optimism-rpc.yml @@ -4,8 +4,8 @@ slug: optimism-rpc number: "047" title: Fastest free Optimism RPC, live no-key endpoint latency seo_title: "Fastest free Optimism RPC 2026" -seo_description: "{{best_name}} leads free Optimism RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 6 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Optimism RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Optimism RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Optimism RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,34 +14,34 @@ unit: ms higher_is_better: false seo_intro: | - Optimism pits the Foundation's `mainnet.optimism.io` against 5 multi-chain no-key gateways. As on Arbitrum, the official endpoint is documented best-effort, and the measured tail confirms it, while the gateway tier (PublicNode, dRPC, Tenderly, 1RPC, Nodies) competes on tighter distributions. Probes run every 15 seconds from three regions with full response classification, so an endpoint stuck on an old head is flagged `stale` rather than ranked fast. + Optimism pits the Foundation's `mainnet.optimism.io` against 5 multi-chain no-key gateways. As on Arbitrum, the official endpoint is documented best-effort, and the measured tail confirms it, while the gateway tier (PublicNode, dRPC, Tenderly, Nodies) competes on tighter distributions. Probes run every 60 seconds from three regions with full response classification, so an endpoint stuck on an old head is flagged `stale` rather than ranked fast. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Optimism endpoint that sustains continuous probing, 6 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Optimism-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Optimism endpoint that sustains continuous probing, 6 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Optimism-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"optimism\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Nodies, Optimism). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"optimism\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, Tenderly, Nodies, Optimism). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Optimism RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 6 measured providers." + - "{{best_name}} currently leads free Optimism RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." - "The Optimism Foundation endpoint shows the same best-effort signature as its Arbitrum counterpart: fine median, p99 several multiples worse, exactly what \"documented best-effort\" looks like in continuous measurement." - "OP Stack symmetry check: comparing this page with the Base leaderboard shows how two chains sharing a stack diverge purely on operator infrastructure." faq: - q: "What is the fastest free Optimism RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 6 no-key providers probed every 15 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` 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." - q: "Which Optimism RPCs work without an API key?" - a: "The 6 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies, Optimism. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 6 providers on this page: PublicNode, dRPC, Tenderly, Nodies, Optimism. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Optimism RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Optimism RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Do Base and Optimism RPCs perform the same since both are OP Stack?" a: "No. The stack is shared but the infrastructure is not: different operators, different peering, different gateway coverage. Our measurements regularly show different leaders and different tail behavior on the two chains. If you deploy on both, pick the RPC per chain from each page rather than assuming OP Stack parity." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Optimism endpoint." + 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 PublicNode's no-key Optimism endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="optimism"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="optimism"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Optimism endpoint." + 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 Optimism endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="optimism"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="optimism"}) @@ -110,33 +110,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="optimism", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="optimism", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Optimism endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="optimism"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="optimism"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="optimism"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="optimism"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="optimism"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="optimism"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="optimism"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="optimism"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="optimism", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="optimism", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="optimism", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="optimism", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="optimism", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="optimism", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Optimism endpoint." + 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 Optimism endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="optimism"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="optimism"}) @@ -159,7 +136,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Optimism endpoint." + 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 Nodies's no-key Optimism endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="optimism"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="optimism"}) @@ -182,7 +159,7 @@ providers: - slug: optimism-official name: Optimism tag: Optimism Foundation public RPC, Optimism mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Optimism's no-key Optimism endpoint." + 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 Optimism's no-key Optimism endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="optimism-official", chain="optimism"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="optimism-official", chain="optimism"}) diff --git a/benchmarks/polygon-rpc.yml b/benchmarks/polygon-rpc.yml index 87e941aa..6bc60657 100644 --- a/benchmarks/polygon-rpc.yml +++ b/benchmarks/polygon-rpc.yml @@ -4,8 +4,8 @@ slug: polygon-rpc number: "050" title: Fastest free Polygon RPC, live no-key endpoint latency seo_title: "Fastest free Polygon RPC 2026" -seo_description: "{{best_name}} leads free Polygon RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Polygon RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Polygon RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Polygon RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,34 +14,34 @@ unit: ms higher_is_better: false seo_intro: | - Polygon has no chain-official endpoint in the free tier, so this is the purest gateway-versus-gateway comparison in the cluster: PublicNode, dRPC, 1RPC, Tenderly and Nodies, all answering the same `eth_getBlockByNumber` probe every 15 seconds from three regions. With no house endpoint to anchor expectations, the regional flips between gateways decide the ranking, and they flip often. + Polygon has no chain-official endpoint in the free tier, so this is the purest gateway-versus-gateway comparison in the cluster: PublicNode, dRPC, Tenderly and Nodies, all answering the same `eth_getBlockByNumber` probe every 60 seconds from three regions. With no house endpoint to anchor expectations, the regional flips between gateways decide the ranking, and they flip often. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Polygon endpoint that sustains continuous probing, 5 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Polygon-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Polygon endpoint that sustains continuous probing, 5 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Polygon-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"polygon\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Nodies). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"polygon\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, Tenderly, Nodies). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Polygon RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." + - "{{best_name}} currently leads free Polygon RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." - "No foundation endpoint means no single-chain specialist skewing the field: every provider here also serves 4+ other chains, making Polygon the cleanest read on pure gateway quality." - "Regional leadership flips are the norm: the gateway that wins from us-east is regularly beaten from Singapore, so the region tabs above are not decoration, they are the actual answer." faq: - q: "What is the fastest free Polygon RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 5 no-key providers probed every 15 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` 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 Polygon RPCs work without an API key?" - a: "The 5 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 5 providers on this page: PublicNode, dRPC, Tenderly, Nodies. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Polygon RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Polygon RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why is there no official Polygon RPC in this benchmark?" a: "Polygon's historically documented public endpoint (`polygon-rpc.com`) is operated by a third party and has moved in and out of key-gating and rate-limit regimes that break our 15-second probe cadence. The bench includes only endpoints that sustain continuous no-key probing; the multi-chain gateways above all pass that bar on Polygon." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Polygon endpoint." + 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 PublicNode's no-key Polygon endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="polygon"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="polygon"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Polygon endpoint." + 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 Polygon endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="polygon"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="polygon"}) @@ -110,33 +110,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="polygon", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="polygon", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Polygon endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="polygon"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="polygon"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="polygon"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="polygon"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="polygon"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="polygon"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="polygon"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="polygon"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="polygon", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="polygon", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="polygon", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="polygon", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="polygon", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="polygon", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Polygon endpoint." + 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 Polygon endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="polygon"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="polygon"}) @@ -159,7 +136,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Polygon endpoint." + 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 Nodies's no-key Polygon endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="polygon"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="polygon"}) diff --git a/benchmarks/rpc-capabilities.yml b/benchmarks/rpc-capabilities.yml index c365d89d..d9c8137c 100644 --- a/benchmarks/rpc-capabilities.yml +++ b/benchmarks/rpc-capabilities.yml @@ -5,7 +5,7 @@ number: "010" title: Fastest free public RPC for Ethereum, BNB, Polygon and 7 more EVM chains seo_title: "Fastest free public RPC 2026" seo_description: "Fastest free public RPC live on eth_getBlockByNumber p50. dRPC, PublicNode, 1RPC, Tenderly, Nodies, Lava ranked." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against free, no-key public RPC endpoints across 10 EVM chains, audited every 15 seconds. +subtitle: HTTP round-trip latency for eth_getBlockByNumber against free, no-key public RPC endpoints across 10 EVM chains, audited every 60 seconds. category: RPCs status: live metric: RPC latency @@ -19,7 +19,7 @@ seo_intro: | chain my product runs on. Alchemy and Infura own the keyed-tier market; the free public side of the question lives elsewhere, in the RPC services dapps hit when a contributor's free quota is the - budget. We probe `eth_getBlockByNumber` every 15 seconds against 15 + budget. We probe `eth_getBlockByNumber` every 60 seconds against 15 audited providers across 10 EVM chains. PublicNode, dRPC, 1RPC, MeowRPC, Tenderly Gateway, Nodies (POKT), Lava Network, Merkle, Flashbots Protect, Cloudflare and 5 chain-official foundation @@ -60,7 +60,7 @@ abstract: | as the fastest. methodology: - - "Cadence: every 15 seconds per (provider, chain) pair, from each of 3 Railway replicas (us-east Virginia, eu-west Amsterdam, sgp Singapore). The harness reads `$RAILWAY_REPLICA_REGION` at boot, normalizes it to the canonical 3-region set, and stamps a `region` label on every emitted metric. Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are available on the time-series chart." + - "Cadence: every 60 seconds per (provider, chain) pair, from each of 3 Railway replicas (us-east Virginia, eu-west Amsterdam, sgp Singapore). The harness reads `$RAILWAY_REPLICA_REGION` at boot, normalizes it to the canonical 3-region set, and stamps a `region` label on every emitted metric. Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are available on the time-series chart." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "Latency: client-side `time.Now()` delta around the round-trip, in milliseconds. Exposed as both a gauge (`rpc_latency_milliseconds`) and a histogram (`rpc_latency_milliseconds_histogram`) with buckets 50 ms → 10 s, so p50/p90/p99 are computed via Prometheus `histogram_quantile` / `quantile_over_time`." - "Call-result classification: `ok` (HTTP 200 + non-empty result), `http_err` (status ≠ 200 or transport failure), `jsonrpc_err` (HTTP 200 with an `error` field, the Cloudflare-eth trap), `stale` (returned block more than 20 behind the cross-provider tip for that chain), `timeout`. Counter `rpc_call_total{result}` powers the reliability leaderboard." @@ -80,7 +80,7 @@ findings: faq: - q: "What is the fastest free public RPC right now?" - a: "The question is per chain because several providers are single-chain by design (Base official, Binance, Arbitrum Foundation, Optimism Foundation, Avalanche) and a cross-chain aggregate mechanically rewards whichever single-chain endpoint happens to be fastest on its one chain. Current per-chain leaders. Ethereum {{best_name:chain:ethereum}} at {{best_p50:chain:ethereum}}, Base {{best_name:chain:base}} at {{best_p50:chain:base}}, BNB Chain {{best_name:chain:bnb}} at {{best_p50:chain:bnb}}, Arbitrum {{best_name:chain:arbitrum}} at {{best_p50:chain:arbitrum}}. The leaderboard re-sorts every 15 seconds against fresh Prometheus samples averaged across us-east, eu-west and sgp probes. Switch the chain tab to see the leader on the network your product runs on." + a: "The question is per chain because several providers are single-chain by design (Base official, Binance, Arbitrum Foundation, Optimism Foundation, Avalanche) and a cross-chain aggregate mechanically rewards whichever single-chain endpoint happens to be fastest on its one chain. Current per-chain leaders. Ethereum {{best_name:chain:ethereum}} at {{best_p50:chain:ethereum}}, Base {{best_name:chain:base}} at {{best_p50:chain:base}}, BNB Chain {{best_name:chain:bnb}} at {{best_p50:chain:bnb}}, Arbitrum {{best_name:chain:arbitrum}} at {{best_p50:chain:arbitrum}}. The leaderboard re-sorts every 60 seconds against fresh Prometheus samples averaged across us-east, eu-west and sgp probes. Switch the chain tab to see the leader on the network your product runs on." - q: "Which public RPCs work without an API key in 2026?" a: "15 audited providers across 10 EVM chains. Universal multi-chain (work on 4+ chains): PublicNode, dRPC, 1RPC, Tenderly Gateway (`gateway.tenderly.co/public/`), Nodies (POKT successor at `*-pokt.nodies.app`). Ethereum-specific or limited footprint: MeowRPC (ETH + Arbitrum only since 2025), Flashbots Protect, Cloudflare (read-degraded), Lava Network (ETH + Arbitrum no-key, other chains require key), Merkle (Base + BSC stable, ETH locked-out by Cloudflare). Chain-official foundation RPCs: Arbitrum (`arb1.arbitrum.io/rpc`), Optimism (`mainnet.optimism.io`), Base (`mainnet.base.org`), Avalanche (`api.avax.network`), BNB (`bsc-dataseed1.binance.org`). Excluded: Ankr (key-gated), gateway.fm (29 req/IP), LlamaRPC / BlockPI / OmniaTech (Cloudflare 521 region-blocked), Alchemy demo (rate-limited dead), NodeReal / GetBlock / Chainstack (key-gated)." - q: "Why is Cloudflare-eth returning errors?" @@ -88,7 +88,7 @@ faq: - q: "Which free RPC supports Ethereum archive node calls?" a: "Most free public RPCs are state-pruned, so `eth_getBalance` at block (head, 5,000,000) returns an error rather than the historical balance. This benchmark probes five depths (300, 7,200, 216,000, 1,296,000, 5,000,000 blocks) every five minutes and exposes a gauge per provider per depth. The page surfaces a per-provider archive-depth badge: a green tick at the 5M tier means full historical state is available for free without a key. Anything pruned at 7200 confirms the endpoint is on a Geth default config and only serves the last ~24 hours." - q: "How is RPC latency measured on OpenChainBench?" - a: "The harness issues a single `eth_getBlockByNumber` JSON-RPC POST every 15 seconds against each (provider, chain) pair from each of 3 regions (us-east, eu-west, sgp), using the same plain HTTP client for every endpoint. Wall-clock delta around the round-trip is recorded with millisecond precision and pushed to both a gauge and a histogram. p50/p90/p99 are computed via Prometheus `quantile_over_time` over the last 24 hours. Stale-head detection compares each response against the cross-provider tip and flags anything more than 20 blocks behind as `stale`, so a dead endpoint stuck on yesterday's block cannot rank as the fastest." + a: "The harness issues a single `eth_getBlockByNumber` JSON-RPC POST every 60 seconds against each (provider, chain) pair from each of 3 regions (us-east, eu-west, sgp), using the same plain HTTP client for every endpoint. Wall-clock delta around the round-trip is recorded with millisecond precision and pushed to both a gauge and a histogram. p50/p90/p99 are computed via Prometheus `quantile_over_time` over the last 24 hours. Stale-head detection compares each response against the cross-provider tip and flags anything more than 20 blocks behind as `stale`, so a dead endpoint stuck on yesterday's block cannot rank as the fastest." - q: "Are public RPCs production-grade for a dapp?" a: "Read the success-rate column before deciding. A median latency under 100 ms is irrelevant if the endpoint silently returns a JSON-RPC error 5% of the time or stalls during an L1 reorg. Free public RPCs share rate-limit budgets with the entire internet and have no SLA. They are good for read-heavy demos, local development and fallback paths; production dapps usually graduate to a keyed tier (Alchemy, QuickNode, Infura) for `eth_sendRawTransaction`, websocket subscriptions and archive queries beyond Geth's pruned cap. This benchmark measures the no-key tier specifically because that is the unmeasured part of the market." @@ -148,7 +148,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key endpoint." + 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 PublicNode's no-key endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode"}) @@ -171,7 +171,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's decentralized 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 decentralized mesh." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc"}) @@ -194,7 +194,7 @@ providers: - slug: 1rpc name: 1RPC tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's Automata 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 1RPC's Automata gateway." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc"}) @@ -217,7 +217,7 @@ providers: - slug: meowrpc name: MeowRPC tag: Free public RPC, no registration - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to MeowRPC's no-key endpoint." + 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 MeowRPC's no-key endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="meowrpc"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="meowrpc"}) @@ -240,7 +240,7 @@ providers: - slug: flashbots name: Flashbots tag: Private-mempool RPC, anti-sandwich - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to the Flashbots Protect read proxy." + 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 the Flashbots Protect read proxy." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="flashbots"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="flashbots"}) @@ -263,7 +263,7 @@ providers: - slug: cloudflare name: Cloudflare tag: Permissioned-mode for many JSON-RPC methods - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to cloudflare-eth (check success column for jsonrpc_err share)." + 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 cloudflare-eth (check success column for jsonrpc_err share)." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cloudflare"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="cloudflare"}) @@ -286,7 +286,7 @@ providers: - slug: base-official name: Base tag: Coinbase-operated, Base mainnet RPC - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Coinbase's `mainnet.base.org` endpoint." + 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 Coinbase's `mainnet.base.org` endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="base-official"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="base-official"}) @@ -309,7 +309,7 @@ providers: - slug: binance name: Binance tag: BNB Chain dataseed RPC, Binance-operated - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Binance's `bsc-dataseed1.binance.org` endpoint." + 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 Binance's `bsc-dataseed1.binance.org` endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="binance"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="binance"}) @@ -332,7 +332,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to `gateway.tenderly.co/public/`." + 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 `gateway.tenderly.co/public/`." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly"}) @@ -355,7 +355,7 @@ providers: - slug: nodies name: Nodies tag: POKT Network's decentralized public RPC successor, 7+ chains - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies' `*-pokt.nodies.app` endpoint." + 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 Nodies' `*-pokt.nodies.app` endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies"}) @@ -378,7 +378,7 @@ providers: - slug: lava name: Lava tag: Decentralized permissionless RPC mesh (ETH + Arbitrum no-key) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Lava Network's no-key mesh endpoint." + 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 Lava Network's no-key mesh endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lava"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lava"}) @@ -401,7 +401,7 @@ providers: - slug: merkle name: Merkle tag: Base + BSC public no-key gateway (Ethereum hit by Cloudflare 20-min lockout, excluded) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Merkle's Base/BSC no-key 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 Merkle's Base/BSC no-key gateway." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merkle"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="merkle"}) @@ -424,7 +424,7 @@ providers: - slug: arbitrum-official name: Arbitrum tag: Arbitrum Foundation public RPC, Arbitrum One only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to the Arbitrum Foundation's `arb1.arbitrum.io/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 the Arbitrum Foundation's `arb1.arbitrum.io/rpc`." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="arbitrum-official"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="arbitrum-official"}) @@ -447,7 +447,7 @@ providers: - slug: optimism-official name: Optimism tag: Optimism Foundation public RPC, Optimism mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to the Optimism Foundation's `mainnet.optimism.io`." + 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 the Optimism Foundation's `mainnet.optimism.io`." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="optimism-official"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="optimism-official"}) @@ -470,7 +470,7 @@ providers: - slug: avalanche-official name: Avalanche tag: Ava Labs C-Chain public RPC, Avalanche C-Chain only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Ava Labs' `api.avax.network/ext/bc/C/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 Ava Labs' `api.avax.network/ext/bc/C/rpc`." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="avalanche-official"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="avalanche-official"}) diff --git a/benchmarks/scroll-rpc.yml b/benchmarks/scroll-rpc.yml index 9c5c6cf0..396b7325 100644 --- a/benchmarks/scroll-rpc.yml +++ b/benchmarks/scroll-rpc.yml @@ -4,8 +4,8 @@ slug: scroll-rpc number: "052" title: Fastest free Scroll RPC, live no-key endpoint latency seo_title: "Fastest free Scroll RPC 2026" -seo_description: "{{best_name}} leads free Scroll RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Scroll RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Scroll RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Scroll RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,34 +14,34 @@ unit: ms higher_is_better: false seo_intro: | - Scroll runs the same 4-gateway field as Linea (PublicNode, dRPC, 1RPC, Tenderly), making the two chains a natural controlled experiment: same providers, same probe, different chain infrastructure. The differences you see between this page and the Linea leaderboard are the chains, not the gateways. Probes every 15 seconds, three regions, stale-head detection against the cross-provider tip. + Scroll runs the same 4-gateway field as Linea (PublicNode, dRPC, Tenderly), making the two chains a natural controlled experiment: same providers, same probe, different chain infrastructure. The differences you see between this page and the Linea leaderboard are the chains, not the gateways. Probes every 60 seconds, three regions, stale-head detection against the cross-provider tip. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Scroll endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Scroll-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Scroll endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Scroll-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"scroll\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"scroll\". Provider coverage: 4 no-key endpoints (PublicNode, dRPC, Tenderly). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Scroll RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free Scroll RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." - "Scroll and Linea share an identical provider field, so cross-reading the two pages isolates chain-side latency from gateway-side latency, a comparison no single-chain benchmark can offer." - "As on every thin-cohort chain, the success-rate column outranks the latency column for picking a production default." faq: - q: "What is the fastest free Scroll 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 15 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` 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 Scroll RPCs work without an API key?" - a: "The 4 providers on this page: PublicNode, dRPC, 1RPC, Tenderly. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 4 providers on this page: PublicNode, dRPC, Tenderly. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Scroll RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Scroll RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Which free RPC should I default to on Scroll?" a: "Start from the current leader above, then check its per-region row for the origin closest to your deployment. With a 4-provider field the honest answer changes more often than on Ethereum, so a primary-plus-fallback pair (the top two on this page) is the resilient configuration rather than any single hardcoded URL." @@ -67,7 +67,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Scroll endpoint." + 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 PublicNode's no-key Scroll endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="scroll"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="scroll"}) @@ -90,7 +90,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Scroll endpoint." + 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 Scroll endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="scroll"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="scroll"}) @@ -110,33 +110,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="scroll", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="scroll", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Scroll endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="scroll"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="scroll"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="scroll"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="scroll"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="scroll"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="scroll"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="scroll"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="scroll"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="scroll", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="scroll", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="scroll", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="scroll", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="scroll", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="scroll", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, 9 chains, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Scroll endpoint." + 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 Scroll endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="scroll"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="scroll"}) diff --git a/benchmarks/soneium-rpc.yml b/benchmarks/soneium-rpc.yml index b965f546..77526a95 100644 --- a/benchmarks/soneium-rpc.yml +++ b/benchmarks/soneium-rpc.yml @@ -4,8 +4,8 @@ slug: soneium-rpc number: "066" title: Fastest free Soneium RPC, live no-key endpoint latency seo_title: "Fastest free Soneium RPC 2026" -seo_description: "{{best_name}} leads free Soneium RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Soneium RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Soneium RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Soneium 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: | - Soneium, Sony's OP Stack rollup, is the long-tail chain where the official endpoint actually wins: `rpc.soneium.org` leads at roughly 17 ms on the 3-region average, distributed official infrastructure that answers near every probe origin while keeping fresh heads in our stale detection. 4 no-key providers, the identical `eth_getBlockByNumber` call every 15 seconds from us-east, eu-west and Singapore. + Soneium, Sony's OP Stack rollup, is the long-tail chain where the official endpoint actually wins: `rpc.soneium.org` leads at roughly 17 ms on the 3-region average, distributed official infrastructure that answers near every probe origin while keeping fresh heads in our stale detection. 4 no-key providers, the identical `eth_getBlockByNumber` call every 60 seconds from us-east, eu-west and Singapore. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Soneium endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Soneium-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Soneium endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Soneium-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Soneium 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 15 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` 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 Soneium RPCs work without an API key?" a: "The 4 providers on this page: PublicNode, dRPC, Tenderly, Soneium. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Soneium RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Soneium RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Is the official Soneium RPC actually the best choice?" a: "Currently yes, and that is unusual: across the 12-chain long-tail expansion only two chains resist the gateway tier, and `rpc.soneium.org` is the clearest case, leading the 3-region average at around 17 ms while our stale-head checks stay clean. The usual free-tier caveats (no SLA, shared limits) still apply, so keep {{name:drpc}} or {{name:publicnode}} wired as fallback." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Soneium endpoint." + 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 PublicNode's no-key Soneium endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="soneium"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="soneium"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Soneium endpoint." + 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 Soneium endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="soneium"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="soneium"}) @@ -114,7 +114,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Soneium endpoint." + 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 Soneium endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="soneium"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="soneium"}) @@ -137,7 +137,7 @@ providers: - slug: soneium-official name: Soneium tag: Sony Block Solutions public RPC, Soneium mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Soneium's no-key Soneium endpoint." + 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 Soneium's no-key Soneium endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="soneium-official", chain="soneium"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="soneium-official", chain="soneium"}) diff --git a/benchmarks/sonic-rpc.yml b/benchmarks/sonic-rpc.yml index 633aba5c..caed40c3 100644 --- a/benchmarks/sonic-rpc.yml +++ b/benchmarks/sonic-rpc.yml @@ -4,8 +4,8 @@ slug: sonic-rpc number: "055" title: Fastest free Sonic RPC, live no-key endpoint latency seo_title: "Fastest free Sonic RPC 2026" -seo_description: "{{best_name}} leads free Sonic RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 6 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Sonic RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Sonic RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Sonic RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,35 +14,35 @@ unit: ms higher_is_better: false seo_intro: | - Sonic ties Gnosis for the largest cohort in the long-tail expansion: 6 no-key providers, including Sonic Labs' own `rpc.soniclabs.com` and the only keyless Lava endpoint outside Ethereum and Arbitrum, `sonic.lava.build` answers no-key while every other Lava subdomain 403s without an API key. Every provider gets the identical `eth_getBlockByNumber` probe every 15 seconds from us-east, eu-west and Singapore, with stale-head detection against the cross-provider tip. + Sonic ties Gnosis for the largest cohort in the long-tail expansion: 5 no-key providers, including Sonic Labs' own `rpc.soniclabs.com` and the only keyless Lava endpoint outside Ethereum and Arbitrum, `sonic.lava.build` answers no-key while every other Lava subdomain 403s without an API key. Every provider gets the identical `eth_getBlockByNumber` probe every 60 seconds from us-east, eu-west and Singapore, with stale-head detection against the cross-provider tip. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Sonic endpoint that sustains continuous probing, 6 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Sonic-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Sonic endpoint that sustains continuous probing, 6 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Sonic-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"sonic\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Lava, Sonic Labs). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"sonic\". Provider coverage: 6 no-key endpoints (PublicNode, dRPC, Tenderly, Lava, Sonic Labs). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Sonic RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 6 measured providers." + - "{{best_name}} currently leads free Sonic RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." - "{{name:drpc}} ({{p50:drpc}}) illustrates the long-tail pattern: it wins 10 of the 12 chains in this expansion on the 3-region average, not by posting the fastest single-region peak but by answering every origin from a nearby anycast edge." - "{{name:tenderly}} tells the opposite story: roughly 330 ms in every region, the flat signature of single-origin routing. The same gateway is competitive on Ethereum and Base, so this is a per-chain routing decision, not a capacity problem." - "{{name:lava}} makes Sonic a curiosity: `sonic.lava.build` is the only Lava subdomain that answers no-key outside eth1/arb1, so this page is the cluster's only long-tail read on the Lava mesh." faq: - q: "What is the fastest free Sonic RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 6 no-key providers probed every 15 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` 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." - q: "Which Sonic RPCs work without an API key?" - a: "The 6 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Lava, Sonic Labs. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 6 providers on this page: PublicNode, dRPC, Tenderly, Lava, Sonic Labs. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Sonic RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Sonic RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why does Lava appear on Sonic but on no other long-tail chain?" a: "Lava publishes `*.lava.build` subdomains for many chains, but nearly all of them return 403 without an API key. `sonic.lava.build` is the exception: it passed our no-key verification (eth_chainId match plus sustained probing) and has held the 15-second cadence since. Every (provider, chain) pair in this cluster is admitted on measured behavior, not on a provider's published chain list." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Sonic endpoint." + 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 PublicNode's no-key Sonic endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="sonic"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="sonic"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Sonic endpoint." + 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 Sonic endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sonic"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="sonic"}) @@ -111,33 +111,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sonic", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sonic", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Sonic endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="sonic"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="sonic"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="sonic"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="sonic"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="sonic"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="sonic"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="sonic"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="sonic"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="sonic", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="sonic", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="sonic", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="sonic", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="sonic", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="sonic", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Sonic endpoint." + 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 Sonic endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="sonic"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="sonic"}) @@ -160,7 +137,7 @@ providers: - slug: lava name: Lava tag: Decentralized permissionless RPC mesh (sonic.lava.build, open no-key) - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Lava's no-key Sonic endpoint." + 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 Lava's no-key Sonic endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lava", chain="sonic"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lava", chain="sonic"}) @@ -183,7 +160,7 @@ providers: - slug: sonic-official name: Sonic Labs tag: Sonic Labs public RPC, Sonic mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Sonic Labs's no-key Sonic endpoint." + 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 Sonic Labs's no-key Sonic endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sonic-official", chain="sonic"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="sonic-official", chain="sonic"}) diff --git a/benchmarks/taiko-rpc.yml b/benchmarks/taiko-rpc.yml index 86206150..282868f0 100644 --- a/benchmarks/taiko-rpc.yml +++ b/benchmarks/taiko-rpc.yml @@ -4,8 +4,8 @@ slug: taiko-rpc number: "061" title: Fastest free Taiko RPC, live no-key endpoint latency seo_title: "Fastest free Taiko RPC 2026" -seo_description: "{{best_name}} leads free Taiko RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Taiko RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Taiko RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Taiko 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: | - Taiko, the based rollup where Ethereum validators sequence L2 blocks, fields 4 no-key providers. Our verification sweep caught one routing quirk worth encoding: Tenderly serves the chain only at the `taiko-mainnet` gateway slug, the plain `/taiko` path 404s. Probes run every 15 seconds from us-east, eu-west and Singapore with stale-head detection against the cross-provider tip. + Taiko, the based rollup where Ethereum validators sequence L2 blocks, fields 4 no-key providers. Our verification sweep caught one routing quirk worth encoding: Tenderly serves the chain only at the `taiko-mainnet` gateway slug, the plain `/taiko` path 404s. Probes run every 60 seconds from us-east, eu-west and Singapore with stale-head detection against the cross-provider tip. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Taiko endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Taiko-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Taiko endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Taiko-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." @@ -36,13 +36,13 @@ findings: faq: - q: "What is the fastest free Taiko 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 15 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` 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 Taiko RPCs work without an API key?" a: "The 4 providers on this page: PublicNode, dRPC, Tenderly, Taiko. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Taiko RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Taiko RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Which free Taiko RPC should production traffic use?" a: "Start from {{best_name}} ({{best_p50}} on the 3-region average) and pair it with the runner-up as fallback; in a 4-provider field a single degradation reshuffles the board. If you configure Tenderly manually, note its gateway path is `taiko-mainnet`, the intuitive `/taiko` path 404s, a detail our probes encode but provider directories rarely do." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Taiko endpoint." + 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 PublicNode's no-key Taiko endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="taiko"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="taiko"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Taiko endpoint." + 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 Taiko endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="taiko"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="taiko"}) @@ -114,7 +114,7 @@ providers: - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Taiko endpoint." + 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 Taiko endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="taiko"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="taiko"}) @@ -137,7 +137,7 @@ providers: - slug: taiko-official name: Taiko tag: Taiko Labs public RPC, Taiko mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Taiko's no-key Taiko endpoint." + 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 Taiko's no-key Taiko endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="taiko-official", chain="taiko"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="taiko-official", chain="taiko"}) diff --git a/benchmarks/unichain-rpc.yml b/benchmarks/unichain-rpc.yml index 15b764f7..79ad1fd0 100644 --- a/benchmarks/unichain-rpc.yml +++ b/benchmarks/unichain-rpc.yml @@ -4,8 +4,8 @@ slug: unichain-rpc number: "059" title: Fastest free Unichain RPC, live no-key endpoint latency seo_title: "Fastest free Unichain RPC 2026" -seo_description: "{{best_name}} leads free Unichain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 5 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Unichain RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free Unichain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Unichain RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,35 +14,35 @@ unit: ms higher_is_better: false seo_intro: | - Unichain, Uniswap Labs' OP Stack rollup, fields 5 no-key providers including the house `mainnet.unichain.org`. For a chain this young the gateway coverage is unusually complete, PublicNode, dRPC, 1RPC and Tenderly all sustain no-key probing at our 15-second cadence, so the official endpoint faces a full gateway tier from day one. Three regions, identical probes, stale-head detection. + Unichain, Uniswap Labs' OP Stack rollup, fields 4 no-key providers including the house `mainnet.unichain.org`. For a chain this young the gateway coverage is unusually complete, PublicNode, dRPC and Tenderly all sustain no-key probing at our 15-second cadence, so the official endpoint faces a full gateway tier from day one. Three regions, identical probes, stale-head detection. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Unichain endpoint that sustains continuous probing, 5 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Unichain-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Unichain endpoint that sustains continuous probing, 5 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Unichain-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"unichain\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, 1RPC, Tenderly, Unichain). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"unichain\". Provider coverage: 5 no-key endpoints (PublicNode, dRPC, Tenderly, Unichain). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free Unichain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 5 measured providers." + - "{{best_name}} currently leads free Unichain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." - "{{name:drpc}} ({{p50:drpc}}) treats Unichain like every other chain in the expansion, and that is the point: 10 of 12 long-tail wins on the 3-region average come from routing every probe to a nearby edge, chain age irrelevant." - "The official sequencer-adjacent endpoint has the locational advantage on paper; the region tabs show whether it holds against gateways that terminate at the probe's nearest edge instead of one home region." - "{{name:tenderly}} repeats its long-tail signature here, roughly 330 ms from all three origins at once, while remaining competitive on the majors, the clearest sign its public gateway routes small chains through a single origin." faq: - q: "What is the fastest free Unichain RPC right now?" - a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 5 no-key providers probed every 15 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` 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 Unichain RPCs work without an API key?" - a: "The 5 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Unichain. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 5 providers on this page: PublicNode, dRPC, Tenderly, Unichain. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest Unichain RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is Unichain RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Should I use mainnet.unichain.org or a gateway for Unichain?" a: "Check the region tab nearest your deployment. Chain-official endpoints are typically a single origin, so they can only be close to one of our three probes, while anycast gateways answer everywhere. On the 3-region average the current leader is {{best_name}} at {{best_p50}}; a primary-plus-fallback pair from the top of this page is the resilient default for a chain this young." @@ -68,7 +68,7 @@ providers: - slug: publicnode name: PublicNode tag: Allnodes-operated, 70+ chains, archive on most - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Unichain endpoint." + 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 PublicNode's no-key Unichain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="unichain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="unichain"}) @@ -91,7 +91,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Unichain endpoint." + 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 Unichain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="unichain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="unichain"}) @@ -111,33 +111,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="unichain", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="unichain", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Unichain endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="unichain"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="unichain"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="unichain"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="unichain"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="unichain"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="unichain"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="unichain"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="unichain"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="unichain", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="unichain", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="unichain", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="unichain", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="unichain", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="unichain", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Unichain endpoint." + 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 Unichain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="unichain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="unichain"}) @@ -160,7 +137,7 @@ providers: - slug: unichain-official name: Unichain tag: Uniswap Labs public RPC, Unichain mainnet only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Unichain's no-key Unichain endpoint." + 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 Unichain's no-key Unichain endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="unichain-official", chain="unichain"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="unichain-official", chain="unichain"}) diff --git a/benchmarks/zksync-rpc.yml b/benchmarks/zksync-rpc.yml index 958d6c76..b668823a 100644 --- a/benchmarks/zksync-rpc.yml +++ b/benchmarks/zksync-rpc.yml @@ -4,8 +4,8 @@ slug: zksync-rpc number: "063" title: Fastest free zkSync Era RPC, live no-key endpoint latency seo_title: "Fastest free zkSync RPC 2026" -seo_description: "{{best_name}} leads free zkSync Era RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 15s from 3 regions." -subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public zkSync Era RPC endpoint, audited every 15 seconds from 3 regions. +seo_description: "{{best_name}} leads free zkSync Era RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public zkSync Era RPC endpoint, audited every 60 seconds from 3 regions. category: RPCs status: live @@ -14,35 +14,35 @@ unit: ms higher_is_better: false seo_intro: | - zkSync Era is the only chain in our entire probe matrix with no PublicNode endpoint: both plausible subdomains 404, a genuine rarity for a provider that covers 70+ chains. That leaves dRPC, 1RPC, Tenderly and Matter Labs' own `mainnet.era.zksync.io` answering the identical `eth_getBlockByNumber` probe every 15 seconds from three regions, with stale-head detection against the cross-provider tip. + zkSync Era is the only chain in our entire probe matrix with no PublicNode endpoint: both plausible subdomains 404, a genuine rarity for a provider that covers 70+ chains. That leaves dRPC, Tenderly and Matter Labs' own `mainnet.era.zksync.io` answering the identical `eth_getBlockByNumber` probe every 60 seconds from three regions, with stale-head detection against the cross-provider tip. abstract: | - Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public zkSync Era endpoint that sustains continuous probing, 4 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the zkSync Era-scoped answer with per-region breakdowns as a first-class dimension. + Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public zkSync Era endpoint that sustains continuous probing, 4 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the zkSync Era-scoped answer with per-region breakdowns as a first-class dimension. methodology: - - "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." + - "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs." - "Payload: `{\"jsonrpc\":\"2.0\",\"id\":,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node." - "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), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal." - "Archive depth: every 5 minutes we issue `eth_getBalance` at (head − depth) for depths from Geth's default pruned cap up to 5M blocks, exposing which free endpoints actually serve historical state." - "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, methodology and exclusion rules apply on every chain." - - "Chain scope: every query on this page is pinned to chain=\"zksync\". Provider coverage: 4 no-key endpoints (dRPC, 1RPC, Tenderly, zkSync). Exclusions follow the cluster-wide rules documented on the parent benchmark." + - "Chain scope: every query on this page is pinned to chain=\"zksync\". Provider coverage: 4 no-key endpoints (dRPC, Tenderly, zkSync). Exclusions follow the cluster-wide rules documented on the parent benchmark." findings: - - "{{best_name}} currently leads free zkSync Era RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + - "{{best_name}} currently leads free zkSync Era RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." - "No PublicNode is the structural headline: the near-universal default provider simply does not serve zkSync Era (both candidate subdomains 404), so dapps that template PublicNode URLs per chain need a different answer here." - "{{name:drpc}} ({{p50:drpc}}) picks up the default-provider role instead, with the anycast consistency that wins it 10 of the 12 expansion chains on the 3-region average." - "{{name:tenderly}} runs zkSync through the same single-origin path as the rest of the long tail, a flat ~330 ms from all three regions, despite marketing the chain as a first-class network." faq: - q: "What is the fastest free zkSync Era 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 15 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` 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 zkSync Era RPCs work without an API key?" - a: "The 4 providers on this page: dRPC, 1RPC, Tenderly, zkSync. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." + a: "The 4 providers on this page: dRPC, Tenderly, zkSync. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk." - q: "Does the fastest zkSync Era RPC change by region?" a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate." - q: "How is zkSync Era RPC latency measured here?" - a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." + a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself." - q: "Why is PublicNode not listed for zkSync Era?" a: "Because it does not serve the chain: both plausible PublicNode subdomains returned 404 in our 2026-07-03 verification sweep, making zkSync Era the only chain we probe without a PublicNode endpoint. The bench lists what actually answers, not what coverage pages claim, so the leaderboard has 4 providers and {{best_name}} ({{best_p50}}) currently leads them." @@ -68,7 +68,7 @@ providers: - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key zkSync Era endpoint." + 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 zkSync Era endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zksync"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="zksync"}) @@ -88,33 +88,10 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zksync", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zksync", region="sgp"}[1h]) - - slug: 1rpc - name: 1RPC - tag: Privacy-preserving gateway by Automata Network - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key zkSync Era endpoint." - queries: - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="zksync"}) - p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="zksync"}) - p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="zksync"}) - mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="zksync"}) - success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="zksync"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="zksync"}) - sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="zksync"}) - series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="zksync"}[1h])) - regions: - - region: us-east - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="zksync", region="us-east"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="zksync", region="us-east"}[1h]) - - region: eu-west - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="zksync", region="eu-west"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="zksync", region="eu-west"}[1h]) - - region: ap-southeast - p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="zksync", region="sgp"}) - series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="zksync", region="sgp"}[1h]) - - slug: tenderly name: Tenderly tag: Multi-chain public gateway, no key - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key zkSync Era endpoint." + 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 zkSync Era endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="zksync"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="zksync"}) @@ -137,7 +114,7 @@ providers: - slug: zksync-official name: zkSync tag: Matter Labs public RPC, zkSync Era only - formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to zkSync's no-key zkSync Era endpoint." + 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 zkSync's no-key zkSync Era endpoint." queries: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="zksync-official", chain="zksync"}) p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="zksync-official", chain="zksync"}) diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index 80fb0337..94ac6046 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -78,7 +78,6 @@ func chains() []Chain { Name: "MegaETH", Providers: []Provider{ {Slug: "megaeth-official", Name: "MegaETH Official", URL: envDefault("RPC_URL_MEGAETH_OFFICIAL", "https://mainnet.megaeth.com/rpc")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_MEGAETH_1RPC", "https://public.1rpc.io/megaeth")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_MEGAETH_DRPC", "https://megaeth.drpc.org")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_MEGAETH_TENDERLY", "https://megaeth.gateway.tenderly.co")}, }, @@ -106,7 +105,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_POLYGON_PUBLICNODE", "https://polygon-bor-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_POLYGON_DRPC", "https://polygon.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_POLYGON_1RPC", "https://1rpc.io/matic")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_POLYGON_TENDERLY", "https://gateway.tenderly.co/public/polygon")}, {Slug: "nodies", Name: "Nodies (POKT)", URL: envDefault("RPC_URL_POLYGON_NODIES", "https://polygon-pokt.nodies.app")}, }, @@ -133,7 +131,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_OPTIMISM_PUBLICNODE", "https://optimism-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_OPTIMISM_DRPC", "https://optimism.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_OPTIMISM_1RPC", "https://1rpc.io/op")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_OPTIMISM_TENDERLY", "https://gateway.tenderly.co/public/optimism")}, {Slug: "nodies", Name: "Nodies (POKT)", URL: envDefault("RPC_URL_OPTIMISM_NODIES", "https://op-pokt.nodies.app")}, {Slug: "optimism-official", Name: "Optimism Official", URL: envDefault("RPC_URL_OPTIMISM_OFFICIAL", "https://mainnet.optimism.io")}, @@ -173,7 +170,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_AVALANCHE_PUBLICNODE", "https://avalanche-c-chain-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_AVALANCHE_DRPC", "https://avalanche.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_AVALANCHE_1RPC", "https://1rpc.io/avax/c")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_AVALANCHE_TENDERLY", "https://gateway.tenderly.co/public/avalanche")}, {Slug: "nodies", Name: "Nodies (POKT)", URL: envDefault("RPC_URL_AVALANCHE_NODIES", "https://avax-pokt.nodies.app/ext/bc/C/rpc")}, {Slug: "avalanche-official", Name: "Avalanche Official", URL: envDefault("RPC_URL_AVALANCHE_OFFICIAL", "https://api.avax.network/ext/bc/C/rpc")}, @@ -186,7 +182,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_LINEA_PUBLICNODE", "https://linea-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_LINEA_DRPC", "https://linea.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_LINEA_1RPC", "https://1rpc.io/linea")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_LINEA_TENDERLY", "https://gateway.tenderly.co/public/linea")}, }, }, @@ -198,7 +193,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_SCROLL_PUBLICNODE", "https://scroll-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_SCROLL_DRPC", "https://scroll.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_SCROLL_1RPC", "https://1rpc.io/scroll")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_SCROLL_TENDERLY", "https://gateway.tenderly.co/public/scroll-mainnet")}, }, }, @@ -209,7 +203,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_MANTLE_PUBLICNODE", "https://mantle-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_MANTLE_DRPC", "https://mantle.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_MANTLE_1RPC", "https://1rpc.io/mantle")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_MANTLE_TENDERLY", "https://gateway.tenderly.co/public/mantle")}, }, }, @@ -220,7 +213,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_SONIC_PUBLICNODE", "https://sonic-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_SONIC_DRPC", "https://sonic.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_SONIC_1RPC", "https://1rpc.io/sonic")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_SONIC_TENDERLY", "https://gateway.tenderly.co/public/sonic")}, {Slug: "lava", Name: "Lava Network", URL: envDefault("RPC_URL_SONIC_LAVA", "https://sonic.lava.build")}, {Slug: "sonic-official", Name: "Sonic Labs Official", URL: envDefault("RPC_URL_SONIC_OFFICIAL", "https://rpc.soniclabs.com")}, @@ -233,7 +225,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_GNOSIS_PUBLICNODE", "https://gnosis-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_GNOSIS_DRPC", "https://gnosis.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_GNOSIS_1RPC", "https://1rpc.io/gnosis")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_GNOSIS_TENDERLY", "https://gateway.tenderly.co/public/gnosis")}, {Slug: "nodies", Name: "Nodies (POKT)", URL: envDefault("RPC_URL_GNOSIS_NODIES", "https://gnosis-pokt.nodies.app")}, {Slug: "gnosis-official", Name: "Gnosis Official", URL: envDefault("RPC_URL_GNOSIS_OFFICIAL", "https://rpc.gnosischain.com")}, @@ -246,7 +237,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_CELO_PUBLICNODE", "https://celo-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_CELO_DRPC", "https://celo.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_CELO_1RPC", "https://1rpc.io/celo")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_CELO_TENDERLY", "https://gateway.tenderly.co/public/celo")}, {Slug: "celo-official", Name: "Celo Official (Forno)", URL: envDefault("RPC_URL_CELO_OFFICIAL", "https://forno.celo.org")}, }, @@ -282,7 +272,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_MOONBEAM_PUBLICNODE", "https://moonbeam-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_MOONBEAM_DRPC", "https://moonbeam.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_MOONBEAM_1RPC", "https://1rpc.io/glmr")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_MOONBEAM_TENDERLY", "https://gateway.tenderly.co/public/moonbeam")}, {Slug: "moonbeam-official", Name: "Moonbeam Official", URL: envDefault("RPC_URL_MOONBEAM_OFFICIAL", "https://rpc.api.moonbeam.network")}, }, @@ -306,7 +295,6 @@ func chains() []Chain { Name: "zkSync Era", Providers: []Provider{ {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_ZKSYNC_DRPC", "https://zksync.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_ZKSYNC_1RPC", "https://1rpc.io/zksync2-era")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_ZKSYNC_TENDERLY", "https://gateway.tenderly.co/public/zksync")}, {Slug: "zksync-official", Name: "zkSync Official", URL: envDefault("RPC_URL_ZKSYNC_OFFICIAL", "https://mainnet.era.zksync.io")}, }, @@ -320,7 +308,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_CRONOS_PUBLICNODE", "https://cronos-evm-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_CRONOS_DRPC", "https://cronos.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_CRONOS_1RPC", "https://1rpc.io/cro")}, {Slug: "cronos-official", Name: "Cronos Official", URL: envDefault("RPC_URL_CRONOS_OFFICIAL", "https://evm.cronos.org")}, }, }, @@ -342,7 +329,6 @@ func chains() []Chain { Providers: []Provider{ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_UNICHAIN_PUBLICNODE", "https://unichain-rpc.publicnode.com")}, {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_UNICHAIN_DRPC", "https://unichain.drpc.org")}, - {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_UNICHAIN_1RPC", "https://1rpc.io/unichain")}, {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_UNICHAIN_TENDERLY", "https://gateway.tenderly.co/public/unichain")}, {Slug: "unichain-official", Name: "Unichain Official", URL: envDefault("RPC_URL_UNICHAIN_OFFICIAL", "https://mainnet.unichain.org")}, }, diff --git a/harnesses/rpc-capabilities/cmd/script/probe.go b/harnesses/rpc-capabilities/cmd/script/probe.go index 2e5a3272..620eee81 100644 --- a/harnesses/rpc-capabilities/cmd/script/probe.go +++ b/harnesses/rpc-capabilities/cmd/script/probe.go @@ -14,7 +14,13 @@ import ( ) const ( - probeInterval = 30 * time.Second + // 60s (was 30s): the cluster probes ~23 chains per provider from ONE + // IP per region. Keyless per-IP budgets (1RPC daily cap, dRPC CU/s) + // were saturated by our AGGREGATE load, publishing throttle-induced + // error rates as "reliability" — measuring our own footprint, not the + // provider. 60s halves per-IP pressure; sample size stays ample + // (1440/day/region). + probeInterval = 60 * time.Second probeTimeout = 8 * time.Second // staleBlockGap: a returned block more than this far behind the // cross-provider tip is classified as `stale`. 20 blocks ≈ 4 min