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
136 changes: 136 additions & 0 deletions benchmarks/kava-rpc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# OpenChainBench. Bench № 121

slug: kava-rpc
number: "121"
title: Fastest free Kava RPC, live no-key EVM endpoint latency
seo_title: "Fastest free Kava RPC 2026"
seo_description: "{{best_name}} leads free Kava RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h). 3 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 Kava EVM endpoint, audited every 60 seconds from 3 regions.

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

seo_intro: |
Kava is a Cosmos SDK Layer 1 (chain 2222) with a native EVM execution layer, ~5 s block time under Tendermint BFT consensus, KAVA gas token on the EVM side, and IBC connectivity to the wider Cosmos ecosystem. The 2026-07-03 long-tail sweep excluded Kava for not meeting the 3-provider threshold; re-audit on 2026-08-02 confirms Thirdweb now supports Kava EVM, bringing the total to 3 clean keyless providers: the Kava Labs official endpoint (evm.kava.io), dRPC, and Thirdweb. Excluded by this launch audit: PublicNode (method-not-found on eth_getBlockByNumber), Tenderly (no kava route), Blast API (no listing), OnFinality (rate-limited without a key), 1RPC (unknown network).

abstract: |
Per-chain member of the RPC latency cluster, extended to Kava EVM.
We measure the round-trip latency of a single, identical JSON-RPC call
(`eth_getBlockByNumber(\"latest\", false)`) against every no-key public
Kava EVM endpoint 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 Kava-scaled staleness gap (20 blocks
at Kava's ~5 s block time). The cross-chain view
lives on the parent `rpc-capabilities` benchmark; this page is the
Kava-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. 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 20 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=\"kava\"`. Provider coverage at launch: 3 no-key endpoints."

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

faq:
- q: "What is the fastest free Kava RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber(\"latest\", false)` p50 over the last 24h), measured against 3 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 Kava RPCs work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: the Kava Labs official endpoint (evm.kava.io), dRPC, and Thirdweb. 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 Kava 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 Kava 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="kava"})

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: kava-official
name: Kava Labs
tag: Kava Labs official 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 Kava Labs's no-key kava EVM RPC endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="kava-official", chain="kava"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="kava-official", chain="kava"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="kava-official", chain="kava"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="kava-official", chain="kava"}) / sum(ocb:rpc_call:rate_24h{provider="kava-official", chain="kava"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="kava-official", chain="kava"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="kava-official", chain="kava", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="kava-official", chain="kava", region="sgp"}[1h])

- slug: drpc
name: dRPC
tag: dRPC public gateway routing to Kava 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 kava RPC endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="kava"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="kava"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="kava"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="kava"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="kava"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="kava"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="kava", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="kava", region="sgp"}[1h])

- slug: thirdweb
name: Thirdweb
tag: Thirdweb public RPC gateway for Kava 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 kava RPC endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="thirdweb", chain="kava"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="thirdweb", chain="kava"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="thirdweb", chain="kava"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="thirdweb", chain="kava"}) / sum(ocb:rpc_call:rate_24h{provider="thirdweb", chain="kava"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="thirdweb", chain="kava"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="thirdweb", chain="kava", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="thirdweb", chain="kava", region="sgp"}[1h])
15 changes: 1 addition & 14 deletions benchmarks/perp-cost-slope.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ methodology:
- "Cadence: derived in PromQL from perp_fees_all_in_bps_tier, refreshed every 5 minutes by the perp-fees harness (bench 007)."
- "Cost slope = avg_over_time(all_in_bps_tier{notional=1000000}[24h]) / ignoring(notional) avg_over_time(all_in_bps_tier{notional=1000}[24h]) per venue per asset. A ratio of 1.00 means flat cost across sizes."
- "Oracle-priced venues (gains.trade, GMX v2): the fee is a flat percentage of position size with no orderbook. The $1M all-in equals the $1k all-in in bps exactly, so slope = 1.00 always."
- "Orderbook venues (Hyperliquid, dYdX, Lighter, Paradex, Extended, Aster, edgeX): the $1M tier walks deeper into the book than the $1k tier, so the spread component grows and slope > 1.00."
- "Orderbook venues (Hyperliquid, dYdX, Lighter, Extended, Aster, edgeX): the $1M tier walks deeper into the book than the $1k tier, so the spread component grows and slope > 1.00."
- "Missing $1M tier: when the visible book cannot absorb $1M the harness skips the tier and increments perp_fees_tier_skipped_total rather than extrapolating. The slope PromQL returns no data for that venue, shown as N/A in the leaderboard."
- "Fill-rate panel: count_over_time(tier{notional=1000000}[24h]) / ignoring(notional) count_over_time(tier{notional=1000}[24h]) per venue per asset. 1.00 = tier always filled; 0.50 = tier filled half the time; 0.00 = tier never filled."
- "Chain tabs: the board is scoped per asset (ETH, BTC, SOL) because book depth differs significantly across assets and cross-asset averaging obscures the signal."
Expand Down Expand Up @@ -196,19 +196,6 @@ providers:
sample_size: count_over_time(perp_fees_all_in_bps_tier{venue="dydx",notional="1000000"}[24h])
series: perp_fees_all_in_bps_tier{venue="dydx",notional="1000000"}

