Skip to content
Merged
Show file tree
Hide file tree
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
135 changes: 135 additions & 0 deletions benchmarks/eos-rpc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# OpenChainBench. Bench No 223

slug: eos-rpc
number: "223"
title: Fastest free EOS RPC, live no-key endpoint latency
seo_title: "Fastest free EOS RPC 2026"
seo_description: "{{best_name}} leads free EOS RPC at {{best_p50}} (get_info head_block_num p50, 24h). 3 providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for GET /v1/chain/get_info against every available public EOS (Antelope) node, audited every 60 seconds from 3 regions.

category: RPCs
status: live
metric: RPC latency
unit: ms
higher_is_better: false

seo_intro: |
EOS is a delegated proof-of-stake (DPoS) blockchain built on the Antelope protocol, producing one block every 0.5 seconds across 21 elected block producers. The chain provides a REST chain API under /v1/chain/ allowing standard queries without an API key. Public endpoints are available from Greymass, EOS Nation and Aloha EOS. Every provider was live-verified with consecutive get_info probes at launch.

abstract: |
Per-chain member of the RPC latency cluster, extended to EOS.
We measure the round-trip latency of a single REST call (GET
/v1/chain/get_info) against every available public EOS node that
sustains continuous probing: 3 providers at launch, every 60
seconds, from us-east, eu-west and Singapore. The harness classifies
every response (ok / http_err / jsonrpc_err / stale / timeout) with
an EOS-scaled staleness gap (600 blocks, around 5 min at 0.5 s/block).
The cross-chain view lives on the parent rpc-capabilities benchmark;
this page is the EOS-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: HTTP GET /v1/chain/get_info. Plain REST call. The response carries head_block_num as a plain integer."
- "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 10 s), so percentiles are computed via Prometheus quantile_over_time over the last 24 hours."
- "Call-result classification: ok (HTTP 200 + parsable head_block_num integer), http_err, jsonrpc_err, stale (block more than 600 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 benchmark; the identical harness, cadence and exclusion rules apply on every chain."
- "Chain scope: every query on this page is pinned to chain=eos. Provider coverage at launch: 3 endpoints (Greymass, EOS Nation, Aloha EOS)."

findings:
- "{{best_name}} currently leads EOS RPC at {{best_p50}} (get_info head_block_num p50, 24h) across 3 measured providers."

faq:
- q: "What is the fastest free EOS RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (EOS head block number p50 over the last 24h), measured against 3 providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples."
- q: "Which EOS RPC endpoints work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: Greymass (eos.greymass.com), EOS Nation (eos.api.eosnation.io) and Aloha EOS (api.main.alohaeos.com). Every listed endpoint was live-verified with a get_info call returning a parsable head_block_num before inclusion."
- q: "Does the fastest EOS 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."
- q: "How is EOS RPC latency measured here, technically?"
a: "One GET /v1/chain/get_info REST call every 60 seconds against each provider from each of 3 regions. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus quantile_over_time over 24 hours. Best-effort measurements; p50 is the median, p90 the 90th percentile and p99 the 99th percentile of latency samples collected over the last 24 hours."

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="eos"})

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: greymass
name: Greymass
tag: Greymass public EOS mainnet Antelope API, keyless
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a GET /v1/chain/get_info sent every 60s from 3 regions to eos.greymass.com."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="greymass", chain="eos"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="greymass", chain="eos"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="greymass", chain="eos"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="greymass", chain="eos"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="greymass", chain="eos"}) / sum(ocb:rpc_call:rate_24h{provider="greymass", chain="eos"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="greymass", chain="eos"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="greymass", chain="eos"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="greymass", chain="eos", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="greymass", chain="eos", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="greymass", chain="eos", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="greymass", chain="eos", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="greymass", chain="eos", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="greymass", chain="eos", region="sgp"}[1h])

- slug: eosnation
name: EOS Nation
tag: EOS Nation public EOS mainnet Antelope API, keyless
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a GET /v1/chain/get_info sent every 60s from 3 regions to eos.api.eosnation.io."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="eosnation", chain="eos"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="eosnation", chain="eos"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="eosnation", chain="eos"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="eosnation", chain="eos"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="eosnation", chain="eos"}) / sum(ocb:rpc_call:rate_24h{provider="eosnation", chain="eos"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="eosnation", chain="eos"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="eosnation", chain="eos"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="eosnation", chain="eos", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="eosnation", chain="eos", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="eosnation", chain="eos", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="eosnation", chain="eos", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="eosnation", chain="eos", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="eosnation", chain="eos", region="sgp"}[1h])

- slug: alohaeos
name: Aloha EOS
tag: Aloha EOS public EOS mainnet Antelope API, keyless
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a GET /v1/chain/get_info sent every 60s from 3 regions to api.main.alohaeos.com."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="alohaeos", chain="eos"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="alohaeos", chain="eos"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="alohaeos", chain="eos"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="alohaeos", chain="eos"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="alohaeos", chain="eos"}) / sum(ocb:rpc_call:rate_24h{provider="alohaeos", chain="eos"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="alohaeos", chain="eos"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="alohaeos", chain="eos"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="alohaeos", chain="eos", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="alohaeos", chain="eos", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="alohaeos", chain="eos", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="alohaeos", chain="eos", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="alohaeos", chain="eos", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="alohaeos", chain="eos", region="sgp"}[1h])
134 changes: 134 additions & 0 deletions benchmarks/merlin-rpc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# OpenChainBench. Bench No 228

