diff --git a/benchmarks/bridge-quote-latency.yml b/benchmarks/bridge-quote-latency.yml index a26569f1..7362a22e 100644 --- a/benchmarks/bridge-quote-latency.yml +++ b/benchmarks/bridge-quote-latency.yml @@ -112,7 +112,7 @@ faq: # rank_matrix_query required by spec validator when dimensions.region is declared. # label_replace maps bridge= → provider= so badge scoping works per region. -rank_matrix_query: histogram_quantile(0.50, sum by (provider, region, le) (label_replace(rate(bridge_quote_latency_ms_bucket[24h]), "provider", "$1", "bridge", "(.+)"))) +rank_matrix_query: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h_provider) providers: - slug: mobula @@ -120,22 +120,22 @@ providers: tag: Aggregator + intent layer formula: "Median wall-clock ms over 24h for Mobula's quote API to return a usable USDC route, sampled every 5 minutes across 4 routes and 3 notionals from 3 regions (eu-west, us-east, sgp)." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="mobula"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="mobula"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="mobula"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="mobula"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="mobula"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="mobula"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="mobula"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="mobula"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="mobula"} + success: ocb:bridge_quote_success:avg24h{bridge="mobula"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="mobula"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula"}[1h]))) regions: - region: eu-west - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula", region="eu-west"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="mobula", region="eu-west"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula", region="eu-west"}[1h]))) - region: us-east - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula", region="us-east"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="mobula", region="us-east"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula", region="us-east"}[1h]))) - region: sgp - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula", region="sgp"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="mobula", region="sgp"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="mobula", region="sgp"}[1h]))) - slug: relay @@ -143,22 +143,22 @@ providers: tag: Cross-chain relay formula: "Median wall-clock ms over 24h for Relay's solver-quote API to return a usable USDC route, sampled every 5 minutes across 4 routes and 3 notionals from 3 regions (eu-west, us-east, sgp)." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="relay"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="relay"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="relay"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="relay"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="relay"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="relay"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="relay"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="relay"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="relay"} + success: ocb:bridge_quote_success:avg24h{bridge="relay"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="relay"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay"}[1h]))) regions: - region: eu-west - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay", region="eu-west"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="relay", region="eu-west"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay", region="eu-west"}[1h]))) - region: us-east - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay", region="us-east"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="relay", region="us-east"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay", region="us-east"}[1h]))) - region: sgp - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay", region="sgp"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="relay", region="sgp"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="relay", region="sgp"}[1h]))) - slug: lifi @@ -166,22 +166,22 @@ providers: tag: Aggregator formula: "Median wall-clock ms over 24h for LI.FI's route-search API to return a usable USDC route across underlying bridges, sampled every 5 minutes across 4 routes and 3 notionals from 3 regions (eu-west, us-east, sgp)." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="lifi"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="lifi"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="lifi"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="lifi"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="lifi"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="lifi"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="lifi"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="lifi"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="lifi"} + success: ocb:bridge_quote_success:avg24h{bridge="lifi"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="lifi"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi"}[1h]))) regions: - region: eu-west - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi", region="eu-west"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="lifi", region="eu-west"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi", region="eu-west"}[1h]))) - region: us-east - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi", region="us-east"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="lifi", region="us-east"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi", region="us-east"}[1h]))) - region: sgp - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi", region="sgp"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="lifi", region="sgp"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="lifi", region="sgp"}[1h]))) - slug: debridge @@ -189,22 +189,22 @@ providers: tag: Native-token fees formula: "Median wall-clock ms over 24h for deBridge's direct-protocol quote API to return a single-route USDC quote, sampled every 5 minutes across 4 routes and 3 notionals from 3 regions (eu-west, us-east, sgp)." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="debridge"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="debridge"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="debridge"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="debridge"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="debridge"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="debridge"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="debridge"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="debridge"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="debridge"} + success: ocb:bridge_quote_success:avg24h{bridge="debridge"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="debridge"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge"}[1h]))) regions: - region: eu-west - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge", region="eu-west"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="debridge", region="eu-west"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge", region="eu-west"}[1h]))) - region: us-east - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge", region="us-east"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="debridge", region="us-east"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge", region="us-east"}[1h]))) - region: sgp - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge", region="sgp"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="debridge", region="sgp"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="debridge", region="sgp"}[1h]))) - slug: near-intents @@ -212,22 +212,22 @@ providers: tag: Intent layer (NEAR) formula: "Median wall-clock ms over 24h for Near Intents 1Click API to return a usable USDC quote via the solver auction bus, sampled every 5 minutes across the supported routes and 3 notionals from 3 regions (eu-west, us-east, sgp)." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="near-intents"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="near-intents"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="near-intents"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="near-intents"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="near-intents"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="near-intents"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="near-intents"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="near-intents"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="near-intents"} + success: ocb:bridge_quote_success:avg24h{bridge="near-intents"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="near-intents"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents"}[1h]))) regions: - region: eu-west - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents", region="eu-west"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="near-intents", region="eu-west"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents", region="eu-west"}[1h]))) - region: us-east - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents", region="us-east"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="near-intents", region="us-east"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents", region="us-east"}[1h]))) - region: sgp - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents", region="sgp"}[24h]))) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="near-intents", region="sgp"}) series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="near-intents", region="sgp"}[1h]))) - slug: across @@ -235,12 +235,12 @@ providers: tag: Intent layer formula: "Median wall-clock ms over 24h for Across's Swap API to return a usable USDC quote across supported corridors (Sol to Base, Base to Arb) from 3 regions. Arb to Sol excluded: no destination swaps to Solana." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="across"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="across"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="across"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="across"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="across"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="across"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="across"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="across"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="across"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="across"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="across"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="across"} + success: ocb:bridge_quote_success:avg24h{bridge="across"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="across"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="across"}[1h]))) - slug: squid @@ -248,12 +248,12 @@ providers: tag: Aggregator (Axelar) formula: "Median wall-clock ms for Squid Router's v2 API to return a best-output USDC route, p50 over 24h, EVM corridors only (Base to Arb). Solana source excluded: API returns server error." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="squid"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="squid"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="squid"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="squid"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="squid"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="squid"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="squid"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="squid"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="squid"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="squid"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="squid"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="squid"} + success: ocb:bridge_quote_success:avg24h{bridge="squid"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="squid"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="squid"}[1h]))) - slug: socket @@ -261,10 +261,10 @@ providers: tag: Aggregator formula: "Median wall-clock ms for Socket Protocol's v2 API to return a best-output USDC route (via Across, Stargate, CCTP), p50 over 24h, EVM corridors only (Base to Arb)." queries: - p50: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="socket"}[24h]))) - p90: histogram_quantile(0.90, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="socket"}[24h]))) - p99: histogram_quantile(0.99, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="socket"}[24h]))) - mean: sum(rate(bridge_quote_latency_ms_sum{bridge="socket"}[24h])) / sum(rate(bridge_quote_latency_ms_count{bridge="socket"}[24h])) - success: avg(avg_over_time(bridge_quote_success{bridge="socket"}[24h])) - sample_size: sum(increase(bridge_quote_latency_ms_count{bridge="socket"}[24h])) + p50: histogram_quantile(0.50, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="socket"}) + p90: histogram_quantile(0.90, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="socket"}) + p99: histogram_quantile(0.99, ocb:bridge_quote_latency_ms_bucket:rate24h{bridge="socket"}) + mean: ocb:bridge_quote_latency_ms_sum:rate24h{bridge="socket"} / ocb:bridge_quote_latency_ms_count:rate24h{bridge="socket"} + success: ocb:bridge_quote_success:avg24h{bridge="socket"} + sample_size: ocb:bridge_quote_latency_ms_count:increase24h{bridge="socket"} series: histogram_quantile(0.50, sum by (le) (rate(bridge_quote_latency_ms_bucket{bridge="socket"}[1h]))) diff --git a/benchmarks/hydration-rpc.yml b/benchmarks/hydration-rpc.yml index 9fca3db1..61115f2c 100644 --- a/benchmarks/hydration-rpc.yml +++ b/benchmarks/hydration-rpc.yml @@ -8,7 +8,7 @@ seo_description: "Hydration RPC bench temporarily suspended: all 5 providers are subtitle: HTTP round-trip latency for chain_getHeader against every free, no-key public Hydration Polkadot parachain endpoint, audited every 60 seconds from 3 regions. category: RPCs -status: suspended +status: draft metric: RPC latency unit: ms higher_is_better: false @@ -58,7 +58,29 @@ dimensions: - { value: eu-west, label: EU-West } - { value: sgp, label: Singapore } -providers: [] # All 5 previously measured providers are DNS dead or returning HTTP 400. # Suspended 2026-08-07. Will resume when endpoints recover. -# Removed: hydration-official, dwellir, helikon, dotters-network, parachains-network +# Removed: dwellir, helikon, dotters-network, parachains-network +providers: + - slug: hydration-official + name: Hydration + tag: Hydration official public RPC (currently unreachable) + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `chain_getHeader` POST sent every 60s from 3 regions to the Hydration official no-key endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="hydration-official", chain="hydration"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="hydration-official", chain="hydration"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="hydration-official", chain="hydration"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="hydration-official", chain="hydration"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="hydration-official", chain="hydration"}) / sum(ocb:rpc_call:rate_24h{provider="hydration-official", chain="hydration"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="hydration-official", chain="hydration"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="hydration-official", chain="hydration"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="hydration-official", chain="hydration", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="hydration-official", chain="hydration", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="hydration-official", chain="hydration", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="hydration-official", chain="hydration", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="hydration-official", chain="hydration", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="hydration-official", chain="hydration", region="sgp"}[1h]) diff --git a/benchmarks/layerzero-message-latency.yml b/benchmarks/layerzero-message-latency.yml index 20f2a9c1..343b036c 100644 --- a/benchmarks/layerzero-message-latency.yml +++ b/benchmarks/layerzero-message-latency.yml @@ -84,11 +84,11 @@ providers: tag: Ethereum → any chain, ~12s block time floor before DVN verification begins formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Ethereum." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ethereum"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ethereum"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ethereum"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="ethereum"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="ethereum"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="ethereum"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="ethereum"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="ethereum"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="ethereum"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="ethereum"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="ethereum"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="ethereum"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ethereum"}[1h]))) - slug: solana @@ -96,11 +96,11 @@ providers: tag: Solana → any chain, sub-second slot inclusion + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Solana." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="solana"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="solana"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="solana"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="solana"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="solana"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="solana"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="solana"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="solana"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="solana"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="solana"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="solana"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="solana"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="solana"}[1h]))) - slug: bnb @@ -108,11 +108,11 @@ providers: tag: BNB Chain → any chain, ~3s block time + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from BNB Chain." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="bnb"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="bnb"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="bnb"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="bnb"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="bnb"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="bnb"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="bnb"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="bnb"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="bnb"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="bnb"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="bnb"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="bnb"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="bnb"}[1h]))) - slug: arbitrum @@ -120,11 +120,11 @@ providers: tag: Arbitrum One → any chain, sub-second L2 block + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Arbitrum." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="arbitrum"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="arbitrum"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="arbitrum"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="arbitrum"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="arbitrum"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="arbitrum"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="arbitrum"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="arbitrum"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="arbitrum"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="arbitrum"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="arbitrum"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="arbitrum"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="arbitrum"}[1h]))) - slug: base @@ -132,11 +132,11 @@ providers: tag: Base → any chain, 2s block time + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Base." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="base"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="base"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="base"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="base"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="base"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="base"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="base"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="base"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="base"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="base"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="base"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="base"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="base"}[1h]))) - slug: optimism @@ -144,11 +144,11 @@ providers: tag: Optimism → any chain, 2s block time + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Optimism." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="optimism"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="optimism"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="optimism"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="optimism"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="optimism"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="optimism"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="optimism"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="optimism"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="optimism"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="optimism"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="optimism"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="optimism"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="optimism"}[1h]))) - slug: polygon @@ -156,11 +156,11 @@ providers: tag: Polygon PoS → any chain, Bor block time + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Polygon." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="polygon"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="polygon"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="polygon"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="polygon"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="polygon"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="polygon"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="polygon"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="polygon"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="polygon"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="polygon"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="polygon"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="polygon"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="polygon"}[1h]))) - slug: avalanche @@ -168,11 +168,11 @@ providers: tag: Avalanche C-Chain → any chain, Snowman++ sub-second finality + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Avalanche." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="avalanche"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="avalanche"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="avalanche"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="avalanche"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="avalanche"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="avalanche"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="avalanche"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="avalanche"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="avalanche"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="avalanche"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="avalanche"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="avalanche"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="avalanche"}[1h]))) - slug: robinhood @@ -180,11 +180,11 @@ providers: tag: Robinhood Chain → any chain, Nitro block time + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Robinhood Chain." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="robinhood"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="robinhood"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="robinhood"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="robinhood"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="robinhood"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="robinhood"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="robinhood"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="robinhood"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="robinhood"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="robinhood"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="robinhood"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="robinhood"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="robinhood"}[1h]))) - slug: monad @@ -192,130 +192,130 @@ providers: tag: Monad → any chain, sub-second block + DVN verification formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Monad." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="monad"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="monad"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="monad"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="monad"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="monad"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="monad"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="monad"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="monad"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="monad"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="monad"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="monad"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="monad"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="monad"}[1h]))) - slug: berachain name: Berachain tag: Berachain → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Berachain." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="berachain"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="berachain"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="berachain"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="berachain"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="berachain"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="berachain"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="berachain"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="berachain"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="berachain"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="berachain"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="berachain"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="berachain"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="berachain"}[1h]))) - slug: celo name: Celo tag: Celo → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Celo." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="celo"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="celo"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="celo"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="celo"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="celo"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="celo"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="celo"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="celo"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="celo"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="celo"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="celo"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="celo"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="celo"}[1h]))) - slug: injective name: Injective tag: Injective (Cosmos) → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Injective." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="injective"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="injective"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="injective"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="injective"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="injective"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="injective"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="injective"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="injective"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="injective"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="injective"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="injective"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="injective"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="injective"}[1h]))) - slug: ink name: Ink tag: Ink L2 → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Ink." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ink"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ink"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ink"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="ink"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="ink"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="ink"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="ink"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="ink"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="ink"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="ink"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="ink"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="ink"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="ink"}[1h]))) - slug: linea name: Linea tag: Linea → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Linea." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="linea"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="linea"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="linea"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="linea"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="linea"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="linea"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="linea"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="linea"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="linea"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="linea"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="linea"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="linea"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="linea"}[1h]))) - slug: mantle name: Mantle tag: Mantle → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Mantle." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="mantle"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="mantle"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="mantle"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="mantle"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="mantle"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="mantle"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="mantle"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="mantle"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="mantle"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="mantle"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="mantle"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="mantle"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="mantle"}[1h]))) - slug: moonbeam name: Moonbeam tag: Moonbeam parachain → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Moonbeam." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="moonbeam"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="moonbeam"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="moonbeam"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="moonbeam"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="moonbeam"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="moonbeam"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="moonbeam"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="moonbeam"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="moonbeam"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="moonbeam"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="moonbeam"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="moonbeam"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="moonbeam"}[1h]))) - slug: scroll name: Scroll tag: Scroll → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Scroll." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="scroll"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="scroll"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="scroll"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="scroll"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="scroll"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="scroll"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="scroll"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="scroll"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="scroll"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="scroll"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="scroll"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="scroll"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="scroll"}[1h]))) - slug: sui name: Sui tag: Sui → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Sui." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="sui"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="sui"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="sui"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="sui"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="sui"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="sui"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="sui"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="sui"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="sui"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="sui"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="sui"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="sui"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="sui"}[1h]))) - slug: unichain name: Unichain tag: Unichain → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from Unichain." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="unichain"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="unichain"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="unichain"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="unichain"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="unichain"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="unichain"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="unichain"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="unichain"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="unichain"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="unichain"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="unichain"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="unichain"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="unichain"}[1h]))) - slug: world-chain name: World Chain tag: World Chain → any chain formula: "50th percentile over 24h of LayerZero end-to-end delivery latency for messages sourced from World Chain." queries: - p50: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="world-chain"}[24h]))) - p90: histogram_quantile(0.90, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="world-chain"}[24h]))) - p99: histogram_quantile(0.99, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="world-chain"}[24h]))) - mean: sum(rate(lz_message_latency_milliseconds_sum{source_chain="world-chain"}[24h])) / sum(rate(lz_message_latency_milliseconds_count{source_chain="world-chain"}[24h])) - sample_size: sum(increase(lz_message_seen_total{source_chain="world-chain"}[24h])) + p50: histogram_quantile(0.50, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="world-chain"}) + p90: histogram_quantile(0.90, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="world-chain"}) + p99: histogram_quantile(0.99, ocb:lz_message_latency_ms_bucket:rate24h{source_chain="world-chain"}) + mean: ocb:lz_message_latency_ms_sum:rate24h{source_chain="world-chain"} / ocb:lz_message_latency_ms_count:rate24h{source_chain="world-chain"} + sample_size: ocb:lz_message_seen:increase24h{source_chain="world-chain"} series: histogram_quantile(0.50, sum by(le) (rate(lz_message_latency_milliseconds_bucket{source_chain="world-chain"}[1h]))) diff --git a/benchmarks/songbird-rpc.yml b/benchmarks/songbird-rpc.yml index cf80f9c5..8510877d 100644 --- a/benchmarks/songbird-rpc.yml +++ b/benchmarks/songbird-rpc.yml @@ -34,7 +34,7 @@ methodology: - "Chain scope: every query on this page is pinned to `chain=\"songbird\"`. Provider coverage: 1 no-key endpoint (Flare Foundation official). FTSO AU removed after DNS went dead." findings: - - "{{best_name}} currently leads free Songbird RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) — 1 measured provider." + - "{{best_name}} currently leads free Songbird RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h), 1 measured provider." faq: - q: "What is the fastest free Songbird RPC right now?" diff --git a/benchmarks/zetachain-rpc.yml b/benchmarks/zetachain-rpc.yml index 5c19737d..9054761d 100644 --- a/benchmarks/zetachain-rpc.yml +++ b/benchmarks/zetachain-rpc.yml @@ -34,7 +34,7 @@ methodology: - "Chain scope: every query on this page is pinned to `chain=\"zetachain\"`. Provider coverage: 1 no-key endpoint (Thirdweb). BlockPI returned 404; AllThatNode DNS is dead." findings: - - "{{best_name}} currently leads free ZetaChain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h) — 1 measured provider." + - "{{best_name}} currently leads free ZetaChain RPC at {{best_p50}} (`eth_getBlockByNumber` p50, 24h), 1 measured provider." faq: - q: "What is the fastest free ZetaChain RPC right now?"