- slug: paradex
name: Paradex
tag: "Starknet appchain perps, 100-level book"
formula: "all_in_bps_tier{notional=1000000}[24h] / all_in_bps_tier{notional=1000}[24h]. Orderbook: Starknet appchain, 100-level book depth caps visible depth at ~$1M on majors."
queries:
p50: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h])
p90: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="100000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h])
p99: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="10000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h])
mean: avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}[24h]) / ignoring(notional) avg_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000"}[24h])
success: avg_over_time(perp_fees_health{venue="paradex"}[24h])
sample_size: count_over_time(perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}[24h])
series: perp_fees_all_in_bps_tier{venue="paradex",notional="1000000"}

- slug: extended
name: Extended
tag: "Starknet perps, full public book"
Expand Down
10 changes: 5 additions & 5 deletions benchmarks/validator-yield-hyperliquid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

slug: validator-yield-hyperliquid
number: "115"
title: Hyperliquid validator leaderboardlive net APR, uptime, commission
title: "Hyperliquid validator leaderboard: live net APR, uptime, commission"
seo_title: "Best Hyperliquid validators 2026: yield, commission, uptime ranked"
seo_description: "Live Hyperliquid validator leaderboard ranked by net APR. All 34 validators tracked: net yield in bps, commission rate, uptime %, delegated stake in USD. Updated every 5 minutes from /info validatorSummaries."
subtitle: Per-validator net yield (predictedApr.day × uptime) in basis points across all 34 Hyperliquid validators. Ranked by net APR; commission and uptime shown as secondary columns.
Expand All @@ -13,13 +13,13 @@ unit: bps
higher_is_better: true

disclaimer: |
Honest scope. (1) `net_yield = predictedApr.day × uptimeFraction` from the Hyperliquid `/info validatorSummaries` endpoint. (2) No MEV layer exists at the validator level on Hyperliquidthe centralised sequencer captures order-flow value upstream. MEV is structurally absent from all figures. (3) Jailed validators (currently 6) land in the dataset with `predictedApr=0` and `net_yield=0`; they rank at the bottom. (4) APRs across the active set are tightly clustered (~200–225 bps) because Hyperliquid distributes rewards evenly across non-jailed validators — commission rate is the primary differentiator for delegators.
net_yield = predictedApr.day x uptimeFraction from /info validatorSummaries. No MEV layer at the validator level on Hyperliquid; the centralised sequencer captures order-flow value upstream. Jailed validators land at 0 bps regardless of published APR. APRs cluster at 200 to 225 bps across the active set; commission rate is the primary differentiator for delegators.

seo_intro: |
Hyperliquid runs a permissioned validator set of ~30 active nodes. Unlike
Solana's ~3000-validator market where yield spreads across hundreds of bps,
every non-jailed Hyperliquid validator earns the same gross APR from the
protocol the only differentiation is commission rate, uptime, and jail
protocol; the only differentiation is commission rate, uptime, and jail
risk. This page surfaces the full active set, ranked by net yield
(gross APR after commission and downtime drag), so a delegator can see
exactly which operators take the smallest cut and stay online.
Expand Down Expand Up @@ -50,8 +50,8 @@ methodology:

findings:
- "Commission is the only meaningful differentiator among healthy Hyperliquid validators: all active non-jailed validators earn the same gross APR (~225 bps as of this snapshot). A delegator choosing between them is effectively choosing a commission rate."
- "Zero-commission validators (infinitefield.xyz, HyperStake, CMI, Flowdex) lead the net yield ranking by construction they take no cut from delegators."
- "The four Hyper Foundation validators (14) collectively hold ~$10B+ in staked HYPE and charge 3% commission (300 bps). Foundation-5 added later at the same terms."
- "Zero-commission validators (infinitefield.xyz, HyperStake, CMI, Flowdex) lead the net yield ranking by construction; they take no cut from delegators."
- "The four Hyper Foundation validators (1 to 4) collectively hold ~$10B+ in staked HYPE and charge 3% commission (300 bps). Foundation-5 added later at the same terms."
- "Anchorage By Figment charges 10% commission (1000 bps), the highest among active non-jailed validators, which reduces delegator net yield by ~20 bps relative to zero-commission nodes."
- "6 validators are currently jailed (Figment, Falcon Capital, Asymmetric Research, HyperCN X hlscan, Red Pond, cp0x by STAKR.space). They earn 0 yield and their delegated stake is minimal (<10k HYPE each)."

Expand Down
Loading
Loading