From 975c8500aa9c3ecf56827b9466e2dde929690db4 Mon Sep 17 00:00:00 2001
From: Florent Tapponnier <160007691+Flotapponnier@users.noreply.github.com>
Date: Fri, 28 Aug 2026 20:56:40 +0200
Subject: [PATCH] feat(rpc): add Chihuahua, Sentinel DVPN, Fetch.ai benchmarks
(benches 250-252)
---
benchmarks/chihuahua-rpc.yml | 136 +++++++++++++++++
benchmarks/fetchhub-rpc.yml | 138 ++++++++++++++++++
benchmarks/sentinel-rpc.yml | 136 +++++++++++++++++
.../rpc-capabilities/cmd/script/config.go | 33 +++++
public/logos/chihuahua.svg | 4 +
public/logos/fetchai.svg | 4 +
public/logos/sentinel.svg | 4 +
src/data/provider-registry.ts | 28 ++++
src/lib/brand.ts | 7 +-
src/lib/logo-manifest.ts | 7 +
10 files changed, 495 insertions(+), 2 deletions(-)
create mode 100644 benchmarks/chihuahua-rpc.yml
create mode 100644 benchmarks/fetchhub-rpc.yml
create mode 100644 benchmarks/sentinel-rpc.yml
create mode 100644 public/logos/chihuahua.svg
create mode 100644 public/logos/fetchai.svg
create mode 100644 public/logos/sentinel.svg
diff --git a/benchmarks/chihuahua-rpc.yml b/benchmarks/chihuahua-rpc.yml
new file mode 100644
index 00000000..5a5749d2
--- /dev/null
+++ b/benchmarks/chihuahua-rpc.yml
@@ -0,0 +1,136 @@
+# OpenChainBench. Bench No 250
+
+slug: chihuahua-rpc
+number: "250"
+title: Fastest free Chihuahua RPC, live no-key endpoint latency
+seo_title: "Fastest free Chihuahua RPC 2026"
+seo_description: "{{best_name}} leads free Chihuahua RPC at {{best_p50}} (block height p50, 24h). 3 providers measured every 60s from 3 regions."
+subtitle: HTTP round-trip latency for Tendermint /status queries against every available public Chihuahua endpoint, audited every 60 seconds from 3 regions.
+
+category: RPCs
+status: live
+metric: RPC latency
+unit: ms
+higher_is_better: false
+
+seo_intro: |
+ Chihuahua is a Cosmos SDK blockchain and the native home of the HUAHUA token, focused on meme-coin culture within the Cosmos ecosystem. It uses the standard Cosmos Tendermint RPC interface; block height is fetched via the /status endpoint. Public keyless RPC nodes are provided by the Chihuahua official team (rpc.chihuahua.wtf), Polkachu, and Validatus. Every provider was live-verified with consecutive block-height probes at launch.
+
+abstract: |
+ Per-chain member of the RPC latency cluster, extended to Chihuahua.
+ We measure the round-trip latency of a Tendermint /status query against
+ every available public Chihuahua 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 (20 blocks, around 120 s at 6 s/block).
+ The cross-chain view lives on the parent rpc-capabilities benchmark;
+ this page is the Chihuahua-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 (string-encoded integer) 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 20 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=chihuahua. Provider coverage at launch: 3 endpoints (Chihuahua official, Polkachu, Validatus)."
+
+findings:
+ - "{{best_name}} leads free Chihuahua RPC at {{best_p50}} (Tendermint /status p50, 24h) across 3 measured providers."
+
+faq:
+ - q: "What is the fastest free Chihuahua RPC right now?"
+ a: "{{best_name}} currently leads at {{best_p50}} (Chihuahua 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 Chihuahua RPC endpoints work without an API key?"
+ a: "3 endpoints sustain continuous keyless probing at launch: Chihuahua official (rpc.chihuahua.wtf), Polkachu (chihuahua-rpc.polkachu.com), and Validatus (rpc.chihuahua.validatus.com). Every listed endpoint was live-verified before inclusion."
+ - q: "What is Chihuahua and why does its RPC latency matter?"
+ a: "Chihuahua is a Cosmos SDK chain and the home of HUAHUA, a community-driven meme token in the Cosmos ecosystem. Developers building wallets, explorers, or integrations for HUAHUA need low-latency RPC access to query balances, transactions, and governance state."
+ - q: "Does the fastest Chihuahua RPC change by region?"
+ a: "Often. Provider infrastructure placement differs; Polkachu runs global nodes while others may be more regionally concentrated. The region tabs re-scope every number to a single probe origin."
+
+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="chihuahua"})
+
+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: chihuahua-official
+ name: Chihuahua
+ tag: Chihuahua 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.chihuahua.wtf."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="chihuahua-official", chain="chihuahua"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="chihuahua-official", chain="chihuahua"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="chihuahua-official", chain="chihuahua"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="chihuahua-official", chain="chihuahua"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="chihuahua-official", chain="chihuahua"}) / sum(ocb:rpc_call:rate_24h{provider="chihuahua-official", chain="chihuahua"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="chihuahua-official", chain="chihuahua"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="chihuahua-official", chain="chihuahua"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="chihuahua-official", chain="chihuahua", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="chihuahua-official", chain="chihuahua", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="chihuahua-official", chain="chihuahua", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="chihuahua-official", chain="chihuahua", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="chihuahua-official", chain="chihuahua", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="chihuahua-official", chain="chihuahua", region="sgp"}[1h])
+
+ - slug: polkachu
+ name: Polkachu
+ tag: Polkachu public Chihuahua 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 chihuahua-rpc.polkachu.com."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="chihuahua"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="polkachu", chain="chihuahua"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="polkachu", chain="chihuahua"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="polkachu", chain="chihuahua"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="polkachu", chain="chihuahua"}) / sum(ocb:rpc_call:rate_24h{provider="polkachu", chain="chihuahua"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="polkachu", chain="chihuahua"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="chihuahua"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="chihuahua", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="chihuahua", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="chihuahua", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="chihuahua", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="chihuahua", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="chihuahua", region="sgp"}[1h])
+
+ - slug: validatus
+ name: Validatus
+ tag: Validatus public Chihuahua 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 rpc.chihuahua.validatus.com."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="validatus", chain="chihuahua"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="validatus", chain="chihuahua"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="validatus", chain="chihuahua"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="validatus", chain="chihuahua"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="validatus", chain="chihuahua"}) / sum(ocb:rpc_call:rate_24h{provider="validatus", chain="chihuahua"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="validatus", chain="chihuahua"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="validatus", chain="chihuahua"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="validatus", chain="chihuahua", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="validatus", chain="chihuahua", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="validatus", chain="chihuahua", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="validatus", chain="chihuahua", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="validatus", chain="chihuahua", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="validatus", chain="chihuahua", region="sgp"}[1h])
diff --git a/benchmarks/fetchhub-rpc.yml b/benchmarks/fetchhub-rpc.yml
new file mode 100644
index 00000000..a0a59103
--- /dev/null
+++ b/benchmarks/fetchhub-rpc.yml
@@ -0,0 +1,138 @@
+# OpenChainBench. Bench No 252
+
+slug: fetchhub-rpc
+number: "252"
+title: Fastest free Fetch.ai RPC, live no-key endpoint latency
+seo_title: "Fastest free Fetch.ai RPC 2026"
+seo_description: "{{best_name}} leads free Fetch.ai RPC at {{best_p50}} (block height p50, 24h). 3 providers measured every 60s from 3 regions."
+subtitle: HTTP round-trip latency for Tendermint /status queries against every available public Fetch.ai (FetchHub-4) endpoint, audited every 60 seconds from 3 regions.
+
+category: RPCs
+status: live
+metric: RPC latency
+unit: ms
+higher_is_better: false
+
+seo_intro: |
+ Fetch.ai is a Cosmos SDK blockchain (fetchhub-4 mainnet) focused on AI agents, autonomous economic agents, and the ASI Alliance (the merger of Fetch.ai, SingularityNET, and Ocean Protocol under the FET/ASI token). It uses the standard Cosmos Tendermint RPC interface; block height is fetched via the /status endpoint. Public keyless RPC nodes are provided by the Fetch.ai official team (rpc-fetchhub.fetch.ai), PublicNode, and Cosmos Directory. Every provider was live-verified with consecutive block-height probes at launch.
+
+abstract: |
+ Per-chain member of the RPC latency cluster, extended to Fetch.ai (FetchHub-4).
+ We measure the round-trip latency of a Tendermint /status query against
+ every available public Fetch.ai 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 (20 blocks, around 120 s at 6 s/block).
+ The cross-chain view lives on the parent rpc-capabilities benchmark;
+ this page is the Fetch.ai-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 (string-encoded integer) 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 20 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=fetchhub. Provider coverage at launch: 3 endpoints (Fetch.ai official, PublicNode, Cosmos Directory)."
+
+findings:
+ - "{{best_name}} leads free Fetch.ai RPC at {{best_p50}} (Tendermint /status p50, 24h) across 3 measured providers."
+
+faq:
+ - q: "What is the fastest free Fetch.ai RPC right now?"
+ a: "{{best_name}} currently leads at {{best_p50}} (Fetch.ai 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 Fetch.ai RPC endpoints work without an API key?"
+ a: "3 endpoints sustain continuous keyless probing at launch: Fetch.ai official (rpc-fetchhub.fetch.ai), PublicNode (fetch-rpc.publicnode.com), and Cosmos Directory (rpc.cosmos.directory/fetchhub). Every listed endpoint was live-verified before inclusion."
+ - q: "What is Fetch.ai and why does its RPC latency matter?"
+ a: "Fetch.ai is a Cosmos SDK blockchain enabling autonomous AI agents to transact, negotiate, and execute tasks on-chain. The FET token (rebranded as ASI following the ASI Alliance merger with SingularityNET and Ocean Protocol) powers agent services and staking. Developers building AI agent frameworks, DeFi integrations, or on-chain governance tools need reliable low-latency RPC access to query agent registrations, transactions, and network state."
+ - q: "Does the fastest Fetch.ai RPC change by region?"
+ a: "Often. The official Fetch.ai node infrastructure is concentrated in specific regions while PublicNode distributes globally. The region tabs re-scope every number to a single probe origin."
+ - q: "What is the ASI Alliance and how does it relate to FetchHub?"
+ a: "The ASI Alliance is a merger of Fetch.ai, SingularityNET, and Ocean Protocol into a unified AI blockchain project. FetchHub-4 remains the underlying Cosmos SDK chain; the FET token migrated to the ASI token name while the technical RPC infrastructure and chain ID are unchanged."
+
+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="fetchhub"})
+
+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: fetchai-official
+ name: Fetch.ai
+ tag: Fetch.ai 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-fetchhub.fetch.ai."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="fetchai-official", chain="fetchhub"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="fetchai-official", chain="fetchhub"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="fetchai-official", chain="fetchhub"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="fetchai-official", chain="fetchhub"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="fetchai-official", chain="fetchhub"}) / sum(ocb:rpc_call:rate_24h{provider="fetchai-official", chain="fetchhub"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="fetchai-official", chain="fetchhub"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="fetchai-official", chain="fetchhub"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="fetchai-official", chain="fetchhub", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="fetchai-official", chain="fetchhub", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="fetchai-official", chain="fetchhub", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="fetchai-official", chain="fetchhub", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="fetchai-official", chain="fetchhub", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="fetchai-official", chain="fetchhub", region="sgp"}[1h])
+
+ - slug: publicnode
+ name: PublicNode
+ tag: PublicNode public Fetch.ai 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 fetch-rpc.publicnode.com."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="fetchhub"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="fetchhub"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="publicnode", chain="fetchhub"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="publicnode", chain="fetchhub"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="publicnode", chain="fetchhub"}) / sum(ocb:rpc_call:rate_24h{provider="publicnode", chain="fetchhub"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="publicnode", chain="fetchhub"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="fetchhub"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="fetchhub", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="fetchhub", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="fetchhub", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="fetchhub", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="fetchhub", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="fetchhub", region="sgp"}[1h])
+
+ - slug: cosmos-directory
+ name: Cosmos Directory
+ tag: Cosmos Directory public Fetch.ai RPC proxy, 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.cosmos.directory/fetchhub."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="fetchhub"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="cosmos-directory", chain="fetchhub"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="cosmos-directory", chain="fetchhub"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="cosmos-directory", chain="fetchhub"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="cosmos-directory", chain="fetchhub"}) / sum(ocb:rpc_call:rate_24h{provider="cosmos-directory", chain="fetchhub"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="cosmos-directory", chain="fetchhub"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="fetchhub"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="fetchhub", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="fetchhub", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="fetchhub", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="fetchhub", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="fetchhub", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="fetchhub", region="sgp"}[1h])
diff --git a/benchmarks/sentinel-rpc.yml b/benchmarks/sentinel-rpc.yml
new file mode 100644
index 00000000..ccbb64bb
--- /dev/null
+++ b/benchmarks/sentinel-rpc.yml
@@ -0,0 +1,136 @@
+# OpenChainBench. Bench No 251
+
+slug: sentinel-rpc
+number: "251"
+title: Fastest free Sentinel DVPN RPC, live no-key endpoint latency
+seo_title: "Fastest free Sentinel DVPN RPC 2026"
+seo_description: "{{best_name}} leads free Sentinel DVPN RPC at {{best_p50}} (block height p50, 24h). 3 providers measured every 60s from 3 regions."
+subtitle: HTTP round-trip latency for Tendermint /status queries against every available public Sentinel DVPN endpoint, audited every 60 seconds from 3 regions.
+
+category: RPCs
+status: live
+metric: RPC latency
+unit: ms
+higher_is_better: false
+
+seo_intro: |
+ Sentinel is a decentralized VPN (dVPN) protocol built on the Cosmos SDK, operating on the sentinelhub-2 mainnet. It enables users to share bandwidth and access privacy-preserving connectivity through DVPN token incentives. Sentinel uses the standard Cosmos Tendermint RPC interface; block height is fetched via the /status endpoint. Public keyless RPC nodes are available from Polkachu, PublicNode, and Cosmos Directory. Every provider was live-verified with consecutive block-height probes at launch.
+
+abstract: |
+ Per-chain member of the RPC latency cluster, extended to Sentinel DVPN.
+ We measure the round-trip latency of a Tendermint /status query against
+ every available public Sentinel 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 (20 blocks, around 120 s at 6 s/block).
+ The cross-chain view lives on the parent rpc-capabilities benchmark;
+ this page is the Sentinel-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 (string-encoded integer) 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 20 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=sentinel. Provider coverage at launch: 3 endpoints (Polkachu, PublicNode, Cosmos Directory)."
+
+findings:
+ - "{{best_name}} leads free Sentinel DVPN RPC at {{best_p50}} (Tendermint /status p50, 24h) across 3 measured providers."
+
+faq:
+ - q: "What is the fastest free Sentinel DVPN RPC right now?"
+ a: "{{best_name}} currently leads at {{best_p50}} (Sentinel 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 Sentinel DVPN RPC endpoints work without an API key?"
+ a: "3 endpoints sustain continuous keyless probing at launch: Polkachu (sentinel-rpc.polkachu.com), PublicNode (sentinel-rpc.publicnode.com), and Cosmos Directory (rpc.cosmos.directory/sentinel). Every listed endpoint was live-verified before inclusion."
+ - q: "What is Sentinel and why does its RPC latency matter?"
+ a: "Sentinel is a decentralized VPN network where node operators earn DVPN tokens for sharing bandwidth. Developers building dVPN clients, node management tools, or on-chain governance integrations require reliable low-latency RPC access to query bandwidth sessions, staking state, and transaction history."
+ - q: "Does the fastest Sentinel RPC change by region?"
+ a: "Often. Polkachu runs globally distributed infrastructure while PublicNode concentrates nodes near major internet exchange points. The region tabs re-scope every number to a single probe origin."
+
+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="sentinel"})
+
+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: polkachu
+ name: Polkachu
+ tag: Polkachu public Sentinel DVPN 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 sentinel-rpc.polkachu.com."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="sentinel"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="polkachu", chain="sentinel"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="polkachu", chain="sentinel"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="polkachu", chain="sentinel"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="polkachu", chain="sentinel"}) / sum(ocb:rpc_call:rate_24h{provider="polkachu", chain="sentinel"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="polkachu", chain="sentinel"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="sentinel"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="sentinel", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="sentinel", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="sentinel", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="sentinel", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="polkachu", chain="sentinel", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="polkachu", chain="sentinel", region="sgp"}[1h])
+
+ - slug: publicnode
+ name: PublicNode
+ tag: PublicNode public Sentinel DVPN 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 sentinel-rpc.publicnode.com."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="sentinel"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="sentinel"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="publicnode", chain="sentinel"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="publicnode", chain="sentinel"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="publicnode", chain="sentinel"}) / sum(ocb:rpc_call:rate_24h{provider="publicnode", chain="sentinel"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="publicnode", chain="sentinel"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="sentinel"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="sentinel", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="sentinel", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="sentinel", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="sentinel", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="sentinel", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="sentinel", region="sgp"}[1h])
+
+ - slug: cosmos-directory
+ name: Cosmos Directory
+ tag: Cosmos Directory public Sentinel DVPN RPC proxy, 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.cosmos.directory/sentinel."
+ queries:
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="sentinel"})
+ p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="cosmos-directory", chain="sentinel"})
+ p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="cosmos-directory", chain="sentinel"})
+ mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="cosmos-directory", chain="sentinel"})
+ success: sum(ocb:rpc_call:ok_rate_24h{provider="cosmos-directory", chain="sentinel"}) / sum(ocb:rpc_call:rate_24h{provider="cosmos-directory", chain="sentinel"})
+ sample_size: sum(ocb:rpc_call:increase_24h{provider="cosmos-directory", chain="sentinel"})
+ series: avg(avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="sentinel"}[1h]))
+ regions:
+ - region: us-east
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="sentinel", region="us-east"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="sentinel", region="us-east"}[1h])
+ - region: eu-west
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="sentinel", region="eu-west"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="sentinel", region="eu-west"}[1h])
+ - region: ap-southeast
+ p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="cosmos-directory", chain="sentinel", region="sgp"})
+ series: avg_over_time(rpc_latency_milliseconds{provider="cosmos-directory", chain="sentinel", region="sgp"}[1h])
diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go
index 8af3e2ce..c985e447 100644
--- a/harnesses/rpc-capabilities/cmd/script/config.go
+++ b/harnesses/rpc-capabilities/cmd/script/config.go
@@ -1671,6 +1671,39 @@ func chains() []Chain {
{Slug: "interlay-official", Name: "Interlay", URL: envDefault("RPC_URL_INTERLAY_OFFICIAL", "https://api.interlay.io/parachain")},
},
},
+ // 2026-08-28 wave-11. Chihuahua — Cosmos SDK, Tendermint /status. Official node + Polkachu + Validatus.
+ {
+ Slug: "chihuahua",
+ Name: "Chihuahua",
+ Kind: "cosmos",
+ Providers: []Provider{
+ {Slug: "chihuahua-official", Name: "Chihuahua", URL: envDefault("RPC_URL_CHIHUAHUA_OFFICIAL", "https://rpc.chihuahua.wtf")},
+ {Slug: "polkachu", Name: "Polkachu", URL: envDefault("RPC_URL_CHIHUAHUA_POLKACHU", "https://chihuahua-rpc.polkachu.com")},
+ {Slug: "validatus", Name: "Validatus", URL: envDefault("RPC_URL_CHIHUAHUA_VALIDATUS", "https://rpc.chihuahua.validatus.com")},
+ },
+ },
+ // 2026-08-28 wave-11. Sentinel — Cosmos SDK, Tendermint /status. Polkachu + PublicNode + Cosmos Directory.
+ {
+ Slug: "sentinel",
+ Name: "Sentinel",
+ Kind: "cosmos",
+ Providers: []Provider{
+ {Slug: "polkachu", Name: "Polkachu", URL: envDefault("RPC_URL_SENTINEL_POLKACHU", "https://sentinel-rpc.polkachu.com")},
+ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_SENTINEL_PUBLICNODE", "https://sentinel-rpc.publicnode.com")},
+ {Slug: "cosmos-directory", Name: "Cosmos Directory", URL: envDefault("RPC_URL_SENTINEL_COSMOSDIRECTORY", "https://rpc.cosmos.directory/sentinel")},
+ },
+ },
+ // 2026-08-28 wave-11. Fetch.ai (FetchHub-4) — Cosmos SDK, Tendermint /status. Official + PublicNode + Cosmos Directory.
+ {
+ Slug: "fetchhub",
+ Name: "Fetch.ai",
+ Kind: "cosmos",
+ Providers: []Provider{
+ {Slug: "fetchai-official", Name: "Fetch.ai", URL: envDefault("RPC_URL_FETCHHUB_OFFICIAL", "https://rpc-fetchhub.fetch.ai")},
+ {Slug: "publicnode", Name: "PublicNode", URL: envDefault("RPC_URL_FETCHHUB_PUBLICNODE", "https://fetch-rpc.publicnode.com")},
+ {Slug: "cosmos-directory", Name: "Cosmos Directory", URL: envDefault("RPC_URL_FETCHHUB_COSMOSDIRECTORY", "https://rpc.cosmos.directory/fetchhub")},
+ },
+ },
// 2026-08-27 wave-10. Zcash — getblockcount JSON-RPC (Tatum zcashd + Tatum Zebra) + Blockchair REST GET. ~75 s/block.
{
Slug: "zcash",
diff --git a/public/logos/chihuahua.svg b/public/logos/chihuahua.svg
new file mode 100644
index 00000000..c4d9d7ac
--- /dev/null
+++ b/public/logos/chihuahua.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/logos/fetchai.svg b/public/logos/fetchai.svg
new file mode 100644
index 00000000..1b39935a
--- /dev/null
+++ b/public/logos/fetchai.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/logos/sentinel.svg b/public/logos/sentinel.svg
new file mode 100644
index 00000000..e6a50505
--- /dev/null
+++ b/public/logos/sentinel.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts
index 169cffc4..ac5e2244 100644
--- a/src/data/provider-registry.ts
+++ b/src/data/provider-registry.ts
@@ -2591,6 +2591,34 @@ export const PROVIDER_REGISTRY: Record = {
"Acala official public RPC node 2 (acala-rpc-2.aca-api.network). Keyless Substrate JSON-RPC interface for the Acala DeFi parachain on Polkadot.",
twitter: "@AcalaNetwork",
},
+
+ // ─── Chihuahua providers (bench 250) ─────────────────────────────────
+ "chihuahua-official": {
+ url: "https://rpc.chihuahua.wtf",
+ description:
+ "Chihuahua official public Tendermint RPC node. Keyless endpoint for the Chihuahua Cosmos SDK chain.",
+ twitter: "@ChihuahuaChain",
+ },
+ validatus: {
+ url: "https://validatus.com",
+ description:
+ "Validatus public Cosmos RPC infrastructure. Provides keyless Tendermint RPC endpoints for multiple Cosmos SDK chains.",
+ },
+
+ // ─── Cosmos Directory (shared across benches 251-252) ────────────────
+ "cosmos-directory": {
+ url: "https://cosmos.directory",
+ description:
+ "Cosmos Directory public RPC proxy. Aggregates Tendermint RPC endpoints across the Cosmos ecosystem, no API key required.",
+ },
+
+ // ─── Fetch.ai providers (bench 252) ──────────────────────────────────
+ "fetchai-official": {
+ url: "https://rpc-fetchhub.fetch.ai",
+ description:
+ "Fetch.ai official public Tendermint RPC node for the FetchHub-4 mainnet. Keyless endpoint maintained by the Fetch.ai / ASI Alliance team.",
+ twitter: "@Fetch_ai",
+ },
};
/**
diff --git a/src/lib/brand.ts b/src/lib/brand.ts
index 83d02a58..eac119eb 100644
--- a/src/lib/brand.ts
+++ b/src/lib/brand.ts
@@ -173,8 +173,11 @@ const BRANDS: Record = {
acala: { color: "#E40C5B" }, // acala red/pink (official brand)
interlay: { color: "#1A3BDB" }, // interlay blue (official brand)
- // ─── Cosmos SDK chains (bench 247) ───
- babylon: { color: "#F8811A" }, // babylon orange (official brand)
+ // ─── Cosmos SDK chains (benches 247, 250-252) ───
+ babylon: { color: "#F8811A" }, // babylon orange (official brand)
+ chihuahua: { color: "#E05F2A" }, // chihuahua orange-red (official brand)
+ sentinel: { color: "#00C2FF" }, // sentinel cyan (official brand)
+ fetchhub: { color: "#3B2D8E" }, // fetch.ai deep purple (official brand)
// ─── Bitcoin Cash chain + providers (bench 244) ───
"bitcoin-cash": { color: "#0AC18E" }, // bch official green
diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts
index 0c20e4c4..c2250789 100644
--- a/src/lib/logo-manifest.ts
+++ b/src/lib/logo-manifest.ts
@@ -328,6 +328,9 @@ const RAW: Record = {
acala: "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/logos/acala.svg",
interlay: "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/logos/interlay.svg",
litecoinspace: "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/logos/litecoinspace.svg",
+ chihuahua: "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/logos/chihuahua.svg",
+ sentinel: "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/logos/sentinel.svg",
+ fetchhub: "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/logos/fetchai.svg",
// ─── Oracle deviation (bench 025) — additional brand logos ───
// (pairs alias to chain/asset logos in the ALIASES block below)
@@ -736,6 +739,10 @@ const ALIASES: Record = {
"acala-rpc0": "acala",
"acala-rpc2": "acala",
+ // Chihuahua + Fetch.ai official node aliases → chain logo
+ "chihuahua-official": "chihuahua",
+ "fetchai-official": "fetchhub",
+
// Non-EVM wave-3 (benches 222-231) — provider-official aliases to chain slug
"ecadinfra": "tezos",
"tzbeta": "tezos",