slug: merlin-rpc
number: "228"
title: Fastest free Merlin Chain RPC, live no-key endpoint latency
seo_title: "Fastest free Merlin Chain RPC 2026"
seo_description: "{{best_name}} leads free Merlin Chain RPC at {{best_p50}} (eth_getBlockByNumber EVM p50, 24h). 3 providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for eth_getBlockByNumber against every available public Merlin Chain node, audited every 60 seconds from 3 regions.

category: RPCs
status: live
metric: RPC latency
unit: ms
higher_is_better: false

seo_intro: |
Merlin Chain is an EVM-compatible Bitcoin Layer 2 network (chain ID 4200) that uses ZK-Rollup technology to inherit Bitcoin security while enabling smart contracts and DeFi. It exposes a standard Ethereum JSON-RPC interface. Public EVM endpoints are available without an API key from Merlin Official, dRPC and Thirdweb. Every provider was live-verified with consecutive eth_getBlockByNumber probes at launch.

abstract: |
Per-chain member of the RPC latency cluster, extended to Merlin Chain.
We measure the round-trip latency of a single eth_getBlockByNumber
("latest", false) call against every available public Merlin Chain
node 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 standard EVM staleness gap. The cross-chain view
lives on the parent rpc-capabilities benchmark; this page is the
Merlin Chain-scoped answer with per-region breakdowns.

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. Standard Ethereum JSON-RPC 2.0."
- "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 10 s), so percentiles are computed via Prometheus quantile_over_time over the last 24 hours."
- "Call-result classification: ok (HTTP 200 + parsable block number), http_err, jsonrpc_err, stale, 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 benchmark; the identical harness, cadence and exclusion rules apply on every chain."
- "Chain scope: every query on this page is pinned to chain=merlin. Provider coverage at launch: 3 endpoints (Merlin Official, dRPC, Thirdweb)."

findings:
- "{{best_name}} currently leads Merlin Chain RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h) across 3 measured providers."

faq:
- q: "What is the fastest free Merlin Chain RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (Merlin Chain block number p50 over the last 24h), measured against 3 providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples."
- q: "Which Merlin Chain RPC endpoints work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: Merlin Official (rpc.merlinchain.io), dRPC (merlin.drpc.org) and Thirdweb (4200.rpc.thirdweb.com). Every listed endpoint was live-verified with an eth_getBlockByNumber call returning a parsable block number before inclusion."
- q: "Does the fastest Merlin Chain 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."
- q: "How is Merlin Chain RPC latency measured here, technically?"
a: "One eth_getBlockByNumber JSON-RPC call every 60 seconds against each provider from each of 3 regions. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus quantile_over_time over 24 hours. Best-effort measurements; p50 is the median, p90 the 90th percentile and p99 the 99th percentile of latency samples collected over the last 24 hours."

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="merlin"})

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: merlin-official
name: Merlin Official
tag: Merlin Chain official public RPC, keyless
formula: "50th percentile over 24h of client-side round-trip latency (ms) for an eth_getBlockByNumber POST sent every 60s from 3 regions to rpc.merlinchain.io."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merlin-official", chain="merlin"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="merlin-official", chain="merlin"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="merlin-official", chain="merlin"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="merlin-official", chain="merlin"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="merlin-official", chain="merlin"}) / sum(ocb:rpc_call:rate_24h{provider="merlin-official", chain="merlin"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="merlin-official", chain="merlin"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="merlin-official", chain="merlin"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merlin-official", chain="merlin", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="merlin-official", chain="merlin", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merlin-official", chain="merlin", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="merlin-official", chain="merlin", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="merlin-official", chain="merlin", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="merlin-official", chain="merlin", region="sgp"}[1h])

- slug: drpc
name: dRPC
tag: dRPC decentralised multi-chain RPC, public Merlin Chain endpoint, no key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for an eth_getBlockByNumber POST sent every 60s from 3 regions to merlin.drpc.org."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="merlin"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="merlin"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="merlin"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="merlin"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="merlin"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="merlin"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="merlin"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="merlin"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="merlin", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="merlin", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="merlin", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="merlin", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="merlin", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="merlin", region="sgp"}[1h])

- slug: thirdweb
name: Thirdweb
tag: Thirdweb public Merlin Chain RPC (chain 4200), no key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for an eth_getBlockByNumber POST sent every 60s from 3 regions to 4200.rpc.thirdweb.com."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="merlin"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="merlin"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="merlin"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="merlin"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="merlin"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="merlin"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="merlin"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="merlin"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="merlin", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="merlin", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="merlin", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="merlin", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="merlin", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="merlin", region="sgp"}[1h])
Loading
Loading