diff --git a/benchmarks/kava-rpc.yml b/benchmarks/kava-rpc.yml new file mode 100644 index 00000000..f2ec9730 --- /dev/null +++ b/benchmarks/kava-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 121 + +slug: kava-rpc +number: "121" +title: Fastest free Kava RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Kava RPC 2026" +seo_description: "{{best_name}} leads free Kava 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 Kava EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Kava is a Cosmos SDK Layer 1 (chain 2222) with a native EVM execution layer, ~5 s block time under Tendermint BFT consensus, KAVA gas token on the EVM side, and IBC connectivity to the wider Cosmos ecosystem. The 2026-07-03 long-tail sweep excluded Kava for not meeting the 3-provider threshold; re-audit on 2026-08-02 confirms Thirdweb now supports Kava EVM, bringing the total to 3 clean keyless providers: the Kava Labs official endpoint (evm.kava.io), dRPC, and Thirdweb. Excluded by this launch audit: PublicNode (method-not-found on eth_getBlockByNumber), Tenderly (no kava route), Blast API (no listing), OnFinality (rate-limited without a key), 1RPC (unknown network). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Kava EVM. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Kava EVM 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 Kava-scaled staleness gap (20 blocks + at Kava's ~5 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Kava-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=\"kava\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Kava RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free Kava 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 Kava RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: the Kava Labs official endpoint (evm.kava.io), dRPC, and Thirdweb. Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion. See the methodology section for the endpoints that were audited and excluded." + - q: "Does the fastest Kava 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 Kava 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="kava"}) + +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: kava-official + name: Kava Labs + tag: Kava Labs official public EVM 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 Kava Labs's no-key kava EVM RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="kava-official", chain="kava"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="kava-official", chain="kava"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="kava-official", chain="kava"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="kava-official", chain="kava"}) / sum(ocb:rpc_call:rate_24h{provider="kava-official", chain="kava"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="kava-official", chain="kava"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Kava 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 kava RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="kava"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="kava"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="kava"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="kava"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="kava"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="kava"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Kava EVM + 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 kava RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="kava"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="kava"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="kava"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="kava"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="kava"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="kava"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava", region="sgp"}[1h]) diff --git a/benchmarks/perp-cost-slope.yml b/benchmarks/perp-cost-slope.yml index cba57a06..76dabb6d 100644 --- a/benchmarks/perp-cost-slope.yml +++ b/benchmarks/perp-cost-slope.yml @@ -54,7 +54,7 @@ methodology: - "Cadence: derived in PromQL from perp_fees_all_in_bps_tier, refreshed every 5 minutes by the perp-fees harness (bench 007)." - "Cost slope = avg_over_time(all_in_bps_tier{notional=1000000}[24h]) / ignoring(notional) avg_over_time(all_in_bps_tier{notional=1000}[24h]) per venue per asset. A ratio of 1.00 means flat cost across sizes." - "Oracle-priced venues (gains.trade, GMX v2): the fee is a flat percentage of position size with no orderbook. The $1M all-in equals the $1k all-in in bps exactly, so slope = 1.00 always." - - "Orderbook venues (Hyperliquid, dYdX, Lighter, Paradex, Extended, Aster, edgeX): the $1M tier walks deeper into the book than the $1k tier, so the spread component grows and slope > 1.00." + - "Orderbook venues (Hyperliquid, dYdX, Lighter, Extended, Aster, edgeX): the $1M tier walks deeper into the book than the $1k tier, so the spread component grows and slope > 1.00." - "Missing $1M tier: when the visible book cannot absorb $1M the harness skips the tier and increments perp_fees_tier_skipped_total rather than extrapolating. The slope PromQL returns no data for that venue, shown as N/A in the leaderboard." - "Fill-rate panel: count_over_time(tier{notional=1000000}[24h]) / ignoring(notional) count_over_time(tier{notional=1000}[24h]) per venue per asset. 1.00 = tier always filled; 0.50 = tier filled half the time; 0.00 = tier never filled." - "Chain tabs: the board is scoped per asset (ETH, BTC, SOL) because book depth differs significantly across assets and cross-asset averaging obscures the signal." @@ -196,19 +196,6 @@ providers: sample_size: count_over_time(perp_fees_all_in_bps_tier{venue="dydx",notional="1000000"}[24h]) series: perp_fees_all_in_bps_tier{venue="dydx",notional="1000000"} - - slug: paradex - name: Paradex - tag: "Starknet appchain perps, 100-level book" - formula: "all_in_bps_tier{notional=1000000}[24h] / all_in_bps_tier{notional=1000}[24h]. Orderbook: Starknet appchain, 100-level book depth caps visible depth at ~$1M on majors." - queries: - p50: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h]) - p90: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="100000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h]) - p99: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="10000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h]) - mean: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h]) - success: avg_over_time(perp_fees_health{venue="paradex"}[24h]) - sample_size: count_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}[24h]) - series: perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"} - - slug: extended name: Extended tag: "Starknet perps, full public book" diff --git a/benchmarks/zora-rpc.yml b/benchmarks/zora-rpc.yml new file mode 100644 index 00000000..2cb07df6 --- /dev/null +++ b/benchmarks/zora-rpc.yml @@ -0,0 +1,136 @@ +# OpenChainBench. Bench № 122 + +slug: zora-rpc +number: "122" +title: Fastest free Zora RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Zora RPC 2026" +seo_description: "{{best_name}} leads free Zora 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 Zora EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Zora is an OP Stack rollup (chain 7777777) operated by Zora Network, optimised for NFT minting and creative media on-chain, ~2 s sequencer cadence, ETH gas token, blob calldata settlement on Ethereum. The 2026-07-03 long-tail sweep excluded Zora for having ≤2 keyless providers; re-audit on 2026-08-02 confirms Thirdweb now supports Zora, bringing the total to 3 clean keyless providers: the Zora Network official endpoint (rpc.zora.energy), dRPC, and Thirdweb. Excluded by this launch audit: Tenderly Gateway (no zora route), Alchemy public (ZORA_MAINNET not enabled on public tier), Blast API (discontinued). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Zora. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Zora 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 Zora-scaled staleness gap (20 blocks + at Zora's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Zora-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=\"zora\"`. Provider coverage at launch: 3 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Zora RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 3 measured providers." + +faq: + - q: "What is the fastest free Zora 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 Zora RPCs work without an API key?" + a: "3 endpoints sustain continuous keyless probing at launch: the Zora Network official endpoint (rpc.zora.energy), dRPC, and Thirdweb. Every listed endpoint was live-verified with a `eth_getBlockByNumber` POST returning a parsable response before inclusion. See the methodology section for the endpoints that were audited and excluded." + - q: "Does the fastest Zora 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 Zora 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="zora"}) + +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: zora-official + name: Zora Network + tag: Zora 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 Zora Network's no-key zora RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="zora-official", chain="zora"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="zora-official", chain="zora"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="zora-official", chain="zora"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="zora-official", chain="zora"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="zora-official", chain="zora"}) / sum(ocb:rpc_call:rate_24h{provider="zora-official", chain="zora"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="zora-official", chain="zora"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="zora-official", chain="zora"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="zora-official", chain="zora", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="zora-official", chain="zora", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="zora-official", chain="zora", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="zora-official", chain="zora", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="zora-official", chain="zora", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="zora-official", chain="zora", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Zora 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 zora RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zora"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="zora"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="zora"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="zora"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="zora"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="zora"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="zora"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zora"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zora", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zora", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zora", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zora", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="zora", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="zora", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Zora + 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 zora RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="zora"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="zora"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="zora"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="zora"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="zora"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="zora"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="zora"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="zora"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="zora", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="zora", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="zora", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="zora", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="zora", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="zora", region="sgp"}[1h]) diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index 79b355fd..2c3ed713 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -673,6 +673,44 @@ func chains() []Chain { {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_IMMUTABLE_THIRDWEB", "https://immutable-zkevm.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 + // the 3-provider threshold; re-audit on 2026-08-02 confirms + // Thirdweb now supports Kava EVM, restoring 3 clean keyless + // providers. Live-verified: kava-official (evm.kava.io), drpc + // (kava.drpc.org), thirdweb (kava.rpc.thirdweb.com). Excluded: + // PublicNode (method-not-found on eth_getBlockByNumber), Tenderly + // (no kava route), Blast API (no listing), OnFinality (429 on + // public quota without key), 1RPC (unknown network). + { + Slug: "kava", + Name: "Kava", + Providers: []Provider{ + {Slug: "kava-official", Name: "Kava Labs", URL: envDefault("RPC_URL_KAVA_OFFICIAL", "https://evm.kava.io")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_KAVA_DRPC", "https://kava.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_KAVA_THIRDWEB", "https://kava.rpc.thirdweb.com")}, + }, + }, + // ─── Zora (bench 122) — added 2026-08-02. OP Stack rollup + // (chain 7777777) by Zora Network, ~2 s sequencer cadence, ETH + // gas, NFT-focused ecosystem. The 2026-07-03 long-tail sweep + // excluded Zora for having ≤2 keyless providers; re-audit on + // 2026-08-02 confirms Thirdweb now supports Zora, restoring + // 3 clean keyless providers. Live-verified: zora-official + // (rpc.zora.energy), drpc (zora.drpc.org), thirdweb + // (zora.rpc.thirdweb.com). Excluded: Tenderly (no zora route), + // Alchemy public (ZORA_MAINNET not enabled on public tier), + // Blast API (discontinued). + { + Slug: "zora", + Name: "Zora", + Providers: []Provider{ + {Slug: "zora-official", Name: "Zora Network", URL: envDefault("RPC_URL_ZORA_OFFICIAL", "https://rpc.zora.energy")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_ZORA_DRPC", "https://zora.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_ZORA_THIRDWEB", "https://zora.rpc.thirdweb.com")}, + }, + }, } filter := strings.TrimSpace(os.Getenv("OCB_CHAINS")) diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts index 99d7488f..2863429d 100644 --- a/src/data/provider-registry.ts +++ b/src/data/provider-registry.ts @@ -1901,6 +1901,18 @@ export const PROVIDER_REGISTRY: Record = { twitter: "@maplefinance", docs: "https://maplefinance.gitbook.io/maple/", }, + "kava-official": { + url: "https://www.kava.io", + description: + "Kava Labs' official public EVM RPC (evm.kava.io) for the Cosmos SDK Layer 1 with native EVM execution (chain 2222). Standard EVM JSON-RPC, keyless, rate-limited per IP.", + twitter: "@kava_platform", + }, + "zora-official": { + url: "https://zora.co", + description: + "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", + }, }; /** diff --git a/src/lib/chains.ts b/src/lib/chains.ts index 4fe50c29..7182fc26 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -429,6 +429,22 @@ export const CHAINS: ChainEntry[] = [ description: "Polygon CDK zkEVM L2 (chain 13371) operated by Immutable, dedicated Web3 gaming stack, IMX gas token, 2 s block cadence, settlement onto Ethereum via zk-proofs.", }, + { + slug: "kava", + label: "Kava", + category: "L1", + nativeSymbol: "KAVA", + description: + "Cosmos SDK Layer 1 (chain 2222) with a native EVM execution layer, ~5 s block time under Tendermint BFT consensus, KAVA gas token on the EVM side, and IBC connectivity to the wider Cosmos ecosystem.", + }, + { + slug: "zora", + label: "Zora", + category: "L2", + nativeSymbol: "ETH", + 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.", + }, ]; export const CHAIN_BY_SLUG = new Map(CHAINS.map((c) => [c.slug, c]));