From 405f7d3099d25e5f28f77a26564b3773dc1c022f Mon Sep 17 00:00:00 2001 From: Florent Tapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:39:37 +0200 Subject: [PATCH 1/5] rpc-capabilities: add Sei EVM + Mode + Ronin + Immutable zkEVM (4 clean providers each, re-audited 2026-07-26) --- .../rpc-capabilities/cmd/script/config.go | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index da545732..79b355fd 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -597,6 +597,82 @@ func chains() []Chain { {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_OPBNB_DRPC", "https://opbnb.drpc.org")}, }, }, + // ─── Sei EVM (bench 108) — added 2026-07-26. Cosmos SDK L1 with + // EVM parallel-execution layer (chain 1329). Native EVM JSON-RPC. + // The 2026-07-03 sweep excluded Sei because drpc cached + // eth_blockNumber leaving only 2 clean providers; re-audit on + // 2026-07-26 confirms dRPC no longer caches, and Thirdweb + + // Stakeme.pro have come online, restoring 4 clean keyless + // providers. Providers live-verified: sei-official + // (evm-rpc.sei-apis.com), drpc, thirdweb, stakeme. Excluded: + // PublicNode (no sei-evm subdomain), Tenderly public (no + // sei route), BlockPI (Apikey required), MeowRPC (defunct), + // Basement Nodes / Node75 / AllThatNode (host unresolvable + // or key-gated). Sei's dual Cosmos + EVM stack means this bench + // scopes strictly to the EVM side; the Cosmos JSON-RPC would + // need a Kind:"cosmos" entry as we did for Osmosis. + { + Slug: "sei", + Name: "Sei EVM", + Providers: []Provider{ + {Slug: "sei-official", Name: "Sei Labs", URL: envDefault("RPC_URL_SEI_OFFICIAL", "https://evm-rpc.sei-apis.com")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_SEI_DRPC", "https://sei.drpc.org")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_SEI_THIRDWEB", "https://sei.rpc.thirdweb.com")}, + {Slug: "stakeme", Name: "Stakeme", URL: envDefault("RPC_URL_SEI_STAKEME", "https://sei-evm-rpc.stakeme.pro")}, + }, + }, + // ─── Mode (bench 109) — added 2026-07-26. OP Stack L2 (chain + // 34443), Base-ecosystem-adjacent, DeFi + AI positioning. The + // 2026-07-03 sweep excluded Mode with 3 providers; re-audit on + // 2026-07-26 adds Thirdweb (now live on Mode) to bring the count + // to 4 clean keyless providers. Providers live-verified: + // mode-official (mainnet.mode.network), drpc, 1rpc, thirdweb. + // Excluded: Tenderly public (no mode route), Blast API + // (discontinued), MeowRPC + PublicNode (no mode subdomain). + { + Slug: "mode", + Name: "Mode", + Providers: []Provider{ + {Slug: "mode-official", Name: "Mode Labs", URL: envDefault("RPC_URL_MODE_OFFICIAL", "https://mainnet.mode.network")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_MODE_DRPC", "https://mode.drpc.org")}, + {Slug: "1rpc", Name: "1RPC", URL: envDefault("RPC_URL_MODE_1RPC", "https://1rpc.io/mode")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_MODE_THIRDWEB", "https://mode.rpc.thirdweb.com")}, + }, + }, + // ─── Ronin (bench 110) — added 2026-07-26. EVM gaming L1 + // (chain 2020) operated by Sky Mavis, primary home of Axie + // Infinity + Pixels + a broader gaming ecosystem. 4 clean + // keyless providers live-verified: ronin-official + // (api.roninchain.com), drpc, tenderly, thirdweb. Excluded: + // Ronin Tech secondary (DNS-fail), PublicNode (no ronin + // subdomain), lgns.net (DNS-fail). + { + Slug: "ronin", + Name: "Ronin", + Providers: []Provider{ + {Slug: "ronin-official", Name: "Sky Mavis", URL: envDefault("RPC_URL_RONIN_OFFICIAL", "https://api.roninchain.com/rpc")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_RONIN_DRPC", "https://ronin.drpc.org")}, + {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_RONIN_TENDERLY", "https://ronin.gateway.tenderly.co")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_RONIN_THIRDWEB", "https://ronin.rpc.thirdweb.com")}, + }, + }, + // ─── Immutable zkEVM (bench 111) — added 2026-07-26. Polygon + // CDK-based zkEVM L2 (chain 13371) operated by Immutable, + // dedicated Web3 gaming stack. 4 clean keyless providers + // live-verified: immutable-official (rpc.immutable.com), drpc, + // tenderly, thirdweb. Excluded: PublicNode (no subdomain), + // Alchemy public (chain not enabled), Tenderly's rpc. + // -prefixed alias (route redirects to keyed path). + { + Slug: "immutable", + Name: "Immutable zkEVM", + Providers: []Provider{ + {Slug: "immutable-official", Name: "Immutable", URL: envDefault("RPC_URL_IMMUTABLE_OFFICIAL", "https://rpc.immutable.com")}, + {Slug: "drpc", Name: "dRPC", URL: envDefault("RPC_URL_IMMUTABLE_DRPC", "https://immutable-zkevm.drpc.org")}, + {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_IMMUTABLE_TENDERLY", "https://immutable.gateway.tenderly.co")}, + {Slug: "thirdweb", Name: "Thirdweb", URL: envDefault("RPC_URL_IMMUTABLE_THIRDWEB", "https://immutable-zkevm.rpc.thirdweb.com")}, + }, + }, } filter := strings.TrimSpace(os.Getenv("OCB_CHAINS")) From 9efeb801aec1282b286254b66981f70129fa80e7 Mon Sep 17 00:00:00 2001 From: Florent Tapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:40:37 +0200 Subject: [PATCH 2/5] chain-kpis: register Sei + Mode + Ronin + Immutable zkEVM (DefiLlama slugs verified live) --- harnesses/chain-kpis/cmd/script/registry.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/harnesses/chain-kpis/cmd/script/registry.go b/harnesses/chain-kpis/cmd/script/registry.go index d3a5ffa4..b2328b70 100644 --- a/harnesses/chain-kpis/cmd/script/registry.go +++ b/harnesses/chain-kpis/cmd/script/registry.go @@ -98,4 +98,22 @@ var Registry = []Chain{ // asset (Mobula symbol HYPE resolves to the correct market data, // ~$58 spot / ~$13.9B mcap verified live 2026-07-25). {Slug: "hyperliquid", DefiLlama: "Hyperliquid L1", Mobula: "HyperEVM", NativeSymbol: "HYPE"}, + // Sei EVM (chain 1329). Cosmos SDK L1 with parallel-execution EVM + // layer. DefiLlama tracks it as "Sei" (verified /v2/chains 2026-07-26). + // Mobula left empty until the free-tier blockchains endpoint is + // re-accessible with a key; the KPI page renders fine with just + // DefiLlama fees/TVL/stables. Native SEI serves as gas for both + // the Cosmos and EVM sides. + {Slug: "sei", DefiLlama: "Sei", Mobula: "", NativeSymbol: "SEI"}, + // Mode (chain 34443). OP Stack L2 in the Base ecosystem, DeFi + AI + // positioning. DefiLlama slug "Mode" verified. + {Slug: "mode", DefiLlama: "Mode", Mobula: "", NativeSymbol: "ETH"}, + // Ronin (chain 2020). Sky Mavis' EVM gaming L1, home of Axie / + // Pixels and a broader gaming stack. DefiLlama slug "Ronin" verified. + // RON native token. + {Slug: "ronin", DefiLlama: "Ronin", Mobula: "", NativeSymbol: "RON"}, + // Immutable zkEVM (chain 13371). Polygon CDK zkEVM L2 dedicated to + // Web3 gaming, operated by Immutable. DefiLlama slug "Immutable zkEVM" + // verified — the space is intentional and matches /v2/chains casing. + {Slug: "immutable", DefiLlama: "Immutable zkEVM", Mobula: "", NativeSymbol: "IMX"}, } From 5638fe9832d1ad20a0570e9ebe2889fe0c448c5a Mon Sep 17 00:00:00 2001 From: Florent Tapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:44:17 +0200 Subject: [PATCH 3/5] site chains: register Sei + Mode + Ronin + Immutable zkEVM --- src/lib/chains.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/lib/chains.ts b/src/lib/chains.ts index cd0d4e17..4fe50c29 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -397,6 +397,38 @@ export const CHAINS: ChainEntry[] = [ description: "OP Stack rollup (chain 204) operated by the BNB Chain team, BNB gas token, ~1 s sequencer cadence, settlement onto BNB Chain (not Ethereum). Positioned as the low-cost execution layer for the BNB ecosystem.", }, + { + slug: "sei", + label: "Sei", + category: "L1", + nativeSymbol: "SEI", + description: + "Cosmos SDK L1 (chain 1329) with a parallel-execution EVM layer bolted onto Tendermint consensus, launched by Sei Labs. SEI gas token for both sides, sub-second finality, positioned as a high-throughput trading chain.", + }, + { + slug: "mode", + label: "Mode", + category: "L2", + nativeSymbol: "ETH", + description: + "OP Stack rollup (chain 34443) in the Base / Superchain ecosystem, ETH gas, DeFi + AI-agent positioning. 2 s sequencer cadence, standard OP Stack blob settlement on Ethereum.", + }, + { + slug: "ronin", + label: "Ronin", + category: "L1", + nativeSymbol: "RON", + description: + "EVM L1 (chain 2020) operated by Sky Mavis, purpose-built for Web3 gaming and home of Axie Infinity, Pixels and a broader gaming stack. RON gas, delegated proof-of-stake, 3 s block cadence.", + }, + { + slug: "immutable", + label: "Immutable zkEVM", + category: "L2", + nativeSymbol: "IMX", + 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.", + }, ]; export const CHAIN_BY_SLUG = new Map(CHAINS.map((c) => [c.slug, c])); From bee1b7ac81ab85fbbecaa4a8bd4445882dec342c Mon Sep 17 00:00:00 2001 From: Florent Tapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:45:23 +0200 Subject: [PATCH 4/5] bench 108-111: sei-rpc, mode-rpc, ronin-rpc, immutable-rpc specs (4 providers each) --- benchmarks/immutable-rpc.yml | 159 +++++++++++++++++++++++++++++++++++ benchmarks/mode-rpc.yml | 159 +++++++++++++++++++++++++++++++++++ benchmarks/ronin-rpc.yml | 159 +++++++++++++++++++++++++++++++++++ benchmarks/sei-rpc.yml | 159 +++++++++++++++++++++++++++++++++++ 4 files changed, 636 insertions(+) create mode 100644 benchmarks/immutable-rpc.yml create mode 100644 benchmarks/mode-rpc.yml create mode 100644 benchmarks/ronin-rpc.yml create mode 100644 benchmarks/sei-rpc.yml diff --git a/benchmarks/immutable-rpc.yml b/benchmarks/immutable-rpc.yml new file mode 100644 index 00000000..136c47d9 --- /dev/null +++ b/benchmarks/immutable-rpc.yml @@ -0,0 +1,159 @@ +# OpenChainBench. Bench № 111 + +slug: immutable-rpc +number: "111" +title: Fastest free Immutable zkEVM RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Immutable zkEVM RPC 2026" +seo_description: "{{best_name}} leads free Immutable zkEVM RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 4 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 Immutable zkEVM EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Immutable zkEVM is a Polygon CDK zkEVM L2 (chain 13371) operated by Immutable, dedicated to Web3 gaming with an IMX gas token model, 2 s block cadence, settlement onto Ethereum via zk-proofs. 4 clean keyless providers live-verified at launch: `immutable-official` (rpc.immutable.com), dRPC, Tenderly Gateway, Thirdweb. Excluded by the launch audit: PublicNode (no `immutable` subdomain), Alchemy public (chain not enabled on public tier), Tenderly's `rpc.immutable.gateway.tenderly.co` alias (route redirects to keyed path). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Immutable zkEVM. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Immutable zkEVM endpoint that sustains continuous probing, 4 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 Immutable zkEVM-scaled staleness gap (25 blocks + at Immutable zkEVM's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Immutable zkEVM-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 25 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=\"immutable\"`. Provider coverage at launch: 4 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Immutable zkEVM RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + +faq: + - q: "What is the fastest free Immutable zkEVM RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Immutable zkEVM RPCs work without an API key?" + a: "4 endpoints sustain continuous keyless probing at launch. 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 Immutable zkEVM 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 Immutable zkEVM 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="immutable"}) + +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: immutable-official + name: Immutable + tag: Immutable zkEVM 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 Immutable's no-key immutable RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="immutable-official", chain="immutable"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="immutable-official", chain="immutable"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="immutable-official", chain="immutable"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="immutable-official", chain="immutable"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="immutable-official", chain="immutable"}) / sum(ocb:rpc_call:rate_24h{provider="immutable-official", chain="immutable"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="immutable-official", chain="immutable"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="immutable-official", chain="immutable"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="immutable-official", chain="immutable", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="immutable-official", chain="immutable", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="immutable-official", chain="immutable", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="immutable-official", chain="immutable", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="immutable-official", chain="immutable", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="immutable-official", chain="immutable", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Immutable zkEVM 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 immutable RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="immutable"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="immutable"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="immutable"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="immutable"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="immutable"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="immutable"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="immutable"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="immutable"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="immutable", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="immutable", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="immutable", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="immutable", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="immutable", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="immutable", region="sgp"}[1h]) + + - slug: tenderly + name: Tenderly Gateway + tag: Tenderly Gateway public RPC for Immutable zkEVM + 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 Tenderly Gateway's no-key immutable RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="immutable"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="immutable"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="tenderly", chain="immutable"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="tenderly", chain="immutable"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="tenderly", chain="immutable"}) / sum(ocb:rpc_call:rate_24h{provider="tenderly", chain="immutable"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="tenderly", chain="immutable"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="immutable"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="immutable", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="immutable", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="immutable", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="immutable", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="immutable", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="immutable", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Immutable zkEVM + 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 immutable RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="immutable"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="immutable"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="immutable"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="immutable"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="immutable"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="immutable"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="immutable"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="immutable"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="immutable", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="immutable", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="immutable", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="immutable", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="immutable", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="immutable", region="sgp"}[1h]) diff --git a/benchmarks/mode-rpc.yml b/benchmarks/mode-rpc.yml new file mode 100644 index 00000000..061f9f44 --- /dev/null +++ b/benchmarks/mode-rpc.yml @@ -0,0 +1,159 @@ +# OpenChainBench. Bench № 109 + +slug: mode-rpc +number: "109" +title: Fastest free Mode RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Mode RPC 2026" +seo_description: "{{best_name}} leads free Mode RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 4 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 Mode EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Mode is an OP Stack rollup (chain 34443) in the Base / Superchain ecosystem, ETH gas, DeFi + AI-agent positioning, with a 2 s sequencer cadence and standard blob calldata settlement on Ethereum. The 2026-07-03 sweep excluded Mode with 3 providers; the 2026-07-26 re-audit adds Thirdweb which is now live on Mode, bringing the count to 4 clean keyless providers. Excluded by this re-launch: Tenderly public (no `mode` route), Blast API (discontinued), MeowRPC + PublicNode (no `mode` subdomain). Every provider live-verified with 4 consecutive keyless probes. + +abstract: | + Per-chain member of the RPC latency cluster, extended to Mode. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Mode endpoint that sustains continuous probing, 4 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 Mode-scaled staleness gap (25 blocks + at Mode's ~2 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Mode-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 25 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=\"mode\"`. Provider coverage at launch: 4 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Mode RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + +faq: + - q: "What is the fastest free Mode RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Mode RPCs work without an API key?" + a: "4 endpoints sustain continuous keyless probing at launch. 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 Mode 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 Mode 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="mode"}) + +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: mode-official + name: Mode Labs + tag: Mode Labs 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 Mode Labs's no-key mode RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="mode-official", chain="mode"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="mode-official", chain="mode"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="mode-official", chain="mode"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="mode-official", chain="mode"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="mode-official", chain="mode"}) / sum(ocb:rpc_call:rate_24h{provider="mode-official", chain="mode"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="mode-official", chain="mode"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="mode-official", chain="mode"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="mode-official", chain="mode", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="mode-official", chain="mode", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="mode-official", chain="mode", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="mode-official", chain="mode", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="mode-official", chain="mode", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="mode-official", chain="mode", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Mode 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 mode RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="mode"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="mode"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="mode"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="mode"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="mode"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="mode"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="mode"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="mode"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="mode", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="mode", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="mode", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="mode", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="mode", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="mode", region="sgp"}[1h]) + + - slug: 1rpc + name: 1RPC + tag: 1RPC public gateway with privacy relay + 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 1RPC's no-key mode RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mode"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="mode"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="1rpc", chain="mode"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="1rpc", chain="mode"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="1rpc", chain="mode"}) / sum(ocb:rpc_call:rate_24h{provider="1rpc", chain="mode"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="1rpc", chain="mode"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mode"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mode", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mode", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mode", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mode", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="mode", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="1rpc", chain="mode", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Mode + 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 mode RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="mode"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="mode"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="mode"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="mode"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="mode"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="mode"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="mode"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="mode"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="mode", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="mode", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="mode", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="mode", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="mode", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="mode", region="sgp"}[1h]) diff --git a/benchmarks/ronin-rpc.yml b/benchmarks/ronin-rpc.yml new file mode 100644 index 00000000..13931024 --- /dev/null +++ b/benchmarks/ronin-rpc.yml @@ -0,0 +1,159 @@ +# OpenChainBench. Bench № 110 + +slug: ronin-rpc +number: "110" +title: Fastest free Ronin RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Ronin RPC 2026" +seo_description: "{{best_name}} leads free Ronin RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 4 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 Ronin EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Ronin is an EVM L1 (chain 2020) operated by Sky Mavis, purpose-built for Web3 gaming and home of Axie Infinity, Pixels and a broader gaming ecosystem. RON gas token, delegated proof-of-stake validator set, 3 s block cadence. 4 clean keyless providers live-verified at launch: `ronin-official` (api.roninchain.com), dRPC, Tenderly Gateway, Thirdweb. Excluded by the launch audit: Ronin Tech secondary domain (DNS-fail), PublicNode (no `ronin` subdomain), lgns.net (DNS-fail). + +abstract: | + Per-chain member of the RPC latency cluster, extended to Ronin. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Ronin endpoint that sustains continuous probing, 4 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 Ronin-scaled staleness gap (25 blocks + at Ronin's ~3 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Ronin-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 25 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=\"ronin\"`. Provider coverage at launch: 4 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Ronin RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + +faq: + - q: "What is the fastest free Ronin RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Ronin RPCs work without an API key?" + a: "4 endpoints sustain continuous keyless probing at launch. 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 Ronin 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 Ronin 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="ronin"}) + +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: ronin-official + name: Sky Mavis + tag: Ronin chain official public RPC, Sky Mavis-operated + 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 Sky Mavis's no-key ronin RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ronin-official", chain="ronin"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="ronin-official", chain="ronin"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="ronin-official", chain="ronin"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="ronin-official", chain="ronin"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="ronin-official", chain="ronin"}) / sum(ocb:rpc_call:rate_24h{provider="ronin-official", chain="ronin"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="ronin-official", chain="ronin"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="ronin-official", chain="ronin"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ronin-official", chain="ronin", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="ronin-official", chain="ronin", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ronin-official", chain="ronin", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="ronin-official", chain="ronin", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ronin-official", chain="ronin", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="ronin-official", chain="ronin", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC public gateway routing to Ronin 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 ronin RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="ronin"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="ronin"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="ronin"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="ronin"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="ronin"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="ronin"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="ronin"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="ronin"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="ronin", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="ronin", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="ronin", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="ronin", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="ronin", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="ronin", region="sgp"}[1h]) + + - slug: tenderly + name: Tenderly Gateway + tag: Tenderly Gateway public RPC for Ronin + 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 Tenderly Gateway's no-key ronin RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="ronin"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="ronin"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="tenderly", chain="ronin"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="tenderly", chain="ronin"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="tenderly", chain="ronin"}) / sum(ocb:rpc_call:rate_24h{provider="tenderly", chain="ronin"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="tenderly", chain="ronin"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="ronin"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="ronin", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="ronin", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="ronin", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="ronin", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="ronin", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="tenderly", chain="ronin", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Ronin + 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 ronin RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ronin"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="ronin"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="ronin"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="ronin"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="ronin"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="ronin"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="ronin"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ronin"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ronin", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ronin", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ronin", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ronin", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="ronin", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="ronin", region="sgp"}[1h]) diff --git a/benchmarks/sei-rpc.yml b/benchmarks/sei-rpc.yml new file mode 100644 index 00000000..933eaf48 --- /dev/null +++ b/benchmarks/sei-rpc.yml @@ -0,0 +1,159 @@ +# OpenChainBench. Bench № 108 + +slug: sei-rpc +number: "108" +title: Fastest free Sei RPC, live no-key EVM endpoint latency +seo_title: "Fastest free Sei RPC 2026" +seo_description: "{{best_name}} leads free Sei RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 4 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 Sei EVM endpoint, audited every 60 seconds from 3 regions. + +category: RPCs +status: live +metric: RPC latency +unit: ms +higher_is_better: false + +seo_intro: | + Sei is a Cosmos SDK L1 (chain 1329) with a parallel-execution EVM layer bolted onto Tendermint consensus, launched by Sei Labs and positioned as a high-throughput trading chain. Standard EVM JSON-RPC on the EVM side; the Cosmos JSON-RPC would need a separate `Kind:"cosmos"` cluster entry as we did for Osmosis. Excluded by the launch audit: PublicNode (no `sei-evm` subdomain), Tenderly public (no `sei` route), BlockPI (`Apikey not found`), MeowRPC (defunct), AllThatNode + Basement Nodes + Node75 (host unresolvable or key-gated). The 2026-07-03 sweep had originally excluded Sei because dRPC cached `eth_blockNumber`; the re-audit on 2026-07-26 confirms dRPC no longer caches and Thirdweb + Stakeme have come online, restoring 4 clean keyless providers. Every listed provider live-verified with 4 consecutive keyless probes at re-launch. + +abstract: | + Per-chain member of the RPC latency cluster, extended to Sei. + We measure the round-trip latency of a single, identical JSON-RPC call + (`eth_getBlockByNumber(\"latest\", false)`) against every no-key public + Sei endpoint that sustains continuous probing, 4 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 Sei-scaled staleness gap (25 blocks + at Sei's ~1 s block time). The cross-chain view + lives on the parent `rpc-capabilities` benchmark; this page is the + Sei-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 25 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=\"sei\"`. Provider coverage at launch: 4 no-key endpoints." + +findings: + - "{{best_name}} currently leads free Sei RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers." + +faq: + - q: "What is the fastest free Sei RPC right now?" + a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples. Use the region tabs to see the leader from the origin closest to your deployment." + - q: "Which Sei RPCs work without an API key?" + a: "4 endpoints sustain continuous keyless probing at launch. 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 Sei 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 Sei 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="sei"}) + +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: sei-official + name: Sei Labs + tag: Sei Labs official EVM 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 Sei Labs's no-key sei RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sei-official", chain="sei"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="sei-official", chain="sei"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="sei-official", chain="sei"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="sei-official", chain="sei"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="sei-official", chain="sei"}) / sum(ocb:rpc_call:rate_24h{provider="sei-official", chain="sei"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="sei-official", chain="sei"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="sei-official", chain="sei"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sei-official", chain="sei", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="sei-official", chain="sei", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sei-official", chain="sei", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="sei-official", chain="sei", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="sei-official", chain="sei", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="sei-official", chain="sei", region="sgp"}[1h]) + + - slug: drpc + name: dRPC + tag: dRPC gateway routing to Sei EVM 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 sei RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sei"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="sei"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="sei"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="sei"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="sei"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="sei"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="sei"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sei"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sei", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sei", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sei", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sei", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="sei", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="sei", region="sgp"}[1h]) + + - slug: thirdweb + name: Thirdweb + tag: Thirdweb public RPC gateway for Sei 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 sei RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sei"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="sei"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="sei"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="sei"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="sei"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="sei"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="sei"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sei"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sei", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sei", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sei", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sei", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="sei", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="sei", region="sgp"}[1h]) + + - slug: stakeme + name: Stakeme + tag: Stakeme.pro validator-run 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 Stakeme's no-key sei RPC endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stakeme", chain="sei"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="stakeme", chain="sei"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="stakeme", chain="sei"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="stakeme", chain="sei"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="stakeme", chain="sei"}) / sum(ocb:rpc_call:rate_24h{provider="stakeme", chain="sei"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="stakeme", chain="sei"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="stakeme", chain="sei"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stakeme", chain="sei", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="stakeme", chain="sei", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stakeme", chain="sei", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="stakeme", chain="sei", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="stakeme", chain="sei", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="stakeme", chain="sei", region="sgp"}[1h]) From 6d3f5ff5f0ba5b9150972cd922bbdf0b672de247 Mon Sep 17 00:00:00 2001 From: Florent Tapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:46:10 +0200 Subject: [PATCH 5/5] revert unrelated other-agent WIP from feature branch --- benchmarks/cross-chain-messaging-latency.yml | 4 +-- benchmarks/rwa-yield-accuracy.yml | 30 +++---------------- benchmarks/token-quote-coverage.yml | 31 ++++---------------- src/app/products/[slug]/page.tsx | 9 ++++-- 4 files changed, 18 insertions(+), 56 deletions(-) diff --git a/benchmarks/cross-chain-messaging-latency.yml b/benchmarks/cross-chain-messaging-latency.yml index bb70b5fd..32b14851 100644 --- a/benchmarks/cross-chain-messaging-latency.yml +++ b/benchmarks/cross-chain-messaging-latency.yml @@ -55,10 +55,10 @@ methodology: - "No canary transactions: every value on this page is a real user message. No wallet is funded, no gas is paid. Total observation cost is API polling." - "Circle CCTP not included: Circle's Iris API does not expose a list-recent endpoint, so passive polling is not feasible without maintaining nonce state via chain-scan on all ~10 CCTP source chains plus Solana. A CCTP bench is on the roadmap." -disclaimer: "These four protocols make different security tradeoffs that directly affect their delivery time. LayerZero and Hyperlane sign messages before source-chain finality, so they deliver in seconds. Chainlink CCIP and Axelar wait for source-chain finality before signing (12-20 min on Ethereum-source lanes). A lower p50 here does not mean a protocol is technically superior — it may mean it accepts more re-org risk. Use the per-corridor bench for each protocol to compare like-for-like lanes." +disclaimer: "These four protocols make different security tradeoffs that directly affect their delivery time. LayerZero and Hyperlane sign messages before source-chain finality, so they deliver in seconds. Chainlink CCIP and Axelar wait for source-chain finality before signing (12-20 min on Ethereum-source lanes). A lower p50 here does not mean a protocol is technically superior, it may mean it accepts more re-org risk. Use the per-corridor bench for each protocol to compare like-for-like lanes." findings: - - "The numbers on this page reflect a security tradeoff, not just engineering speed. LayerZero and Hyperlane sign pre-finality and deliver in seconds. Chainlink CCIP and Axelar wait for source-chain finality (12-20 min on Ethereum-source lanes) before signing. A lower p50 here can mean faster delivery or less re-org protection — read both together." + - "The numbers on this page reflect a security tradeoff, not just engineering speed. LayerZero and Hyperlane sign pre-finality and deliver in seconds. Chainlink CCIP and Axelar wait for source-chain finality (12-20 min on Ethereum-source lanes) before signing. A lower p50 here can mean faster delivery or less re-org protection, read both together." - "{{best_name}} currently leads end-to-end cross-chain delivery at {{best_p50}} (p50 aggregate across all corridors, 24h). Pre-finality signers structurally dominate this aggregate on high-Ethereum-volume days." - "Per-corridor variance is large. The aggregate here is a headline; the individual bench for each protocol shows the per-source-chain breakdown that answers what you would feel in production." diff --git a/benchmarks/rwa-yield-accuracy.yml b/benchmarks/rwa-yield-accuracy.yml index 5e94e365..dbabe887 100644 --- a/benchmarks/rwa-yield-accuracy.yml +++ b/benchmarks/rwa-yield-accuracy.yml @@ -83,32 +83,10 @@ prometheus: expected_freshness_seconds: 3600 providers: - - slug: buidl - name: BUIDL - tag: "BlackRock, Ethereum, monthly USDC dividend" - formula: "Sum of USDC Transfer events from the BUIDL treasury wallet to holders over 30d, divided by average BUIDL supply (share price fixed at 1 USD by design), annualized. Compared to BlackRock's stated APY." - queries: - p50: rwa_yield_deviation_bps_30d{token="buidl"} - p90: rwa_yield_deviation_bps_7d{token="buidl"} - p99: rwa_yield_deviation_bps_lifetime{token="buidl"} - mean: rwa_yield_delivered_bps_30d{token="buidl"} - success: rwa_yield_probe_ok{token="buidl"} - sample_size: rwa_yield_aum_usd{token="buidl"} - series: rwa_yield_delivered_bps_30d{token="buidl"} - - - slug: benji - name: BENJI - tag: "Franklin Templeton, Stellar + Ethereum, NAV appreciation" - formula: "NAV growth of the Franklin OnChain U.S. Government Money Fund share, NAV(t=now) vs NAV(t=30d ago), annualized. NAV published daily by Franklin, cross-checked against the on-chain price oracle. Compared to the stated 7-day SEC yield." - queries: - p50: rwa_yield_deviation_bps_30d{token="benji"} - p90: rwa_yield_deviation_bps_7d{token="benji"} - p99: rwa_yield_deviation_bps_lifetime{token="benji"} - mean: rwa_yield_delivered_bps_30d{token="benji"} - success: rwa_yield_probe_ok{token="benji"} - sample_size: rwa_yield_aum_usd{token="benji"} - series: rwa_yield_delivered_bps_30d{token="benji"} - + # BUIDL + BENJI dormant per the spec comment above (distributor mints + # conflate yield with new subscriptions on BUIDL, no on-chain NAV on + # BENJI). Removed from the public providers list until the harness + # can emit a defensible number; kept in methodology text as context. - slug: usdy name: USDY tag: "Ondo, Ethereum + Solana + Aptos + Sui, daily rebase" diff --git a/benchmarks/token-quote-coverage.yml b/benchmarks/token-quote-coverage.yml index cec78c69..33ec206a 100644 --- a/benchmarks/token-quote-coverage.yml +++ b/benchmarks/token-quote-coverage.yml @@ -165,32 +165,11 @@ providers: sample_size: sum(increase(token_quote_coverage_attempts_total{provider="jupiter"}[24h])) series: sum(rate(token_quote_coverage_success_total{provider="jupiter"}[1h])) / sum(rate(token_quote_coverage_attempts_total{provider="jupiter"}[1h])) * 100 - - slug: kyberswap - name: KyberSwap - tag: EVM multi-chain, Base + BNB + Robinhood - formula: "Rolling 24h ratio for provider=kyberswap. EVM launchpads only (Virtuals, Four.meme). Solana cells null." - queries: - p50: sum(increase(token_quote_coverage_success_total{provider="kyberswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="kyberswap"}[24h])) * 100 - p90: sum(increase(token_quote_coverage_attempts_total{provider="kyberswap"}[24h])) - p99: sum(increase(token_quote_coverage_success_total{provider="kyberswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="kyberswap"}[24h])) * 100 - mean: sum(increase(token_quote_coverage_success_total{provider="kyberswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="kyberswap"}[24h])) * 100 - success: clamp_max(sum(increase(token_quote_coverage_success_total{provider="kyberswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="kyberswap"}[24h])), 1) - sample_size: sum(increase(token_quote_coverage_attempts_total{provider="kyberswap"}[24h])) - series: sum(rate(token_quote_coverage_success_total{provider="kyberswap"}[1h])) / sum(rate(token_quote_coverage_attempts_total{provider="kyberswap"}[1h])) * 100 - - - slug: paraswap - name: ParaSwap - tag: EVM multi-chain, Base + BNB + Robinhood - formula: "Rolling 24h ratio for provider=paraswap. EVM launchpads only (Base, BNB, Robinhood). Solana cells null." - queries: - p50: sum(increase(token_quote_coverage_success_total{provider="paraswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="paraswap"}[24h])) * 100 - p90: sum(increase(token_quote_coverage_attempts_total{provider="paraswap"}[24h])) - p99: sum(increase(token_quote_coverage_success_total{provider="paraswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="paraswap"}[24h])) * 100 - mean: sum(increase(token_quote_coverage_success_total{provider="paraswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="paraswap"}[24h])) * 100 - success: clamp_max(sum(increase(token_quote_coverage_success_total{provider="paraswap"}[24h])) / sum(increase(token_quote_coverage_attempts_total{provider="paraswap"}[24h])), 1) - sample_size: sum(increase(token_quote_coverage_attempts_total{provider="paraswap"}[24h])) - series: sum(rate(token_quote_coverage_success_total{provider="paraswap"}[1h])) / sum(rate(token_quote_coverage_attempts_total{provider="paraswap"}[1h])) * 100 - + # KyberSwap + ParaSwap declared in earlier revisions of this spec are + # currently not emitting on the harness (no token_quote_coverage_* + # metric with those provider labels in Prom). Removed from the public + # providers list until the harness ships probes for them, to avoid + # readers seeing a 5-provider claim that renders as 3. - slug: relay name: Relay tag: Multi-chain, Solana + Base + BNB + Robinhood, no key diff --git a/src/app/products/[slug]/page.tsx b/src/app/products/[slug]/page.tsx index 9ba71f1f..73d9a7a0 100644 --- a/src/app/products/[slug]/page.tsx +++ b/src/app/products/[slug]/page.tsx @@ -568,14 +568,19 @@ export default async function ProviderPage({ jump from a venue/data provider product page to the PM coverage hub. Hard-coded slug list, same shape as the HL companion treatment elsewhere. */} + {/* Prediction-market venues only. Mobula + Codex were + previously in this list because they surface PM + pricing feeds inside their APIs, but their /products + pages read primarily as data-API profiles and the + "View on /prediction-markets" pill looked misleading + alongside their DEX / aggregator / RPC benches. + Removed 2026-07-26. */} {( p.slug === "polymarket" || p.slug === "kalshi" || p.slug === "limitless" || p.slug === "manifold" || p.slug === "myriad" || - p.slug === "mobula" || - p.slug === "codex" || p.slug === "predexon" ) && ( <>