Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 18 additions & 87 deletions benchmarks/canto-rpc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ slug: canto-rpc
number: "146"
title: Fastest free Canto RPC, live no-key endpoint latency
seo_title: "Fastest free Canto RPC 2026"
seo_description: "{{best_name}} leads free Canto RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 4 no-key providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Canto RPC endpoint, audited every 60 seconds from 3 regions.
seo_description: "{{best_name}} leads free Canto RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 1 no-key provider measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for eth_getBlockByNumber against the free, no-key public Canto RPC endpoint, audited every 60 seconds from 3 regions.

category: RPCs
status: live
Expand All @@ -14,40 +14,40 @@ unit: ms
higher_is_better: false

seo_intro: |
Canto is a permissionless EVM L1 (chain 7700) built around free public infrastructure; its DEX, lending market, and stablecoin are protocol primitives rather than third-party dApps. The official endpoint (`canto.gravitychain.io`) is maintained by Plex, with dRPC, PublicNode, and Ankr providing additional keyless alternatives probed every 60 seconds from three regions.
Canto is a permissionless EVM L1 (chain 7700) built around free public infrastructure; its DEX, lending market, and stablecoin are protocol primitives rather than third-party dApps. The official endpoint (`canto.gravitychain.io`) is maintained by Plex and is the only keyless endpoint sustaining continuous probing from all three regions.

abstract: |
Per-chain member of the RPC latency cluster, extended to Canto.
We measure the round-trip latency of a single, identical RPC call
(`eth_getBlockByNumber`) against every no-key public Canto 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) so the leaderboard rewards sustained availability rather than
fast error messages. The cross-chain view lives on the parent
`rpc-capabilities` benchmark; this page is the Canto-scoped answer
with per-region breakdowns as a first-class dimension.
(`eth_getBlockByNumber`) against the no-key public Canto endpoint
(Canto Official, canto.gravitychain.io), every 60 seconds, from
us-east, eu-west and Singapore. The harness classifies every response
(ok / http_err / jsonrpc_err / stale / timeout) so the leaderboard
rewards sustained availability rather than fast error messages.
The cross-chain view lives on the parent `rpc-capabilities` benchmark;
this page is the Canto-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\":<rotating>,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request."
- "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms → 10 s), so percentiles are computed via Prometheus `quantile_over_time` over the last 24 hours."
- "Call-result classification: `ok` (HTTP 200 + non-empty result), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`."
- "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=\"canto\"`. Provider coverage at launch: 4 no-key endpoints (Canto Official, dRPC, PublicNode, Ankr)."
- "Chain scope: every query on this page is pinned to `chain=\"canto\"`. Provider coverage: 1 no-key endpoint (Canto Official). dRPC requires an API key; Ankr and PublicNode dropped free Canto support."

findings:
- "{{best_name}} currently leads free Canto RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) across 4 measured providers."
- "{{best_name}} currently leads free Canto RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h)."

faq:
- q: "What is the fastest free Canto RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 4 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples."
a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples."
- q: "Which Canto RPCs work without an API key?"
a: "4 endpoints sustain continuous keyless probing at launch: Canto Official, dRPC, PublicNode, Ankr. Every listed endpoint was live-verified before inclusion."
- q: "Does the fastest Canto RPC change by region?"
a: "Often. 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."
a: "The Canto Official endpoint (`canto.gravitychain.io`, operated by Plex) is the only keyless endpoint sustaining probes from all 3 regions. dRPC requires an API key; Ankr and PublicNode have dropped free Canto support."
- q: "Does the Canto RPC latency change by region?"
a: "Yes. 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 Canto RPC latency measured here?"
a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions. Responses are classified so an endpoint stuck on an old head or returning errors is never ranked as fastest."
a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against the provider from each of 3 regions. Responses are classified so an endpoint stuck on an old head or returning errors is never ranked as fastest."

source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities

Expand Down Expand Up @@ -87,72 +87,3 @@ providers:
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="canto-official", chain="canto", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="canto-official", chain="canto", region="sgp"}[1h])

- slug: drpc
name: dRPC
tag: Decentralized RPC mesh, consensus-checked
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Canto endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="canto"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="canto"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="canto"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="canto"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="canto"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="canto"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="canto"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="canto"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="canto", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="canto", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="canto", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="canto", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="canto", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="canto", region="sgp"}[1h])

- slug: publicnode
name: PublicNode
tag: Allnodes-operated, 70+ chains, archive on most
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Canto endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="canto"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="canto"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="publicnode", chain="canto"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="publicnode", chain="canto"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="publicnode", chain="canto"}) / sum(ocb:rpc_call:rate_24h{provider="publicnode", chain="canto"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="publicnode", chain="canto"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="canto"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="canto", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="canto", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="canto", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="canto", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="canto", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="canto", region="sgp"}[1h])

- slug: ankr
name: Ankr
tag: Multi-cloud RPC network, 40+ chains, keyless tier
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Ankr's no-key Canto endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="canto"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="ankr", chain="canto"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="ankr", chain="canto"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="ankr", chain="canto"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="ankr", chain="canto"}) / sum(ocb:rpc_call:rate_24h{provider="ankr", chain="canto"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="ankr", chain="canto"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="canto"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="canto", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="canto", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="canto", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="canto", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="ankr", chain="canto", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="ankr", chain="canto", region="sgp"}[1h])
Loading