Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
99bb913
fix(harnesses): cap LZ/CCIP/Axelar cardinality to bench-tracked chain…
Flotapponnier Aug 28, 2026
2708d1a
fix(cache): strip heavy fields from aggregate blob to pass 2MB limit …
Flotapponnier Aug 28, 2026
9039b8d
fix: include still-open Gains positions in carry projection (#2189)
Flotapponnier Aug 29, 2026
b37c7bb
fix: update Gains action names v5→v6, handle position size increases …
Flotapponnier Aug 29, 2026
26a1ef1
fix: Gains carry projection (v6 action names + still-open positions)
Flotapponnier Aug 29, 2026
9aec777
fix: widen coin name column for long tickers (xyz:NVDA)
Flotapponnier Aug 29, 2026
4ee8273
feat(rpc): add Union bench #253 (Nodes.Guru, Stake And Relax, High St…
Flotapponnier Aug 29, 2026
e1def89
fix(union-rpc): remove em dashes from YAML (#2196)
Flotapponnier Aug 29, 2026
9591ec1
feat(rpc): Shentu #254 + MANTRA Chain #255 (#2199)
Flotapponnier Aug 29, 2026
270e98b
feat: Band Protocol #256 + cheqd #257 benches
Flotapponnier Aug 29, 2026
1d3ad1c
fix: bench-blob revalidate 300s to fix perp ISR conflict (#2206)
Flotapponnier Aug 29, 2026
3914371
fix(fee-compare): clearer Gains labels — Position size + vault fee (#…
Flotapponnier Aug 29, 2026
f0b1bbd
fix(fee-compare): total position value + inline vault fee explanation…
Flotapponnier Aug 29, 2026
f0ac45f
fix(fee-compare): remove vault fee — carry fees settled per-action, n…
Flotapponnier Aug 29, 2026
2197a7d
feat(rpc): ICON bench #258 (#2210)
Flotapponnier Aug 30, 2026
a48ce5a
merge main into dev, keep ICON bench additions
Flotapponnier Aug 30, 2026
6fa26c1
fix(rpc): rewrite bench YAMLs 256-258 with proper SpecSchema format
Flotapponnier Aug 30, 2026
7c55ab7
merge main, keep proper SpecSchema icon-rpc.yml
Flotapponnier Aug 30, 2026
12bcb86
fix: show signed HL funding projection, rename Volume to Total positi…
Flotapponnier Aug 30, 2026
2fb8d63
fix: Gains position reconstruction for HL funding projection (#2213)
Flotapponnier Aug 30, 2026
e7037ef
fix: 1yr Gains lookback for accurate HL funding projection (#2214)
Flotapponnier Aug 30, 2026
70f44e4
feat: apples-to-apples fee comparison (HL-comparable coins only)
Flotapponnier Aug 30, 2026
b30332d
fix: HL funding projection accuracy + equivFee + sort + coin filter
Flotapponnier Aug 30, 2026
ac1dc4a
fix(citation): allow negative p50 for deviation benches (#2197)
Flotapponnier Aug 30, 2026
ac3504b
fix: fee-compare accuracy — paginated HL funding, multi-slice positio…
Flotapponnier Aug 30, 2026
84be867
report: fastest Robinhood Chain RPC (Chainstack vs Alchemy vs QuickNode)
Flotapponnier Aug 31, 2026
9344fa6
Merge pull request #2218 from ChainBench/report/robinhood-rpc
Flotapponnier Aug 31, 2026
4de0f17
fee-compare: signed funding, maker/taker-aware equiv, symmetric coin …
Flotapponnier Aug 31, 2026
a2790ff
report: retitle Best Robinhood Chain RPC, scope claims to 24h median
Flotapponnier Aug 31, 2026
2fb5ec1
Merge pull request #2220 from ChainBench/report/robinhood-rpc-v2
Flotapponnier Aug 31, 2026
2caf47a
fix(reports): use per-report OG card instead of site-wide fallback
Flotapponnier Aug 31, 2026
be0aeea
Merge pull request #2221 from ChainBench/fix/report-og-image
Flotapponnier Aug 31, 2026
7fa9eb8
feat(rpc): link keyed-rpc benches into the /rpc cluster (both directi…
Flotapponnier Aug 31, 2026
c1f0e6c
Merge pull request #2222 from ChainBench/feat/keyed-rpc-cluster-link
Flotapponnier Aug 31, 2026
ee79b59
feat(bench-243): add Singapore probe region to keyed-rpc-robinhood
Flotapponnier Sep 1, 2026
5929d77
Merge pull request #2223 from ChainBench/feat/keyed-robinhood-sgp-region
Flotapponnier Sep 1, 2026
5abd8d9
fee-compare: fix signed-carry gates, Paradex signed funding, GMX sche…
Flotapponnier Sep 1, 2026
43bd73c
fix(bench-243): per-provider regions queries so the region picker ren…
Flotapponnier Sep 1, 2026
f83a656
Merge pull request #2226 from ChainBench/fix/keyed-robinhood-region-p…
Flotapponnier Sep 1, 2026
a9447d5
feat(spec): aggregate_filters — pin the unfiltered build to a dimensi…
Flotapponnier Sep 1, 2026
6a9a4ca
Merge pull request #2227 from ChainBench/feat/aggregate-filters
Flotapponnier Sep 1, 2026
79b9963
fix(bench-243): prod is Singapore-only — no dims inherited from snaps…
Flotapponnier Sep 1, 2026
ec5d7dc
Merge pull request #2229 from ChainBench/fix/prod-sgp-only-dev
Flotapponnier Sep 1, 2026
1c84855
fix: by-region grid driven by live spec (port from main)
Flotapponnier Sep 1, 2026
bd36e9f
Merge pull request #2231 from ChainBench/fix/region-grid-sgp-dev
Flotapponnier Sep 1, 2026
54a221f
report: align Robinhood RPC report on Singapore probe and current med…
Flotapponnier Sep 2, 2026
f4a6de5
Merge pull request #2232 from ChainBench/fix/report-sgp-align
Flotapponnier Sep 2, 2026
d31a569
fix(bench-243): dev texts — discreet region wording, headline cites S…
Flotapponnier Sep 2, 2026
86159ad
Merge pull request #2233 from ChainBench/fix/dev-spec-useast-text
Flotapponnier Sep 2, 2026
4a82f93
feat: add OG image cards for all hub pages missing dedicated cards (#…
Flotapponnier Sep 2, 2026
48a261c
feat: add OG image cards for dynamic routes
Flotapponnier Sep 3, 2026
3d08c44
perf(seo): cache OG renders, SSR home ticker snapshot, fee-compare JS…
Flotapponnier Sep 3, 2026
bc88d16
Merge pull request #2236 from ChainBench/fix/og-cache-ssr-home
Flotapponnier Sep 3, 2026
843b347
feat: /speedtest-rpc — browser-side RPC speed test with live gauge
Flotapponnier Sep 3, 2026
945cc91
Merge pull request #2238 from ChainBench/feat/speedtest-rpc
Flotapponnier Sep 3, 2026
a690c83
fix(speedtest): allow https connect-src on /speedtest-rpc — site CSP …
Flotapponnier Sep 3, 2026
586d3d6
Merge pull request #2239 from ChainBench/fix/speedtest-csp
Flotapponnier Sep 3, 2026
b08e373
feat(speedtest): one live gauge per endpoint, clearer no-CORS state
Flotapponnier Sep 3, 2026
ec275d4
Merge pull request #2240 from ChainBench/feat/speedtest-multigauge
Flotapponnier Sep 3, 2026
6f25680
feat(speedtest): chain picker prefills the benchmarked no-key cohort
Flotapponnier Sep 3, 2026
c0391e3
Merge pull request #2241 from ChainBench/feat/speedtest-chainpicker
Flotapponnier Sep 3, 2026
2e05db8
fix(speedtest): directory filtered to public bench cohorts (drop MEV …
Flotapponnier Sep 3, 2026
47e04a1
Merge pull request #2242 from ChainBench/fix/speedtest-directory-cohort
Flotapponnier Sep 3, 2026
7ac6902
feat(speedtest): validate prefills in-browser, hide blocked tiles, pr…
Flotapponnier Sep 3, 2026
f51c7b9
Merge pull request #2243 from ChainBench/feat/speedtest-polish
Flotapponnier Sep 3, 2026
665a5ef
feat(speedtest): live instrument feel — concurrent probes, rAF needle…
Flotapponnier Sep 3, 2026
152594e
Merge pull request #2244 from ChainBench/feat/speedtest-live-feel
Flotapponnier Sep 3, 2026
1264fb6
fix(speedtest): drop em dashes from user-facing copy
Flotapponnier Sep 3, 2026
e7e3cbe
Merge pull request #2245 from ChainBench/fix/speedtest-no-emdash
Flotapponnier Sep 3, 2026
36253c0
feat(speedtest): responsive polish — readout in dial mouth, self-cent…
Flotapponnier Sep 3, 2026
43eff57
Merge pull request #2246 from ChainBench/feat/speedtest-responsive-po…
Flotapponnier Sep 3, 2026
9d79070
feat(speedtest): SEO/GEO pass — FAQ + FAQPage JSON-LD, open-source li…
Flotapponnier Sep 3, 2026
e7aac1d
Merge pull request #2247 from ChainBench/feat/speedtest-seo
Flotapponnier Sep 3, 2026
edd09bb
feat(speedtest): stop button moved below progress, red outlined
Flotapponnier Sep 3, 2026
5c7267d
Merge pull request #2248 from ChainBench/feat/speedtest-stop-button
Flotapponnier Sep 3, 2026
62d45f6
feat(speedtest): dedicated OG/Twitter card with the dial
Flotapponnier Sep 3, 2026
f9dee57
Merge pull request #2249 from ChainBench/feat/speedtest-og
Flotapponnier Sep 3, 2026
a044a66
fix(speedtest): OG card without svg text nodes (satori limitation)
Flotapponnier Sep 3, 2026
667ce5a
Merge pull request #2250 from ChainBench/fix/speedtest-og-satori
Flotapponnier Sep 3, 2026
36ddbdf
feat: crowdsourced RPC latency world map (/rpc-map) + anonymous contr…
Flotapponnier Sep 4, 2026
a917482
Merge pull request #2251 from ChainBench/feat/rpc-map
Flotapponnier Sep 4, 2026
8f4618b
feat(map): chain search, provider multi-compare, viewport-driven rank…
Flotapponnier Sep 4, 2026
931a6a1
Merge pull request #2252 from ChainBench/feat/rpc-map-v2
Flotapponnier Sep 4, 2026
e1d1509
feat(map): clickable cells with per-provider history and freshness
Flotapponnier Sep 4, 2026
ae8735d
Merge pull request #2253 from ChainBench/feat/rpc-map-cell-detail
Flotapponnier Sep 4, 2026
d35b246
feat(map): near-me geolocation and droppable pin with nearest-area re…
Flotapponnier Sep 4, 2026
e920e4a
Merge pull request #2254 from ChainBench/feat/rpc-map-pin
Flotapponnier Sep 4, 2026
3822e85
fix(speedtest): fail-open prefill validation when every endpoint flunks
Flotapponnier Sep 4, 2026
2d8be3f
Merge pull request #2255 from ChainBench/fix/speedtest-failopen
Flotapponnier Sep 4, 2026
61acfc3
fix(bench-205): Solana-scoped volumes via chain overview, GMGN was sh…
Flotapponnier Sep 5, 2026
c9557df
Merge pull request #2259 from ChainBench/fix/solana-dex-volume-scope
Flotapponnier Sep 5, 2026
6adc842
feat: add Serialized as provider on benches 004 and 008 (#2261)
Flotapponnier Sep 5, 2026
1fcd0ca
feat: declare Serialized in the 004 and 008 bench specs (#2262)
Flotapponnier Sep 5, 2026
10806b6
feat: add Serialized to benches 005 and 090 (chain coverage) (#2263)
Flotapponnier Sep 5, 2026
7ad99d5
docs: correct the head-lag claim in the Serialized audit, add follow-…
Flotapponnier Sep 5, 2026
c0b19d1
docs: correct the BONK root cause to a pool-ranking unit bug, add tok…
Flotapponnier Sep 5, 2026
cab4937
fix: add stricter companion series to benches 004 and 008 (#2266)
Flotapponnier Sep 5, 2026
2c05e5d
fix(001): measure head lag against a node we hold, not the provider's…
Flotapponnier Sep 5, 2026
c19bfde
feat(001): add Serialized to aggregator-head-lag (#2268)
Flotapponnier Sep 5, 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
28 changes: 26 additions & 2 deletions benchmarks/aggregator-head-lag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,13 @@ abstract: |
same event.

methodology:
- "Aggregators measured: Mobula, Codex, GeckoTerminal."
- "Aggregators measured: Mobula, Codex, GeckoTerminal, Serialized."
- "Chains: Base, BNB Chain, Solana, Robinhood Chain."
- "Regions: us-east, eu-west, sgp. Cross-region median reported in the headline."
- "Reference: archive nodes per chain, validated against block hashes."
- "Metric: gauge `head_lag_seconds`, sampled every 15 seconds. Aggregated over the 24-hour window using `quantile_over_time`."
- "Success rate: presence ratio. Share of expected sampling slots where a value was actually emitted (5,760 expected per provider per day at the 15s cadence). 100% means the aggregator's feed was reachable for the full window."
- "Cardinality: 3 aggregators × 4 chains × 3 regions = 36 active series."
- "Cardinality: 4 aggregators × 4 chains × 3 regions = 48 active series."

findings:
- "Cross-chain average puts {{best_name}} on top at {{best_p50}} (p50, 24h) across {{count}} providers. Per-chain leaders differ: Base {{best_name:chain:base}} at {{best_p50:chain:base}}, Solana {{best_name:chain:solana}} at {{best_p50:chain:solana}}, BNB {{best_name:chain:bnb}} at {{best_p50:chain:bnb}}, Robinhood {{best_name:chain:robinhood}} at {{best_p50:chain:robinhood}}. Chains differ in block cadence (Solana 400ms vs Base/BNB 2-3s), which shifts the floor independently of provider speed."
Expand Down Expand Up @@ -217,6 +217,30 @@ providers:
p50: avg by (aggregator) (quantile_over_time(0.50, head_lag_seconds{aggregator="codex", region="sgp"}[24h])) * 1000
series: avg_over_time(head_lag_seconds{aggregator="codex", region="sgp"}[1h]) * 1000 unless (changes(head_lag_seconds{aggregator="codex", region="sgp"}[15m]) == 0 and count_over_time(head_lag_seconds{aggregator="codex", region="sgp"}[15m]) > 5 and on(chain, region) sum by (chain, region) (changes(head_lag_seconds{region="sgp"}[15m])) > 5 and on(aggregator, region) avg_over_time(ws_connected{aggregator="codex", region="sgp", chain=""}[15m]) > 0.8)

- slug: serialized
name: Serialized
tag: WebSocket trades stream
formula: "Median seconds between an on-chain swap on the bench pools and the same trade arriving on Serialized's WebSocket trades stream (subscribed per pool by its token side), sampled every 15s over 24h."
queries:
p50: avg by (aggregator) (quantile_over_time(0.50, head_lag_seconds{aggregator="serialized"}[24h])) * 1000
p90: avg by (aggregator) (quantile_over_time(0.90, head_lag_seconds{aggregator="serialized"}[24h])) * 1000
p99: avg by (aggregator) (quantile_over_time(0.99, head_lag_seconds{aggregator="serialized"}[24h])) * 1000
mean: avg by (aggregator) (avg_over_time(head_lag_seconds{aggregator="serialized"}[24h])) * 1000
success: clamp_max(avg by (aggregator) (count_over_time(head_lag_seconds{aggregator="serialized"}[24h]) / 5760), 1)
sample_size: sum(count_over_time(head_lag_seconds{aggregator="serialized"}[24h]))
series: avg_over_time(head_lag_seconds{aggregator="serialized"}[1h]) * 1000 unless (changes(head_lag_seconds{aggregator="serialized"}[15m]) == 0 and count_over_time(head_lag_seconds{aggregator="serialized"}[15m]) > 5 and on(chain, region) sum by (chain, region) (changes(head_lag_seconds{}[15m])) > 5 and on(aggregator, region) avg_over_time(ws_connected{aggregator="serialized", chain=""}[15m]) > 0.8)
live_activity: sum(changes(head_lag_seconds{aggregator="serialized"}[15m]))
regions:
- region: us-east
p50: avg by (aggregator) (quantile_over_time(0.50, head_lag_seconds{aggregator="serialized", region="us-east"}[24h])) * 1000
series: avg_over_time(head_lag_seconds{aggregator="serialized", region="us-east"}[1h]) * 1000 unless (changes(head_lag_seconds{aggregator="serialized", region="us-east"}[15m]) == 0 and count_over_time(head_lag_seconds{aggregator="serialized", region="us-east"}[15m]) > 5 and on(chain, region) sum by (chain, region) (changes(head_lag_seconds{region="us-east"}[15m])) > 5 and on(aggregator, region) avg_over_time(ws_connected{aggregator="serialized", region="us-east", chain=""}[15m]) > 0.8)
- region: eu-west
p50: avg by (aggregator) (quantile_over_time(0.50, head_lag_seconds{aggregator="serialized", region="eu-west"}[24h])) * 1000
series: avg_over_time(head_lag_seconds{aggregator="serialized", region="eu-west"}[1h]) * 1000 unless (changes(head_lag_seconds{aggregator="serialized", region="eu-west"}[15m]) == 0 and count_over_time(head_lag_seconds{aggregator="serialized", region="eu-west"}[15m]) > 5 and on(chain, region) sum by (chain, region) (changes(head_lag_seconds{region="eu-west"}[15m])) > 5 and on(aggregator, region) avg_over_time(ws_connected{aggregator="serialized", region="eu-west", chain=""}[15m]) > 0.8)
- region: ap-southeast
p50: avg by (aggregator) (quantile_over_time(0.50, head_lag_seconds{aggregator="serialized", region="sgp"}[24h])) * 1000
series: avg_over_time(head_lag_seconds{aggregator="serialized", region="sgp"}[1h]) * 1000 unless (changes(head_lag_seconds{aggregator="serialized", region="sgp"}[15m]) == 0 and count_over_time(head_lag_seconds{aggregator="serialized", region="sgp"}[15m]) > 5 and on(chain, region) sum by (chain, region) (changes(head_lag_seconds{region="sgp"}[15m])) > 5 and on(aggregator, region) avg_over_time(ws_connected{aggregator="serialized", region="sgp", chain=""}[15m]) > 0.8)

- slug: geckoterminal
name: GeckoTerminal
tag: REST feed
Expand Down
13 changes: 13 additions & 0 deletions benchmarks/asset-registry-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,19 @@ providers:
sample_size: networks_supported_total{provider="coingecko"}
series: networks_supported_total{provider="coingecko"}

- slug: serialized
name: Serialized
tag: Own indexers, 18 EVM + Solana
formula: "Count of chains returned as live by Serialized's `/v1/meta/chains` endpoint, refreshed every 6 hours."
queries:
p50: networks_supported_total{provider="serialized"}
p90: networks_supported_total{provider="serialized"}
p99: networks_supported_total{provider="serialized"}
mean: networks_supported_total{provider="serialized"}
success: clamp_max(networks_supported_total{provider="serialized"} > bool 0, 1)
sample_size: networks_supported_total{provider="serialized"}
series: networks_supported_total{provider="serialized"}

- slug: coinpaprika
name: CoinPaprika
tag: Market-data API asset registry
Expand Down
159 changes: 131 additions & 28 deletions benchmarks/bandchain-rpc.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,138 @@
id: 256
# OpenChainBench. Bench No 256

slug: bandchain-rpc
title: "Band Protocol RPC"
chain: bandchain
description: "Latency and availability benchmark for Band Protocol public RPC endpoints"
category: rpc
kind: cosmos
number: "256"
title: Fastest free Band Protocol RPC, live no-key endpoint latency
seo_title: "Fastest free Band Protocol RPC 2026"
seo_description: "{{best_name}} leads free Band Protocol RPC at {{best_p50}} (block height p50, 24h). 3 no-key providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for Tendermint /status queries against every available public Band Protocol (laozi-mainnet) endpoint, audited every 60 seconds from 3 regions.

providers:
- slug: band-official
name: "Band Protocol"
url: "http://rpc.laozi1.bandchain.org:80"
- slug: highstakes
name: "High Stakes"
url: "https://bandprotocol-rpc.highstakes.ch"
- slug: stakewolle
name: "Stakewolle"
url: "https://public.stakewolle.com/cosmos/bandchain/rpc"
category: RPCs
status: live
metric: RPC latency
unit: ms
higher_is_better: false

seo_intro: |
Band Protocol is a cross-chain oracle network built on Cosmos SDK that aggregates and connects real-world data and APIs to smart contracts. The laozi-mainnet hosts its decentralized data oracle infrastructure, enabling DeFi protocols across multiple blockchains to access tamper-proof price feeds.
Band Protocol is a cross-chain decentralized oracle network built on Cosmos SDK (chain ID laozi-mainnet). It aggregates and connects real-world data and APIs to smart contracts across multiple blockchains via its Yoda oracle daemon and data feed infrastructure. The chain uses the standard Tendermint RPC interface; block height is fetched via the /status endpoint. Public keyless RPC nodes are provided by the Band Protocol official team, High Stakes, and Stakewolle. Every provider was live-verified with consecutive block-height probes at launch.

This benchmark continuously measures RPC latency, availability and block-height freshness across public Band Protocol Tendermint endpoints from three geographic regions. Use it to select the fastest endpoint for your integration or validator setup.
abstract: |
Per-chain member of the RPC latency cluster, extended to Band Protocol (laozi-mainnet).
We measure the round-trip latency of a Tendermint /status query against
every available public Band Protocol 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 GET /status request
from which the block number is extracted.
The harness classifies every response (ok / http_err / jsonrpc_err / stale / timeout)
with a Cosmos-scaled staleness gap (40 blocks, around 4 min at 6 s/block).
The cross-chain view lives on the parent rpc-capabilities benchmark;
this page is the Band Protocol-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: GET /status. The result.sync_info.latest_block_height field is extracted as the current block height."
- "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=bandchain. Provider coverage at launch: 3 endpoints (Band Protocol official, High Stakes, Stakewolle)."

findings:
- "{{best_name}} leads free Band Protocol RPC at {{best_p50}} (Tendermint /status p50, 24h) across 3 measured providers."

faq:
- q: "What does this benchmark measure?"
a: "Each probe issues a GET /status request with anti-cache headers to retrieve the latest block height. We record round-trip latency (p50/p90/p99), HTTP availability, and whether the returned block height is current. Probes run every 30 seconds from US East, EU West, and AP Southeast."
- q: "Which endpoints are included?"
a: "The benchmark covers the Band Protocol official endpoint (rpc.laozi1.bandchain.org), High Stakes, and Stakewolle. All three are keyless public endpoints requiring no authentication."
- q: "Why does Band Protocol RPC performance matter?"
a: "Band Protocol validators and oracle scripts depend on reliable RPC access to submit data requests and retrieve oracle results. DeFi protocols integrating Band price feeds need low-latency RPC for real-time data consumption."
- q: "How are oracle scripts affected by RPC latency?"
a: "Yoda (the oracle daemon) and Bothan (data proxy) both rely on RPC to monitor pending data requests and submit responses within the request window. High latency or downtime directly reduces oracle reliability and can cause missed rewards."
- q: "Can I contribute an endpoint?"
a: "Yes. Open an issue or PR at github.com/ChainBench/OpenChainBench with the endpoint URL and operator name. We verify liveness and independence before adding."
- q: "What is the fastest free Band Protocol RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (Band Protocol 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 Band Protocol RPC endpoints work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: Band Protocol official (rpc.laozi1.bandchain.org), High Stakes (bandprotocol-rpc.highstakes.ch), and Stakewolle (public.stakewolle.com/cosmos/bandchain/rpc). Every listed endpoint was live-verified before inclusion."
- q: "What is Band Protocol and why does its RPC latency matter?"
a: "Band Protocol is a cross-chain data oracle that aggregates real-world data feeds and delivers them to smart contracts via oracle scripts. Validators running the Yoda daemon and DeFi protocols consuming Band price feeds both depend on low-latency reliable RPC access to the Band chain."
- q: "Does the fastest Band Protocol RPC change by region?"
a: "Yes. The official Band node and community validators are hosted in different regions. The region tabs re-scope every number to a single probe origin so you can pick the best endpoint for your deployment geography."
- q: "What is the BAND token?"
a: "BAND is the native staking and governance token of Band Protocol (denominated as uband on-chain). It is used to stake as validators, pay for oracle data requests, and participate in on-chain governance of the laozi-mainnet."

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

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

- slug: highstakes
name: High Stakes
tag: High Stakes public Band Protocol RPC, no API key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a GET /status sent every 60s from 3 regions to bandprotocol-rpc.highstakes.ch."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="highstakes", chain="bandchain"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="highstakes", chain="bandchain"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="highstakes", chain="bandchain"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="highstakes", chain="bandchain"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="highstakes", chain="bandchain"}) / sum(ocb:rpc_call:rate_24h{provider="highstakes", chain="bandchain"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="highstakes", chain="bandchain"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="highstakes", chain="bandchain"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="highstakes", chain="bandchain", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="highstakes", chain="bandchain", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="highstakes", chain="bandchain", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="highstakes", chain="bandchain", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="highstakes", chain="bandchain", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="highstakes", chain="bandchain", region="sgp"}[1h])

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