diff --git a/benchmarks/abstract-rpc.yml b/benchmarks/abstract-rpc.yml new file mode 100644 index 00000000..8cd0aeda --- /dev/null +++ b/benchmarks/abstract-rpc.yml @@ -0,0 +1,132 @@ +# OpenChainBench. Bench № 123 + +slug: abstract-rpc +number: "123" +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 Layer 2 (chain 2741) built by Abstract Labs and home to the Pudgy Penguins ecosystem, ETH gas token, ~1 s block cadence, ZK proof settlement on Ethereum. 3 clean keyless providers live-verified at launch: the Abstract official endpoint (api.mainnet.abs.xyz), dRPC, and Thirdweb. Excluded by the launch audit: LeoRPC (timeout), PublicNode (no abstract subdomain), Tenderly (no abstract route), OnFinality (no listing), Blast API (discontinued). + +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 a default staleness gap (20 blocks). 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, no API key. Non-cacheable: rotating id defeats edge caches." + - "Latency: client-side round-trip delta in ms, histogram buckets 50ms to 10s, percentiles via quantile_over_time over 24h." + - "Classification: ok / http_err / jsonrpc_err / stale (>20 blocks behind tip) / timeout." + - "Chain scope: every query 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." + - q: "Which Abstract RPCs work without an API key?" + a: "3 endpoints at launch: Abstract official (api.mainnet.abs.xyz), dRPC, Thirdweb. All live-verified with eth_getBlockByNumber returning a parsable response." + - q: "Does the fastest Abstract RPC change by region?" + a: "Often. The region tabs re-scope every number to a single origin; pick the one closest to your deployment." + +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 Labs + tag: Abstract chain official public RPC + formula: "50th percentile over 24h of client-side round-trip latency (ms) for eth_getBlockByNumber(latest,false) every 60s from 3 regions to Abstract Labs's no-key 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 for Abstract + formula: "50th percentile over 24h of client-side round-trip latency (ms) for eth_getBlockByNumber(latest,false) every 60s from 3 regions to dRPC's no-key abstract 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 eth_getBlockByNumber(latest,false) every 60s from 3 regions to Thirdweb's no-key abstract 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..3b26051b --- /dev/null +++ b/benchmarks/apechain-rpc.yml @@ -0,0 +1,125 @@ +# OpenChainBench. Bench No 124 + +slug: apechain-rpc +number: "124" +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 method against every free, no-key public ApeChain 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 a Arbitrum Orbit L2 (chain 33139) by the APE Foundation, live-verified 2026-08-02 with 3 no-key providers. + +abstract: | + Per-chain member of the RPC latency cluster, extended to ApeChain. + Measures round-trip latency of eth_getBlockByNumber against every no-key + public endpoint, 3 providers, every 60 seconds from us-east, eu-west and Singapore. + +methodology: + - "Cadence: every 60 seconds per provider, from 3 probe regions." + - "Payload: eth_getBlockByNumber(latest, false). No API key. Rotating id defeats edge caches." + - "Latency: client-side round-trip ms, histogram 50ms to 10s, percentiles via quantile_over_time 24h." + - "Classification: ok / http_err / jsonrpc_err / stale (>20 blocks behind tip) / timeout." + - "Chain scope: every query 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}} leads at {{best_p50}} measured against 3 no-key providers every 60 seconds from us-east, eu-west and Singapore." + - q: "Which ApeChain RPCs work without an API key?" + a: "3 endpoints at launch, all live-verified with eth_getBlockByNumber returning a parsable response." + - q: "Does the fastest ApeChain RPC change by region?" + a: "Often. The region tabs re-scope every number to a single origin." + +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: APE Foundation + tag: ApeChain official public RPC + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to APE Foundation's no-key apechain 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 for ApeChain + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to dRPC's no-key apechain 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 round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Thirdweb's no-key apechain 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..ceed4931 --- /dev/null +++ b/benchmarks/cyber-rpc.yml @@ -0,0 +1,125 @@ +# OpenChainBench. Bench No 127 + +slug: cyber-rpc +number: "127" +title: Fastest free Cyber Network 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 method against every free, no-key public Cyber Network 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 a OP Stack L2 (chain 7560) by CyberConnect, social graph protocol, live-verified 2026-08-02 with 3 no-key providers. + +abstract: | + Per-chain member of the RPC latency cluster, extended to Cyber Network. + Measures round-trip latency of eth_getBlockByNumber against every no-key + public endpoint, 3 providers, every 60 seconds from us-east, eu-west and Singapore. + +methodology: + - "Cadence: every 60 seconds per provider, from 3 probe regions." + - "Payload: eth_getBlockByNumber(latest, false). No API key. Rotating id defeats edge caches." + - "Latency: client-side round-trip ms, histogram 50ms to 10s, percentiles via quantile_over_time 24h." + - "Classification: ok / http_err / jsonrpc_err / stale (>20 blocks behind tip) / timeout." + - "Chain scope: every query 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}} leads at {{best_p50}} measured against 3 no-key providers every 60 seconds from us-east, eu-west and Singapore." + - q: "Which Cyber Network RPCs work without an API key?" + a: "3 endpoints at launch, all live-verified with eth_getBlockByNumber returning a parsable response." + - q: "Does the fastest Cyber Network RPC change by region?" + a: "Often. The region tabs re-scope every number to a single origin." + +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: CyberConnect + tag: Cyber Network official public RPC + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to CyberConnect's no-key cyber 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 sequencer RPC for Cyber Network + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to AltLayer's no-key cyber 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 (chain-id routed) + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Thirdweb's no-key cyber 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..f0509a23 --- /dev/null +++ b/benchmarks/lisk-rpc.yml @@ -0,0 +1,125 @@ +# OpenChainBench. Bench No 125 + +slug: lisk-rpc +number: "125" +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 method against every free, no-key public Lisk 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 a OP Stack L2 (chain 1135) by the Lisk Foundation, live-verified 2026-08-02 with 3 no-key providers. + +abstract: | + Per-chain member of the RPC latency cluster, extended to Lisk. + Measures round-trip latency of eth_getBlockByNumber against every no-key + public endpoint, 3 providers, every 60 seconds from us-east, eu-west and Singapore. + +methodology: + - "Cadence: every 60 seconds per provider, from 3 probe regions." + - "Payload: eth_getBlockByNumber(latest, false). No API key. Rotating id defeats edge caches." + - "Latency: client-side round-trip ms, histogram 50ms to 10s, percentiles via quantile_over_time 24h." + - "Classification: ok / http_err / jsonrpc_err / stale (>20 blocks behind tip) / timeout." + - "Chain scope: every query 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}} leads at {{best_p50}} measured against 3 no-key providers every 60 seconds from us-east, eu-west and Singapore." + - q: "Which Lisk RPCs work without an API key?" + a: "3 endpoints at launch, all live-verified with eth_getBlockByNumber returning a parsable response." + - q: "Does the fastest Lisk RPC change by region?" + a: "Often. The region tabs re-scope every number to a single origin." + +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 Foundation + tag: Lisk official public RPC + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Lisk Foundation's no-key lisk 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 for Lisk + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to dRPC's no-key lisk 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 round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Thirdweb's no-key lisk 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..25bf6302 --- /dev/null +++ b/benchmarks/swellchain-rpc.yml @@ -0,0 +1,125 @@ +# OpenChainBench. Bench No 126 + +slug: swellchain-rpc +number: "126" +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 method against every free, no-key public Swellchain 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 a OP Stack L2 (chain 1923) by Swell Network, liquid restaking protocol, live-verified 2026-08-02 with 3 no-key providers. + +abstract: | + Per-chain member of the RPC latency cluster, extended to Swellchain. + Measures round-trip latency of eth_getBlockByNumber against every no-key + public endpoint, 3 providers, every 60 seconds from us-east, eu-west and Singapore. + +methodology: + - "Cadence: every 60 seconds per provider, from 3 probe regions." + - "Payload: eth_getBlockByNumber(latest, false). No API key. Rotating id defeats edge caches." + - "Latency: client-side round-trip ms, histogram 50ms to 10s, percentiles via quantile_over_time 24h." + - "Classification: ok / http_err / jsonrpc_err / stale (>20 blocks behind tip) / timeout." + - "Chain scope: every query 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}} leads at {{best_p50}} measured against 3 no-key providers every 60 seconds from us-east, eu-west and Singapore." + - q: "Which Swellchain RPCs work without an API key?" + a: "3 endpoints at launch, all live-verified with eth_getBlockByNumber returning a parsable response." + - q: "Does the fastest Swellchain RPC change by region?" + a: "Often. The region tabs re-scope every number to a single origin." + +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 round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Ankr's no-key swellchain 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 public RPC for Swellchain + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Sentio's no-key swellchain 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 (chain-id routed) + formula: "50th percentile over 24h of round-trip latency (ms) for eth_getBlockByNumber every 60s from 3 regions to Thirdweb's no-key swellchain 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..7758d116 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -673,6 +673,80 @@ func chains() []Chain { {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_IMMUTABLE_THIRDWEB", "https://immutable-zkevm.rpc.thirdweb.com")}, }, }, + // ─── Abstract (bench 123) — added 2026-08-02. ZK Stack L2 + // (chain 2741) by Abstract Labs, Pudgy Penguins ecosystem chain. + // 3 clean keyless providers live-verified: abstract-official + // (api.mainnet.abs.xyz), drpc, thirdweb. Excluded: LeoRPC + // (timeout), PublicNode + Tenderly + OnFinality (no listing). + { + Slug: "abstract", + Name: "Abstract", + Providers: []Provider{ + {Slug: "abstract-official", Name: "Abstract Labs", 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")}, + }, + }, + // ─── ApeChain (bench 124) — added 2026-08-02. Arbitrum Orbit L2 + // (chain 33139) for the APE ecosystem by Yuga Labs / APE Foundation, + // APE gas, ~1 s blocks. 3 clean keyless providers live-verified: + // apechain-official (rpc.apechain.com), drpc, thirdweb. Excluded: + // rpc.apechain.io (timeout), PublicNode (no subdomain), Tenderly + // (no apechain route). + { + Slug: "apechain", + Name: "ApeChain", + Providers: []Provider{ + {Slug: "apechain-official", Name: "APE Foundation", URL: envDefault("RPC_URL_APECHAIN_OFFICIAL", "https://rpc.apechain.com")}, + {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")}, + }, + }, + // ─── Lisk (bench 125) — added 2026-08-02. OP Stack L2 (chain 1135) + // by the Lisk Foundation, migrated from DPOS chain in 2024. ETH gas, + // 2 s blocks. 3 clean keyless providers live-verified: lisk-official + // (rpc.api.lisk.com), drpc, thirdweb. Excluded: LeoRPC (timeout), + // OnFinality (no listing), Tenderly + PublicNode (no lisk route/subdomain). + { + Slug: "lisk", + Name: "Lisk", + Providers: []Provider{ + {Slug: "lisk-official", Name: "Lisk Foundation", 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")}, + }, + }, + // ─── Swellchain (bench 126) — added 2026-08-02. OP Stack L2 + // (chain 1923) by Swell Network, liquid restaking. EigenDA DA, + // 2 s blocks. 3 clean keyless providers live-verified: ankr + // (rpc.ankr.com/swell), sentio (swell-mainnet.rpc.sentio.xyz), + // thirdweb (chain-id path 1923.rpc.thirdweb.com). Excluded: + // swell-mainnet.alt.technology (401), swellchain.drpc.org (404), + // swellchain.rpc.thirdweb.com (slug not mapped). + { + 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")}, + }, + }, + // ─── Cyber Network (bench 127) — added 2026-08-02. OP Stack L2 + // (chain 7560) by CyberConnect, social graph. ETH gas, 2 s blocks. + // 3 clean keyless providers live-verified: cyber-official + // (rpc.cyber.co), altlayer (cyber.alt.technology — AltLayer is the + // sequencer operator), thirdweb (7560.rpc.thirdweb.com). Excluded: + // cyber.drpc.org (404), cyber.rpc.thirdweb.com (slug not mapped). + { + Slug: "cyber", + Name: "Cyber", + Providers: []Provider{ + {Slug: "cyber-official", Name: "CyberConnect", 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")}, + }, + }, // ─── Kava EVM (bench 121) — added 2026-08-02. Cosmos SDK L1 // (chain 2222) with native EVM execution, ~5 s block time. // The 2026-07-03 long-tail sweep excluded Kava for not meeting diff --git a/public/logos/abstract.png b/public/logos/abstract.png new file mode 100644 index 00000000..d0dbf519 Binary files /dev/null and b/public/logos/abstract.png differ diff --git a/public/logos/altlayer.png b/public/logos/altlayer.png new file mode 100644 index 00000000..07245223 Binary files /dev/null and b/public/logos/altlayer.png differ diff --git a/public/logos/apechain.png b/public/logos/apechain.png new file mode 100644 index 00000000..dc839c4a Binary files /dev/null and b/public/logos/apechain.png differ diff --git a/public/logos/cyber.png b/public/logos/cyber.png new file mode 100644 index 00000000..b7a2e3dc Binary files /dev/null and b/public/logos/cyber.png 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.png b/public/logos/lisk.png new file mode 100644 index 00000000..83f18fde Binary files /dev/null and b/public/logos/lisk.png differ diff --git a/public/logos/swellchain.png b/public/logos/swellchain.png new file mode 100644 index 00000000..637001ad Binary files /dev/null and b/public/logos/swellchain.png differ diff --git a/public/logos/zora.png b/public/logos/zora.png new file mode 100644 index 00000000..26492620 Binary files /dev/null and b/public/logos/zora.png differ diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts index 2863429d..76e7a5ff 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 Labs' official public RPC (api.mainnet.abs.xyz) for the ZK Stack Layer 2 (chain 2741) home to the Pudgy Penguins ecosystem. Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@abstractchain", + }, + "apechain-official": { + url: "https://apechain.com", + description: + "APE Foundation's official public RPC (rpc.apechain.com) for the Arbitrum Orbit Layer 2 (chain 33139) built for the APE ecosystem. Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@apecoin", + }, + "lisk-official": { + url: "https://lisk.com", + description: + "Lisk Foundation's official public RPC (rpc.api.lisk.com) for the OP Stack Layer 2 (chain 1135). Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@LiskHQ", + }, + sentio: { + url: "https://sentio.xyz", + description: + "Sentio is a blockchain analytics and observability platform providing public RPC endpoints for select chains, including Swellchain (swell-mainnet.rpc.sentio.xyz). Keyless, rate-limited per IP.", + twitter: "@sentioxyz", + }, + altlayer: { + url: "https://altlayer.io", + description: + "AltLayer is a restaked rollup protocol providing sequencer infrastructure and public RPC endpoints for rollups deployed on its stack, including Cyber Network (cyber.alt.technology). Keyless, rate-limited per IP.", + twitter: "@alt_layer", + }, + "cyber-official": { + url: "https://cyber.co", + description: + "CyberConnect's official public RPC (rpc.cyber.co) for the OP Stack Layer 2 (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..b21efc1b 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -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 Layer 2 (chain 2741) by Abstract Labs, home to the Pudgy Penguins ecosystem, ETH gas, ~1 s block cadence, ZK proof settlement on Ethereum.", + }, + { + slug: "apechain", + label: "ApeChain", + category: "L2", + nativeSymbol: "APE", + description: + "Arbitrum Orbit Layer 2 (chain 33139) built for the APE ecosystem by the APE Foundation, APE gas token, ~1 s block cadence, settlement on Arbitrum.", + }, + { + slug: "lisk", + label: "Lisk", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack Layer 2 (chain 1135) by the Lisk Foundation, migrated from an independent DPOS blockchain in 2024, ETH gas, 2 s sequencer cadence, blob calldata settlement on Ethereum.", + }, + { + slug: "swellchain", + label: "Swellchain", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack Layer 2 (chain 1923) by Swell Network, backed by restaked ETH deposits providing native yield, ETH gas, 2 s sequencer cadence, EigenDA data availability.", + }, + { + slug: "cyber", + label: "Cyber", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack Layer 2 (chain 7560) by CyberConnect, social graph protocol, ETH gas, 2 s sequencer 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..c189c0ee 100644 --- a/src/lib/logo-manifest.ts +++ b/src/lib/logo-manifest.ts @@ -172,6 +172,16 @@ const RAW: Record = { kaia: "/logos/kaia.png", ink: "/logos/ink.svg", + // ─── RPC cluster expansion (benches 121-127, 2026-08-02) ─── + kava: "/logos/kava.png", + zora: "/logos/zora.png", + abstract: "/logos/abstract.png", + apechain: "/logos/apechain.png", + lisk: "/logos/lisk.png", + swellchain: "/logos/swellchain.png", + cyber: "/logos/cyber.png", + altlayer: "/logos/altlayer.png", + // ─── Gas oracles ─── etherscan: "/logos/etherscan.svg", owlracle: "/logos/owlracle.png", @@ -477,6 +487,13 @@ const ALIASES: Record = { "fraxtal-official": "fraxtal", "soneium-official": "soneium", + // ─── RPC cluster expansion (benches 121-127, 2026-08-02) ─── + "kava-official": "kava", + "zora-official": "zora", + "abstract-official": "abstract", + "apechain-official": "apechain", + "lisk-official": "lisk", + "cyber-official": "cyber", }; export function logoPath(slug: string): string | null {