diff --git a/benchmarks/abstract-rpc.yml b/benchmarks/abstract-rpc.yml new file mode 100644 index 00000000..d07924cd --- /dev/null +++ b/benchmarks/abstract-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 125 + +slug: abstract-rpc +number: "125" +title: Fastest free Abstract RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Abstract RPC 2026" +seo_description: "{{best_name}} leads free Abstract RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public Abstract EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Abstract is a ZK Stack validium L2 (chain 2741) built by the Abstract Foundation, optimised for consumer applications and NFTs, ETH gas token, ~2 s block cadence, ZK proof settlement onto Ethereum. The 2026-08-02 audit confirms 3 clean keyless providers: the Abstract Foundation official endpoint (api.mainnet.abs.xyz), dRPC (abstract.drpc.org), and Thirdweb (abstract.rpc.thirdweb.com). Excluded: Ankr (no abstract route on public tier), Alchemy (key required), Infura (key required), QuickNode (key required). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Abstract. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Abstract endpoint that sustains continuous probing, 3 providers + at launch, every 60 seconds, from us-east, eu-west and Singapore. The + harness classifies every response (ok / http_err / jsonrpc_err / stale + / timeout) with an Abstract-scaled staleness gap (20 blocks + at Abstract's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Abstract-scoped answer with per-region breakdowns as a first-class + dimension. + +methodology: + - "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 rotating id defeats edge caches that would answer a bare head query 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 with a parsable hex block number), `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](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." + - "Chain scope: every query on this page is pinned to `chain=\"abstract\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Abstract RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free Abstract RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Abstract RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: the Abstract Foundation official endpoint (api.mainnet.abs.xyz), dRPC (abstract.drpc.org), and Thirdweb (abstract.rpc.thirdweb.com). Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion." + - q: "Does the fastest Abstract RPC change by region?" + a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." + - q: "How is Abstract RPC latency measured here, technically?" + a: "One identical `eth_getBlockByNumber(\"latest\", false)` POST every 60 seconds against each provider from each of 3 regions, using the same plain HTTP client the rest of the RPC cluster uses. 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." + +source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities + +prometheus: + window: 24h + freshness_metric: rpc_latency_milliseconds + +rank_matrix_query: avg by (provider, region) (ocb:rpc_latency_milliseconds:p50_24h{chain="abstract"}) + +dimensions: + region: + - { value: all, label: All regions } + - { value: us-east, label: US-East } + - { value: eu-west, label: EU-West } + - { value: sgp, label: Singapore } + +providers: + - slug: abstract-official + name: Abstract Foundation + tag: Abstract Foundation official public RPC + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Abstract Foundation's no-key abstract RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="abstract-official", chain="abstract"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="abstract-official", chain="abstract"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="abstract-official", chain="abstract"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="abstract-official", chain="abstract"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="abstract-official", chain="abstract"}) / sum(ocb:rpc_call:rate_24h{provider="abstract-official", chain="abstract"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="abstract-official", chain="abstract"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="abstract-official", chain="abstract"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="abstract-official", chain="abstract", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="abstract-official", chain="abstract", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="abstract-official", chain="abstract", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="abstract-official", chain="abstract", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="abstract-official", chain="abstract", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="abstract-official", chain="abstract", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Abstract node pool + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key abstract RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="abstract"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="abstract"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="abstract"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="abstract"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="abstract"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="abstract"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="abstract"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="abstract"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="abstract", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="abstract", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="abstract", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="abstract", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="abstract", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="abstract", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Abstract + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key abstract RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="abstract"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="abstract"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="abstract"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="abstract"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="abstract"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="abstract"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="abstract"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="abstract"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="abstract", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="abstract", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="abstract", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="abstract", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="abstract", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="abstract", region="sgp"}[1h]) diff --git a/benchmarks/apechain-rpc.yml b/benchmarks/apechain-rpc.yml new file mode 100644 index 00000000..c4e09ba4 --- /dev/null +++ b/benchmarks/apechain-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 126 + +slug: apechain-rpc +number: "126" +title: Fastest free ApeChain RPC, live no-key EVM endpoint latency +seo_title: "Fastest free ApeChain RPC 2026" +seo_description: "{{best_name}} leads free ApeChain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public ApeChain EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + ApeChain is an Arbitrum Orbit L3 (chain 33139) operated by Yuga Labs / ApeDAO, dedicated to the APE ecosystem, APE gas token, ~250 ms block cadence, settlement onto Arbitrum One. The 2026-08-02 audit confirms 3 clean keyless providers: the ApeChain official endpoint (rpc.apechain.com/http), dRPC (apechain.drpc.org), and Thirdweb (apechain.rpc.thirdweb.com). Excluded: Alchemy (key required), QuickNode (key required), Infura (no apechain route). + +abstract: | + Per-chain member of the RPC latency cluster, extended to ApeChain. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + ApeChain endpoint that sustains continuous probing, 3 providers + at launch, every 60 seconds, from us-east, eu-west and Singapore. The + harness classifies every response (ok / http_err / jsonrpc_err / stale + / timeout) with an ApeChain-scaled staleness gap (20 blocks + at ApeChain's ~250 ms block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + ApeChain-scoped answer with per-region breakdowns as a first-class + dimension. + +methodology: + - "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 rotating id defeats edge caches that would answer a bare head query 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 with a parsable hex block number), `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](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." + - "Chain scope: every query on this page is pinned to `chain=\"apechain\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free ApeChain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free ApeChain RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which ApeChain RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: the ApeChain official endpoint (rpc.apechain.com/http), dRPC (apechain.drpc.org), and Thirdweb (apechain.rpc.thirdweb.com). Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion." + - q: "Does the fastest ApeChain RPC change by region?" + a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." + - q: "How is ApeChain RPC latency measured here, technically?" + a: "One identical `eth_getBlockByNumber(\"latest\", false)` POST every 60 seconds against each provider from each of 3 regions, using the same plain HTTP client the rest of the RPC cluster uses. 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." + +source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities + +prometheus: + window: 24h + freshness_metric: rpc_latency_milliseconds + +rank_matrix_query: avg by (provider, region) (ocb:rpc_latency_milliseconds:p50_24h{chain="apechain"}) + +dimensions: + region: + - { value: all, label: All regions } + - { value: us-east, label: US-East } + - { value: eu-west, label: EU-West } + - { value: sgp, label: Singapore } + +providers: + - slug: apechain-official + name: ApeChain + tag: ApeChain official public RPC + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to ApeChain's no-key apechain RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="apechain-official", chain="apechain"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="apechain-official", chain="apechain"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="apechain-official", chain="apechain"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="apechain-official", chain="apechain"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="apechain-official", chain="apechain"}) / sum(ocb:rpc_call:rate_24h{provider="apechain-official", chain="apechain"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="apechain-official", chain="apechain"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="apechain-official", chain="apechain"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="apechain-official", chain="apechain", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="apechain-official", chain="apechain", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="apechain-official", chain="apechain", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="apechain-official", chain="apechain", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="apechain-official", chain="apechain", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="apechain-official", chain="apechain", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to ApeChain node pool + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key apechain RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="apechain"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="apechain"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="apechain"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="apechain"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="apechain"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="apechain"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="apechain"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="apechain"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="apechain", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="apechain", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="apechain", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="apechain", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="apechain", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="apechain", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for ApeChain + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key apechain RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="apechain"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="apechain"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="apechain"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="apechain"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="apechain"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="apechain"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="apechain"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="apechain"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="apechain", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="apechain", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="apechain", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="apechain", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="apechain", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="apechain", region="sgp"}[1h]) diff --git a/benchmarks/cyber-rpc.yml b/benchmarks/cyber-rpc.yml new file mode 100644 index 00000000..09aa9296 --- /dev/null +++ b/benchmarks/cyber-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 129 + +slug: cyber-rpc +number: "129" +title: Fastest free Cyber RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Cyber Network RPC 2026" +seo_description: "{{best_name}} leads free Cyber Network RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public Cyber Network EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Cyber Network is an OP Stack L2 (chain 7560) operated by Cyber, a social-layer chain for SocialFi and Web3 social graphs, ETH gas token, ~2 s block cadence, blob calldata settlement on Ethereum. The 2026-08-02 audit confirms 3 clean keyless providers: Cyber official (rpc.cyber.co), AltLayer (cyber.alt.technology), and Thirdweb (7560.rpc.thirdweb.com). Excluded: dRPC (no cyber route), Blast API (no listing), Alchemy (key required). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Cyber Network. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Cyber Network endpoint that sustains continuous probing, 3 providers + at launch, every 60 seconds, from us-east, eu-west and Singapore. The + harness classifies every response (ok / http_err / jsonrpc_err / stale + / timeout) with a Cyber-scaled staleness gap (20 blocks + at Cyber's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Cyber-scoped answer with per-region breakdowns as a first-class + dimension. + +methodology: + - "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 rotating id defeats edge caches that would answer a bare head query 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 with a parsable hex block number), `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](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." + - "Chain scope: every query on this page is pinned to `chain=\"cyber\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Cyber Network RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free Cyber Network RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Cyber Network RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: Cyber official (rpc.cyber.co), AltLayer (cyber.alt.technology), and Thirdweb (7560.rpc.thirdweb.com, chain-ID URL). Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion." + - q: "Does the fastest Cyber Network RPC change by region?" + a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." + - q: "How is Cyber Network RPC latency measured here, technically?" + a: "One identical `eth_getBlockByNumber(\"latest\", false)` POST every 60 seconds against each provider from each of 3 regions, using the same plain HTTP client the rest of the RPC cluster uses. 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." + +source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities + +prometheus: + window: 24h + freshness_metric: rpc_latency_milliseconds + +rank_matrix_query: avg by (provider, region) (ocb:rpc_latency_milliseconds:p50_24h{chain="cyber"}) + +dimensions: + region: + - { value: all, label: All regions } + - { value: us-east, label: US-East } + - { value: eu-west, label: EU-West } + - { value: sgp, label: Singapore } + +providers: + - slug: cyber-official + name: Cyber Network + tag: Cyber Network official public RPC + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Cyber Network's no-key cyber RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cyber-official", chain="cyber"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="cyber-official", chain="cyber"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="cyber-official", chain="cyber"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="cyber-official", chain="cyber"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="cyber-official", chain="cyber"}) / sum(ocb:rpc_call:rate_24h{provider="cyber-official", chain="cyber"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="cyber-official", chain="cyber"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="cyber-official", chain="cyber"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cyber-official", chain="cyber", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="cyber-official", chain="cyber", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cyber-official", chain="cyber", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="cyber-official", chain="cyber", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cyber-official", chain="cyber", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="cyber-official", chain="cyber", region="sgp"}[1h]) + + - slug: altlayer + name: AltLayer + tag: AltLayer RPC node for Cyber Network + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to AltLayer's no-key cyber RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="altlayer", chain="cyber"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="altlayer", chain="cyber"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="altlayer", chain="cyber"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="altlayer", chain="cyber"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="altlayer", chain="cyber"}) / sum(ocb:rpc_call:rate_24h{provider="altlayer", chain="cyber"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="altlayer", chain="cyber"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="altlayer", chain="cyber"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="altlayer", chain="cyber", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="altlayer", chain="cyber", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="altlayer", chain="cyber", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="altlayer", chain="cyber", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="altlayer", chain="cyber", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="altlayer", chain="cyber", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Cyber Network + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key cyber RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="cyber"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="cyber"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="cyber"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="cyber"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="cyber"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="cyber"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="cyber"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="cyber"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="cyber", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="cyber", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="cyber", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="cyber", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="cyber", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="cyber", region="sgp"}[1h]) diff --git a/benchmarks/lisk-rpc.yml b/benchmarks/lisk-rpc.yml new file mode 100644 index 00000000..8ed450ab --- /dev/null +++ b/benchmarks/lisk-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 127 + +slug: lisk-rpc +number: "127" +title: Fastest free Lisk RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Lisk RPC 2026" +seo_description: "{{best_name}} leads free Lisk RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public Lisk EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Lisk is an OP Stack L2 (chain 1135) operated by Onchain Foundation (formerly Lisk Foundation), focused on emerging-market Web3 adoption, ETH gas token, ~2 s block cadence, blob calldata settlement on Ethereum. The 2026-08-02 audit confirms 3 clean keyless providers: the Lisk official endpoint (rpc.api.lisk.com), dRPC (lisk.drpc.org), and Thirdweb (lisk.rpc.thirdweb.com). Excluded: Blast API (no lisk route), Alchemy (key required), Infura (no lisk route), QuickNode (key required). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Lisk. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Lisk endpoint that sustains continuous probing, 3 providers + at launch, every 60 seconds, from us-east, eu-west and Singapore. The + harness classifies every response (ok / http_err / jsonrpc_err / stale + / timeout) with a Lisk-scaled staleness gap (20 blocks + at Lisk's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Lisk-scoped answer with per-region breakdowns as a first-class + dimension. + +methodology: + - "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 rotating id defeats edge caches that would answer a bare head query 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 with a parsable hex block number), `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](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." + - "Chain scope: every query on this page is pinned to `chain=\"lisk\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Lisk RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free Lisk RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Lisk RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: the Lisk official endpoint (rpc.api.lisk.com), dRPC (lisk.drpc.org), and Thirdweb (lisk.rpc.thirdweb.com). Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion." + - q: "Does the fastest Lisk RPC change by region?" + a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." + - q: "How is Lisk RPC latency measured here, technically?" + a: "One identical `eth_getBlockByNumber(\"latest\", false)` POST every 60 seconds against each provider from each of 3 regions, using the same plain HTTP client the rest of the RPC cluster uses. 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." + +source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities + +prometheus: + window: 24h + freshness_metric: rpc_latency_milliseconds + +rank_matrix_query: avg by (provider, region) (ocb:rpc_latency_milliseconds:p50_24h{chain="lisk"}) + +dimensions: + region: + - { value: all, label: All regions } + - { value: us-east, label: US-East } + - { value: eu-west, label: EU-West } + - { value: sgp, label: Singapore } + +providers: + - slug: lisk-official + name: Lisk + tag: Lisk official public RPC + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Lisk's no-key lisk RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lisk-official", chain="lisk"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lisk-official", chain="lisk"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="lisk-official", chain="lisk"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="lisk-official", chain="lisk"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="lisk-official", chain="lisk"}) / sum(ocb:rpc_call:rate_24h{provider="lisk-official", chain="lisk"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="lisk-official", chain="lisk"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="lisk-official", chain="lisk"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lisk-official", chain="lisk", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="lisk-official", chain="lisk", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lisk-official", chain="lisk", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="lisk-official", chain="lisk", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lisk-official", chain="lisk", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="lisk-official", chain="lisk", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Lisk node pool + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key lisk RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="lisk"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="lisk"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="lisk"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="lisk"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="lisk"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="lisk"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="lisk"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="lisk"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="lisk", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="lisk", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="lisk", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="lisk", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="lisk", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="lisk", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Lisk + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key lisk RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="lisk"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="lisk"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="lisk"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="lisk"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="lisk"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="lisk"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="lisk"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="lisk"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="lisk", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="lisk", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="lisk", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="lisk", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="lisk", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="lisk", region="sgp"}[1h]) diff --git a/benchmarks/swellchain-rpc.yml b/benchmarks/swellchain-rpc.yml new file mode 100644 index 00000000..be5e4490 --- /dev/null +++ b/benchmarks/swellchain-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 128 + +slug: swellchain-rpc +number: "128" +title: Fastest free Swellchain RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Swellchain RPC 2026" +seo_description: "{{best_name}} leads free Swellchain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 3 no-key providers measured every 60s from 3 regions." +subtitle: HTTP round-trip latency for the `eth_getBlockByNumber(\"latest\", false)` method against every free, no-key public Swellchain EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Swellchain is an OP Stack L2 (chain 1923) operated by Swell Network, the restaking-native rollup built on EigenLayer, ETH gas token, ~2 s block cadence, blob calldata settlement on Ethereum. The 2026-08-02 audit confirms 3 clean keyless providers: Ankr (rpc.ankr.com/swell), Sentio (swell-mainnet.rpc.sentio.xyz), and Thirdweb (1923.rpc.thirdweb.com). Excluded: official alt.technology endpoint (401 Unauthorized without key), dRPC (no swell route), Alchemy (key required). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Swellchain. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Swellchain endpoint that sustains continuous probing, 3 providers + at launch, every 60 seconds, from us-east, eu-west and Singapore. The + harness classifies every response (ok / http_err / jsonrpc_err / stale + / timeout) with a Swellchain-scaled staleness gap (20 blocks + at Swellchain's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Swellchain-scoped answer with per-region breakdowns as a first-class + dimension. + +methodology: + - "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 rotating id defeats edge caches that would answer a bare head query 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 with a parsable hex block number), `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](https://openchainbench.com/benchmarks/rpc-capabilities) benchmark; the identical harness, cadence and exclusion rules apply on every chain." + - "Chain scope: every query on this page is pinned to `chain=\"swellchain\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Swellchain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free Swellchain RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Swellchain RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: Ankr (rpc.ankr.com/swell), Sentio (swell-mainnet.rpc.sentio.xyz), and Thirdweb (1923.rpc.thirdweb.com). The official Swell alt.technology endpoint requires authorization. Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion." + - q: "Does the fastest Swellchain RPC change by region?" + a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin; pick the one closest to where your requests originate." + - q: "How is Swellchain RPC latency measured here, technically?" + a: "One identical `eth_getBlockByNumber(\"latest\", false)` POST every 60 seconds against each provider from each of 3 regions, using the same plain HTTP client the rest of the RPC cluster uses. 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." + +source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities + +prometheus: + window: 24h + freshness_metric: rpc_latency_milliseconds + +rank_matrix_query: avg by (provider, region) (ocb:rpc_latency_milliseconds:p50_24h{chain="swellchain"}) + +dimensions: + region: + - { value: all, label: All regions } + - { value: us-east, label: US-East } + - { value: eu-west, label: EU-West } + - { value: sgp, label: Singapore } + +providers: + - slug: ankr + name: Ankr + tag: Ankr public RPC gateway for Swellchain + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Ankr's no-key swellchain RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="swellchain"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="ankr", chain="swellchain"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="ankr", chain="swellchain"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="ankr", chain="swellchain"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="ankr", chain="swellchain"}) / sum(ocb:rpc_call:rate_24h{provider="ankr", chain="swellchain"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="ankr", chain="swellchain"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="swellchain"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="swellchain", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="swellchain", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="swellchain", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="swellchain", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="swellchain", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="swellchain", region="sgp"}[1h]) + + - slug: sentio + name: Sentio + tag: Sentio RPC node for Swellchain + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Sentio's no-key swellchain RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sentio", chain="swellchain"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="sentio", chain="swellchain"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="sentio", chain="swellchain"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="sentio", chain="swellchain"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="sentio", chain="swellchain"}) / sum(ocb:rpc_call:rate_24h{provider="sentio", chain="swellchain"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="sentio", chain="swellchain"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="sentio", chain="swellchain"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sentio", chain="swellchain", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="sentio", chain="swellchain", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sentio", chain="swellchain", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="sentio", chain="swellchain", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sentio", chain="swellchain", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="sentio", chain="swellchain", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Swellchain + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber(\"latest\", false)` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Thirdweb's no-key swellchain RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="swellchain"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="swellchain"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="swellchain"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="swellchain"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="swellchain"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="swellchain"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="swellchain"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="swellchain"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="swellchain", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="swellchain", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="swellchain", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="swellchain", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="swellchain", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="swellchain", region="sgp"}[1h]) diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index 2c3ed713..51ee8b47 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -711,6 +711,76 @@ func chains() []Chain { {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_ZORA_THIRDWEB", "https://zora.rpc.thirdweb.com")}, }, }, + // 2026-08-02 audit. Abstract ZK Stack (chain 2741). 3 clean keyless + // providers. Live-verified: abstract-official (api.mainnet.abs.xyz), + // drpc (abstract.drpc.org), thirdweb (abstract.rpc.thirdweb.com). + // Excluded: Ankr (no abstract route), Alchemy (key required), + // Infura (key required), QuickNode (key required). + { + Slug: "abstract", + Name: "Abstract", + Providers: []Provider{ + {Slug: "abstract-official", Name: "Abstract Foundation", URL: envDefault("RPC_URL_ABSTRACT_OFFICIAL", "https://api.mainnet.abs.xyz")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_ABSTRACT_DRPC", "https://abstract.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_ABSTRACT_THIRDWEB", "https://abstract.rpc.thirdweb.com")}, + }, + }, + // 2026-08-02 audit. ApeChain Arbitrum Orbit L3 (chain 33139). 3 clean + // keyless providers. Live-verified: apechain-official + // (rpc.apechain.com/http), drpc (apechain.drpc.org), thirdweb + // (apechain.rpc.thirdweb.com). Excluded: Alchemy (key required), + // QuickNode (key required), Infura (no apechain route). + { + Slug: "apechain", + Name: "ApeChain", + Providers: []Provider{ + {Slug: "apechain-official", Name: "ApeChain", URL: envDefault("RPC_URL_APECHAIN_OFFICIAL", "https://rpc.apechain.com/http")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_APECHAIN_DRPC", "https://apechain.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_APECHAIN_THIRDWEB", "https://apechain.rpc.thirdweb.com")}, + }, + }, + // 2026-08-02 audit. Lisk OP Stack L2 (chain 1135). 3 clean keyless + // providers. Live-verified: lisk-official (rpc.api.lisk.com), + // drpc (lisk.drpc.org), thirdweb (lisk.rpc.thirdweb.com). Excluded: + // Blast API (no lisk route), Alchemy (key required), Infura (no lisk + // route), QuickNode (key required). + { + Slug: "lisk", + Name: "Lisk", + Providers: []Provider{ + {Slug: "lisk-official", Name: "Lisk", URL: envDefault("RPC_URL_LISK_OFFICIAL", "https://rpc.api.lisk.com")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_LISK_DRPC", "https://lisk.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_LISK_THIRDWEB", "https://lisk.rpc.thirdweb.com")}, + }, + }, + // 2026-08-02 audit. Swellchain OP Stack L2 (chain 1923). 3 clean + // keyless providers. Live-verified: ankr (rpc.ankr.com/swell), sentio + // (swell-mainnet.rpc.sentio.xyz), thirdweb (1923.rpc.thirdweb.com). + // Excluded: official alt.technology endpoint (401 without key), + // drpc (no swell route), Alchemy (key required). + { + Slug: "swellchain", + Name: "Swellchain", + Providers: []Provider{ + {Slug: "ankr", Name: "Ankr", URL: envDefault("RPC_URL_SWELLCHAIN_ANKR", "https://rpc.ankr.com/swell")}, + {Slug: "sentio", Name: "Sentio", URL: envDefault("RPC_URL_SWELLCHAIN_SENTIO", "https://swell-mainnet.rpc.sentio.xyz")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_SWELLCHAIN_THIRDWEB", "https://1923.rpc.thirdweb.com")}, + }, + }, + // 2026-08-02 audit. Cyber Network OP Stack L2 (chain 7560). 3 clean + // keyless providers. Live-verified: cyber-official (rpc.cyber.co), + // altlayer (cyber.alt.technology), thirdweb (7560.rpc.thirdweb.com). + // Excluded: drpc (no cyber route), Blast API (no listing), + // Alchemy (key required). + { + Slug: "cyber", + Name: "Cyber", + Providers: []Provider{ + {Slug: "cyber-official", Name: "Cyber Network", URL: envDefault("RPC_URL_CYBER_OFFICIAL", "https://rpc.cyber.co")}, + {Slug: "altlayer", Name: "AltLayer", URL: envDefault("RPC_URL_CYBER_ALTLAYER", "https://cyber.alt.technology")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_CYBER_THIRDWEB", "https://7560.rpc.thirdweb.com")}, + }, + }, } filter := strings.TrimSpace(os.Getenv("OCB_CHAINS")) diff --git a/public/logos/abstract.webp b/public/logos/abstract.webp new file mode 100644 index 00000000..d0dbf519 Binary files /dev/null and b/public/logos/abstract.webp differ diff --git a/public/logos/altlayer.webp b/public/logos/altlayer.webp new file mode 100644 index 00000000..07245223 Binary files /dev/null and b/public/logos/altlayer.webp differ diff --git a/public/logos/apechain.webp b/public/logos/apechain.webp new file mode 100644 index 00000000..dc839c4a Binary files /dev/null and b/public/logos/apechain.webp differ diff --git a/public/logos/cyber.webp b/public/logos/cyber.webp new file mode 100644 index 00000000..b7a2e3dc Binary files /dev/null and b/public/logos/cyber.webp differ diff --git a/public/logos/kava.png b/public/logos/kava.png new file mode 100644 index 00000000..c3a0556a Binary files /dev/null and b/public/logos/kava.png differ diff --git a/public/logos/lisk.webp b/public/logos/lisk.webp new file mode 100644 index 00000000..83f18fde Binary files /dev/null and b/public/logos/lisk.webp differ diff --git a/public/logos/sentio.png b/public/logos/sentio.png new file mode 100644 index 00000000..ff2154ef Binary files /dev/null and b/public/logos/sentio.png differ diff --git a/public/logos/swellchain.webp b/public/logos/swellchain.webp new file mode 100644 index 00000000..637001ad Binary files /dev/null and b/public/logos/swellchain.webp differ diff --git a/public/logos/zora.webp b/public/logos/zora.webp new file mode 100644 index 00000000..26492620 Binary files /dev/null and b/public/logos/zora.webp differ diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts index 2863429d..49e0d387 100644 --- a/src/data/provider-registry.ts +++ b/src/data/provider-registry.ts @@ -1913,6 +1913,42 @@ export const PROVIDER_REGISTRY: Record = { "Zora Network's official public RPC (rpc.zora.energy) for the OP Stack rollup dedicated to NFT minting and creative media on-chain (chain 7777777). Standard EVM JSON-RPC, keyless, rate-limited per IP.", twitter: "@ourzora", }, + "abstract-official": { + url: "https://abs.xyz", + description: + "Abstract Foundation's official public RPC (api.mainnet.abs.xyz) for the ZK Stack validium L2 dedicated to consumer applications and NFTs (chain 2741). Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@abstractchain", + }, + "apechain-official": { + url: "https://apechain.com", + description: + "ApeChain's official public RPC (rpc.apechain.com/http) for the Arbitrum Orbit L3 operated by Yuga Labs / ApeDAO, APE gas token (chain 33139). Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@apecoin", + }, + "lisk-official": { + url: "https://lisk.com", + description: + "Lisk's official public RPC (rpc.api.lisk.com) for the OP Stack L2 focused on emerging-market Web3 adoption (chain 1135). Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@LiskHQ", + }, + sentio: { + url: "https://app.sentio.xyz", + description: + "Sentio is a blockchain data and RPC infrastructure provider. Their public RPC node (swell-mainnet.rpc.sentio.xyz) supports Swellchain (chain 1923) without an API key.", + twitter: "@sentioxyz", + }, + altlayer: { + url: "https://altlayer.io", + description: + "AltLayer is a restaked rollup infrastructure provider offering managed RPC nodes for OP Stack and Arbitrum chains. Their public endpoint (cyber.alt.technology) supports Cyber Network (chain 7560) without an API key.", + twitter: "@alt_layer", + }, + "cyber-official": { + url: "https://cyber.co", + description: + "Cyber Network's official public RPC (rpc.cyber.co) for the OP Stack L2 dedicated to SocialFi and Web3 social graphs (chain 7560). Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@cyberconnecthq", + }, }; /** diff --git a/src/lib/chains.ts b/src/lib/chains.ts index 7182fc26..424fb9a2 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -21,7 +21,7 @@ import { export { CHAIN_SLUG_ALIASES, canonicalChainSlug }; -export type ChainCategory = "L1" | "L2"; +export type ChainCategory = "L1" | "L2" | "L3"; export type ChainEntry = { slug: string; @@ -445,6 +445,46 @@ export const CHAINS: ChainEntry[] = [ description: "OP Stack rollup (chain 7777777) operated by Zora Network, optimised for NFT minting and creative media on-chain, ~2 s sequencer cadence, ETH gas, blob calldata settlement on Ethereum.", }, + { + slug: "abstract", + label: "Abstract", + category: "L2", + nativeSymbol: "ETH", + description: + "ZK Stack validium L2 (chain 2741) built by the Abstract Foundation, optimised for consumer applications and NFTs, ETH gas token, ~2 s block cadence, ZK proof settlement onto Ethereum.", + }, + { + slug: "apechain", + label: "ApeChain", + category: "L3", + nativeSymbol: "APE", + description: + "Arbitrum Orbit L3 (chain 33139) operated by Yuga Labs / ApeDAO, dedicated to the APE ecosystem, APE gas token, ~250 ms block cadence, settlement onto Arbitrum One.", + }, + { + slug: "lisk", + label: "Lisk", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack L2 (chain 1135) operated by Onchain Foundation (formerly Lisk Foundation), focused on emerging-market Web3 adoption, ETH gas token, ~2 s block cadence, blob calldata settlement on Ethereum.", + }, + { + slug: "swellchain", + label: "Swellchain", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack L2 (chain 1923) operated by Swell Network, the restaking-native rollup built on EigenLayer, ETH gas token, ~2 s block cadence, blob calldata settlement on Ethereum.", + }, + { + slug: "cyber", + label: "Cyber", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack L2 (chain 7560) operated by Cyber, a social-layer chain for SocialFi and Web3 social graphs, ETH gas token, ~2 s block cadence, blob calldata settlement on Ethereum.", + }, ]; export const CHAIN_BY_SLUG = new Map(CHAINS.map((c) => [c.slug, c])); diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts index 331da077..b12ec338 100644 --- a/src/lib/logo-manifest.ts +++ b/src/lib/logo-manifest.ts @@ -57,6 +57,17 @@ const RAW: Record = { immutable: "/logos/immutable.png", stakeme: "/logos/stakeme.jpg", + // RPC wave-2 chains (2026-08-02, benches 121-129) + kava: "/logos/kava.png", + zora: "/logos/zora.webp", + abstract: "/logos/abstract.webp", + apechain: "/logos/apechain.webp", + lisk: "/logos/lisk.webp", + swellchain: "/logos/swellchain.webp", + cyber: "/logos/cyber.webp", + altlayer: "/logos/altlayer.webp", + sentio: "/logos/sentio.png", + // ─── Providers ─── mobula: "/logos/mobula.svg", codex: "/logos/codex.svg", @@ -476,6 +487,13 @@ const ALIASES: Record = { "cronos-official": "cronos", "fraxtal-official": "fraxtal", "soneium-official": "soneium", + // RPC wave-2 chains (2026-08-02, benches 121-129) + "kava-official": "kava", + "zora-official": "zora", + "abstract-official": "abstract", + "apechain-official": "apechain", + "lisk-official": "lisk", + "cyber-official": "cyber", };