Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
cdd3c0f
fix: restore chainstack findings, new key live on both regions
Flotapponnier Aug 27, 2026
0548539
Merge pull request #2150 from ChainBench/feat/robinhood-quicknode
Flotapponnier Aug 27, 2026
a7b5d1b
fix: us-east only bench, drop us-west dimension and service
Flotapponnier Aug 27, 2026
dc8ed11
Merge pull request #2151 from ChainBench/feat/robinhood-quicknode
Flotapponnier Aug 27, 2026
971c8a1
feat: add eu-west + sgp regions, chainstack wins all 3
Flotapponnier Aug 27, 2026
a8a95ca
Merge pull request #2152 from ChainBench/feat/robinhood-quicknode
Flotapponnier Aug 27, 2026
f983458
feat: GMX v2 funding rates via DataStore OI imbalance (#2153)
Flotapponnier Aug 27, 2026
15f7adb
feat: bench #243 keyed-rpc-robinhood — 3-region live data (#2154)
Flotapponnier Aug 27, 2026
07505cf
sync: fast-forward dev from main (sitemap smoke fixes)
Flotapponnier Aug 27, 2026
4fc7c2d
sync: fast-forward dev from main (sitemap smoke fixes)
Flotapponnier Aug 27, 2026
8e27dee
fix: pin robinhood bench queries to region=us-east
Flotapponnier Aug 27, 2026
de9247b
fix: augment HL position reconstruction with clearinghouseState to by…
Flotapponnier Aug 27, 2026
9d20cbb
feat(rpc): add Litecoin, Babylon, Acala, Interlay benches (#246-249) …
Flotapponnier Aug 27, 2026
fb939fd
fix(rpc): remove em dashes from acala/babylon/interlay bench YAMLs (#…
Flotapponnier Aug 27, 2026
783be79
fix: direction-aware funding projection for all venues (#2163)
Flotapponnier Aug 28, 2026
14614af
fix(rpc): replace dead Acala/Interlay providers with live endpoints
Flotapponnier Aug 28, 2026
1d3e5b2
fix: correct Robinhood Chain launch date and remove unverified provid…
Flotapponnier Aug 28, 2026
f17f706
feat: pre-fill wallet from URL params on fee-compare (#2176)
Flotapponnier Aug 28, 2026
655a762
fix: shareable URL uses query params not broken path format (#2177)
Flotapponnier Aug 28, 2026
d92ebcc
fix: split Gains taker vs vault fee, add per-trade equiv fee column (…
Flotapponnier Aug 28, 2026
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
8 changes: 7 additions & 1 deletion .github/workflows/prod-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,16 @@ jobs:
# the next step auto-rolls back the prod alias to the previous good
# deploy. This catches the class of bug that bled SEO on 2026-06-25
# (bench page 404 + noindex while still in the sitemap).
#
# Sitemap fetched from the deployment URL (bypasses s-maxage=3600
# CDN cache — was serving the previous deploy's sitemap for up to
# 1 h, causing false rollbacks). Pages checked against the prod
# domain (second arg) so the noindex injected on Vercel preview
# URLs does not false-fail the per-page checks.
- name: Sitemap indexability smoke
id: smoke
continue-on-error: true
run: node scripts/sitemap-smoke.mjs https://openchainbench.com
run: node scripts/sitemap-smoke.mjs ${{ steps.deploy.outputs.url }} https://openchainbench.com

- name: Auto-rollback on smoke failure
if: steps.smoke.outcome == 'failure'
Expand Down
136 changes: 136 additions & 0 deletions benchmarks/acala-rpc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# OpenChainBench. Bench No 248

slug: acala-rpc
number: "248"
title: Fastest free Acala RPC, live no-key endpoint latency
seo_title: "Fastest free Acala RPC 2026"
seo_description: "{{best_name}} leads free Acala RPC at {{best_p50}} (block height p50, 24h). 3 providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for Substrate chain_getHeader queries against every available public Acala endpoint, audited every 60 seconds from 3 regions.

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

seo_intro: |
Acala is the DeFi hub of the Polkadot ecosystem, a Polkadot parachain providing decentralized stablecoin (aUSD), liquid staking (LDOT), and an EVM-compatible execution environment. Acala uses the Substrate framework and exposes a standard Substrate JSON-RPC interface; block height is queried via chain_getHeader. Public endpoints are available without an API key from Dwellir and the Acala official RPC cluster (aca-api.network). Every provider was live-verified with consecutive block-height probes at launch.

abstract: |
Per-chain member of the RPC latency cluster, extended to Acala.
We measure the round-trip latency of a Substrate chain_getHeader query against
every available public Acala endpoint that sustains continuous probing:
3 providers at launch, every 60 seconds, from us-east, eu-west and
Singapore. Each provider is probed via a JSON-RPC POST (chain_getHeader)
from which the block number is extracted.
The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout)
with a Polkadot-scaled staleness gap (40 blocks, around 8 min at 12 s/block).
The cross-chain view lives on the parent rpc-capabilities benchmark;
this page is the Acala-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\":\"chain_getHeader\",\"params\":[]}. The result contains a number field (hex-encoded block number)."
- "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 (parsable block height returned), http_err, jsonrpc_err, stale (block more than 40 behind the cross-provider tip), timeout."
- "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=acala. Provider coverage at launch: 3 endpoints (Dwellir, Acala RPC-0, Acala RPC-2)."

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

faq:
- q: "What is the fastest free Acala RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (Acala block height 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 Acala RPC endpoints work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: Dwellir (acala-rpc.n.dwellir.com), Acala RPC-0 (acala-rpc-0.aca-api.network) and Acala RPC-2 (acala-rpc-2.aca-api.network). Every listed endpoint was live-verified before inclusion."
- q: "Does the fastest Acala RPC change by region?"
a: "Often. Dwellir is Europe-focused while the Acala official nodes have fixed infrastructure. Rankings shift depending on your geographic origin. The region tabs re-scope every number to a single origin."
- q: "How does Acala RPC latency compare to other Polkadot parachains?"
a: "All Polkadot parachains use the same Substrate JSON-RPC probe (chain_getHeader), making latency directly comparable across the per-chain RPC cluster. The parent rpc-capabilities benchmark shows the cross-chain view."

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

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: dwellir
name: Dwellir
tag: Dwellir public Acala RPC, no API key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a chain_getHeader POST sent every 60s from 3 regions to acala-rpc.n.dwellir.com."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="dwellir", chain="acala"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="dwellir", chain="acala"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="dwellir", chain="acala"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="dwellir", chain="acala"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="dwellir", chain="acala"}) / sum(ocb:rpc_call:rate_24h{provider="dwellir", chain="acala"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="dwellir", chain="acala"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="dwellir", chain="acala"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="dwellir", chain="acala", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="dwellir", chain="acala", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="dwellir", chain="acala", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="dwellir", chain="acala", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="dwellir", chain="acala", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="dwellir", chain="acala", region="sgp"}[1h])

- slug: acala-rpc0
name: Acala (RPC-0)
tag: Acala official public RPC node 0 (aca-api.network), no API key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a chain_getHeader POST sent every 60s from 3 regions to acala-rpc-0.aca-api.network."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc0", chain="acala"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="acala-rpc0", chain="acala"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="acala-rpc0", chain="acala"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="acala-rpc0", chain="acala"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="acala-rpc0", chain="acala"}) / sum(ocb:rpc_call:rate_24h{provider="acala-rpc0", chain="acala"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="acala-rpc0", chain="acala"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="acala-rpc0", chain="acala"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc0", chain="acala", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="acala-rpc0", chain="acala", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc0", chain="acala", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="acala-rpc0", chain="acala", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc0", chain="acala", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="acala-rpc0", chain="acala", region="sgp"}[1h])

- slug: acala-rpc2
name: Acala (RPC-2)
tag: Acala official public RPC node 2 (aca-api.network), no API key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a chain_getHeader POST sent every 60s from 3 regions to acala-rpc-2.aca-api.network."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc2", chain="acala"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="acala-rpc2", chain="acala"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="acala-rpc2", chain="acala"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="acala-rpc2", chain="acala"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="acala-rpc2", chain="acala"}) / sum(ocb:rpc_call:rate_24h{provider="acala-rpc2", chain="acala"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="acala-rpc2", chain="acala"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="acala-rpc2", chain="acala"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc2", chain="acala", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="acala-rpc2", chain="acala", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc2", chain="acala", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="acala-rpc2", chain="acala", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="acala-rpc2", chain="acala", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="acala-rpc2", chain="acala", region="sgp"}[1h])
Loading
Loading