Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
9689cf0
solana cohort: solana-official logo alias, leorpc logo + light chip, …
Jul 12, 2026
b493572
Merge pull request #1135 from ChainBench/chore/solana-cohort-pages
Flotapponnier Jul 12, 2026
d80b67d
nft harness: keyless OpenSea mode, empty x-api-key header caused 401s…
Flotapponnier Jul 13, 2026
7c6f4f1
nft harness: delist rarible, free tier is 100 requests per month (#1137)
Flotapponnier Jul 13, 2026
a98ae7a
robinhood chain: chains hub entry, chain-kpis, l2-block-time (HTTP po…
Jul 13, 2026
dda42b6
Merge pull request #1138 from ChainBench/feat/robinhood-chain-hub
Flotapponnier Jul 13, 2026
be49b75
bridge-monitor: on-chain balance fallback + degraded flag
Jul 13, 2026
90658e0
bridge-monitor: self-healing metrics + slack notifiers
Jul 13, 2026
2283c97
bridge-monitor: auto-rebalancer, corrective transfer via cheapest bridge
Jul 13, 2026
ca1efe8
bridge-monitor: tier downgrade ladder + rebalancer wiring in pre-flight
Jul 13, 2026
91656a9
bridge-monitor: stuck-fund reaper, hourly stranded gauge + corrective…
Jul 13, 2026
bc7e169
bridge-monitor: gas auto-top-up via LiFi same-chain swap, gated by de…
Jul 13, 2026
9626ac4
bridge-monitor: unit tests for refill route, ladder, stranded hours; …
Jul 13, 2026
3b55ed3
bridge-monitor: keyless dry-run support for reaper + RunDryRun
Jul 13, 2026
ed084d8
bridge-monitor: comment style cleanup in pre-flight docs
Jul 13, 2026
d2c3d00
bridge-monitor: daily spend tracker keyed by UTC date, persisted; exe…
Jul 13, 2026
b7b3b08
bridge-monitor: fix double-send on in-flight rebalance, slot-wide bud…
Jul 13, 2026
19357b4
bridge-monitor: SIMULATE_BALANCES only honored in dry-run mode
Jul 13, 2026
1b68417
tx executor: preserve hash on ambiguous send errors, split dry-run sp…
Jul 13, 2026
ded0e81
Merge pull request #1140 from ChainBench/feat/bridge-self-healing-fixes
Flotapponnier Jul 13, 2026
cbe1eb8
executor: add missing chain label, first real single-test panicked po…
Flotapponnier Jul 13, 2026
548d109
bridge-monitor: point Mobula calls at demo-api.mobula.io (#1142)
Flotapponnier Jul 13, 2026
1a19724
tokenized-stock-peg: bench 076, onchain tokenized equities vs Nasdaq …
Jul 13, 2026
22bd7fc
Merge pull request #1143 from ChainBench/feat/tokenized-stock-peg
Flotapponnier Jul 13, 2026
84d61a3
spec: missing store blob for a live bench throws instead of caching t…
Flotapponnier Jul 13, 2026
31d40ea
tsp: parse the flat spark shape (close/timestamp arrays), log empty p…
Jul 13, 2026
6397da4
Merge pull request #1145 from ChainBench/fix/tsp-spark-parser
Flotapponnier Jul 13, 2026
3002075
tsp: drop invalid rank_matrix_query, 1m reference candles, fee-band +…
Jul 13, 2026
734aac9
Merge pull request #1146 from ChainBench/fix/tsp-spec-validation
Flotapponnier Jul 13, 2026
88991bb
rwa: new category, tokenized-stock-peg moves in, 11 equity logos + re…
Jul 13, 2026
1ccad7c
Merge pull request #1147 from ChainBench/feat/rwa-category-stock-pages
Flotapponnier Jul 13, 2026
a3128eb
rwa: xstocks-peg (077) + usdy-nav-basis (078), issuer label on the ts…
Jul 13, 2026
b0e1392
Merge pull request #1148 from ChainBench/feat/xstocks-usdy-benches
Flotapponnier Jul 13, 2026
8d06d98
rwa: complete product pages, hood/qqq/coin/orca/pyth logos + dual-iss…
Jul 13, 2026
16c7f12
Merge pull request #1149 from ChainBench/chore/rwa-product-pages-comp…
Flotapponnier Jul 13, 2026
5bca1b3
registry: googl links to google.com, abc.xyz 403s aggressively
Jul 13, 2026
f71c744
Merge pull request #1150 from ChainBench/fix/googl-url
Flotapponnier Jul 13, 2026
ed3678f
cardano: cache koios epoch params 1h (public tier was exhausted); ste…
Jul 13, 2026
1928867
Merge pull request #1151 from ChainBench/fix/koios-cadence-stellar-re…
Flotapponnier Jul 13, 2026
29a4594
fix(store+bridge-monitor): fail-fast on missing blob + sub-50ms histo…
Flotapponnier Jul 13, 2026
e1dc0ee
fix: 3 machine-readable surface bugs (citable unit scaling, stat filt…
Flotapponnier Jul 13, 2026
47f0f6c
feat: /api/compare/{a}/{b} + openapi.json coverage (Wave 1 P0/P1) (#1…
Flotapponnier Jul 13, 2026
bae07d0
feat: Wave 1 P2 batch — cite MIME, sparkline SVG, Dataset PropertyVal…
Flotapponnier Jul 13, 2026
6b57a7f
bridge-monitor: Mobula EIP-712 signature-confirm flow (fixes stuck de…
Flotapponnier Jul 13, 2026
ac908f1
robinhood chain vague 1: weekend drift (079) + arb latency (080) + su…
Jul 14, 2026
d8eda8d
Merge pull request #1161 from ChainBench/feat/robinhood-vague1
Flotapponnier Jul 14, 2026
04c12af
subsidy is a chain KPI, not a bench: kill standalone spec, add 3 card…
Jul 14, 2026
47c7e79
Merge pull request #1163 from ChainBench/fix/subsidy-not-a-bench
Flotapponnier Jul 14, 2026
72311c9
pm-api-latency: add Predexon (bench 6th provider), fresh key deployed…
Jul 14, 2026
d3f709e
Merge pull request #1166 from ChainBench/feat/predexon-pm-provider
Flotapponnier Jul 14, 2026
604a64b
usdy: 3-retry on Orca RPC to fix 40% success rate (#1168)
Flotapponnier Jul 14, 2026
a0cf8f4
bench vague 2: ship 081-085 (ws latency, oracle freshness, rpc reliab…
Flotapponnier Jul 14, 2026
aa68026
hyperliquid frontend page: add ProviderLogo in the hero next to the name
Jul 14, 2026
0cd090b
Merge pull request #1171 from ChainBench/fix/hyperliquid-frontend-logo
Flotapponnier Jul 14, 2026
349b786
hl frontends: add slash, topdog, markets-mobile logos + registry entr…
Jul 14, 2026
6269bdf
Merge pull request #1173 from ChainBench/chore/hl-frontend-logos-3
Flotapponnier Jul 14, 2026
7f54aa5
idx-latency: swap Alchemy for Mobula in the cohort (paid-plan key, be…
Flotapponnier Jul 14, 2026
a7a0206
fix(bench): sample-size PromQL + leader reliability floor (#1175)
Flotapponnier Jul 15, 2026
d73812e
fix(registry): remove duplicate topdog entry (#1177)
Flotapponnier Jul 15, 2026
fba5e8e
vague2 QA: unit sec for true-seconds benches (fixes 0.0s heros), soft…
Flotapponnier Jul 15, 2026
5f699b0
add bench 086 polkadot-rpc: first Substrate chain in the RPC cluster …
Flotapponnier Jul 15, 2026
5280a4c
product pages: 9 block-builder registry entries + verified logos, ora…
Flotapponnier Jul 15, 2026
5fff7bf
085: add bobthebuilder provider row (real share, was metrics-only) (#…
Flotapponnier Jul 15, 2026
e809f1d
polkadot-rpc bench 086 + /chains/polkadot + Parity product (#1184)
Flotapponnier Jul 15, 2026
99e7c49
fix: dedup onfinality key in logo-manifest (already declared line 49)…
Flotapponnier Jul 15, 2026
5e3ac15
store: last-known-good snapshot fallback (no more awaiting after firs…
Flotapponnier Jul 15, 2026
c65d1c7
chain-kpis: add polkadot to registry (DOT native, stables via Asset H…
Flotapponnier Jul 16, 2026
1e62b2e
live-feed status: Feed down pill + banner on aggregator-head-lag (#1193)
Flotapponnier Jul 16, 2026
d332a3e
series gaps: null the chart line when a feed goes silent (unless chan…
Flotapponnier Jul 16, 2026
ea73d01
add bench 087 ws-head-latency-base + 088 ws-head-latency-solana (#1196)
Flotapponnier Jul 16, 2026
25a495a
ws-head-latency: multi-region (harness region label + spec region tab…
Flotapponnier Jul 16, 2026
c57a528
ws-head-latency: align region env var with rpc-capabilities (REGION n…
Flotapponnier Jul 16, 2026
361f321
chart: red band overlay for null-bucket downtime windows (#1203)
Flotapponnier Jul 16, 2026
a8f3d71
rename ws-head-latency -> ws-head-latency-ethereum for sibling slug p…
Flotapponnier Jul 16, 2026
d295f71
network-coverage: drop coinstats (free tier credits exhausted) (#1206)
Flotapponnier Jul 16, 2026
eafec54
Revert "network-coverage: drop coinstats (free tier credits exhausted…
Flotapponnier Jul 16, 2026
7dea9b2
downtime bands: provider-colored tint + name/silent label + edge mark…
Flotapponnier Jul 16, 2026
60748a5
downtime bands: pill labels + vertical stacking on overlap (#1211)
Flotapponnier Jul 16, 2026
8e2f1ab
tsp-arb-latency: lower trigger 50 -> 25 bps + credit sub-poll closure…
Flotapponnier Jul 16, 2026
3f9308f
downtime pill: drop the leading dot indicator, center the label (#1213)
Flotapponnier Jul 16, 2026
726945e
downtime pill: 'DATA MISSING' wording + skip leading gaps (#1215)
Flotapponnier Jul 16, 2026
509fa32
drop bench 084 indexer-latency (harness pruned, spec deleted) (#1218)
Flotapponnier Jul 16, 2026
3ed6c2d
video/render: strict Zod body schema before upstream forward (#1216)
Flotapponnier Jul 16, 2026
b7ca6eb
mcp: allowlist perp_funding_*, perp_venue_*, perp_execution_* prefixe…
Flotapponnier Jul 16, 2026
b46aa74
aggregator-head-lag: drop 'unless changes==0' from series queries (#1…
Flotapponnier Jul 16, 2026
a29e354
seo: 200 placeholders + sitemap threshold buffer (#1222)
Flotapponnier Jul 16, 2026
a18a8dc
aggregator-head-lag: restore outage detection with backfill-safe guar…
Flotapponnier Jul 16, 2026
04ba908
ws-head-latency: sub-ms histogram floor + keyed slots for base/solana…
Flotapponnier Jul 16, 2026
72bbd16
ship: ungate bench 085 evm-block-builders on prod (#1227)
Flotapponnier Jul 16, 2026
540c4b7
loader: propagate 24h series null-runs to 7d/30d (#1229)
Flotapponnier Jul 16, 2026
e176f0f
propagateNullsToCoarser: use absolute time-ago instead of window frac…
Flotapponnier Jul 16, 2026
83aa310
tsp-arb-latency: drop 5 illiquid tickers (TSLA GOOGL AMZN MSFT SPY) (…
Flotapponnier Jul 16, 2026
0d6e84b
perp-fees harness: fix Paradex depth-skip, gains SOL slot, dYdX walk …
Flotapponnier Jul 16, 2026
d2efd22
downtime bands: opt-in via live_activity, skip on other benches (#1235)
Flotapponnier Jul 16, 2026
ff4dd28
batch 2: MEV chips + rpc copy + Aster/edgeX + Cardano/Sui/Cosmos/Avax…
Flotapponnier Jul 16, 2026
981926a
rpc-capabilities: add 4 keyless providers (ThirdWeb Blast Gateway.fm …
Flotapponnier Jul 16, 2026
1c6cc32
ws-head-latency: add Onfinality Ethereum to keyless cohort (#1241)
Flotapponnier Jul 16, 2026
868108a
drop oracle-freshness (082) spec + sync REMOVED with main state (#1245)
Flotapponnier Jul 16, 2026
34bdddf
SEO/E-E-A-T pack: /team page, Person schema, 23 positioning, 8 expert…
Flotapponnier Jul 16, 2026
26914c3
alternatives: render positioning + clean paragraph line-wrap (#1250)
Flotapponnier Jul 16, 2026
2cf4487
hotfix: strip glued expert_take_reviewed from status line (#1251)
Flotapponnier Jul 16, 2026
e023524
hotfix: strip glued status line in 8 answer YAMLs (#1252)
Flotapponnier Jul 16, 2026
159fbec
answers: drop visible byline on expert_take blocks (#1253)
Flotapponnier Jul 16, 2026
b5c67e1
drop bench 080 tokenized-stock-arb-latency (Rob Chain pools too illiq…
Flotapponnier Jul 16, 2026
68453ee
jsonld: add 'name' to TechArticle nodes for Google Rich Results valid…
Flotapponnier Jul 17, 2026
b0ce3ef
share-card: propagate region/kind/venue filters + compose dynamic tit…
Flotapponnier Jul 17, 2026
d7f0fcb
Revert "share-card: propagate region/kind/venue filters + compose dyn…
Flotapponnier Jul 17, 2026
7124c27
Revert "Revert "share-card: propagate region/kind/venue filters + com…
Flotapponnier Jul 17, 2026
1d39d71
aggregator-head-lag: peer-activity clause (on/chain,region) fixes poo…
Flotapponnier Jul 17, 2026
f1ab0d1
share-card: filter negative p50 in sortByP50 (fixes HTTP 500 on RPC b…
Flotapponnier Jul 17, 2026
d0dea4b
share-modal: explicit dimension pickers (chain / region / kind / venu…
Flotapponnier Jul 17, 2026
15bc496
aggregator-head-lag: ws_connected guard filters out harness-reconnect…
Flotapponnier Jul 17, 2026
4b665ac
hotfix(share-card): revert region/kind/venue passthrough + title over…
Flotapponnier Jul 17, 2026
e9c1dda
aggregator-head-lag: strip ws_connected clause from geckoterminal (RE…
Flotapponnier Jul 17, 2026
a2694f0
share-card: fix HTTP 500 on RPC benches (Satori AVIF/WebP + CSS var c…
Flotapponnier Jul 17, 2026
8a59728
TimeSeriesChart: forward chain prop to /api/series so chain tab switc…
Flotapponnier Jul 17, 2026
5ab4058
share-card: scale title font by length (fix layout overflow on long t…
Flotapponnier Jul 17, 2026
0359c29
share-card: flexShrink:0 on title+subtitle to stop Satori collapsing …
Flotapponnier Jul 17, 2026
9647d39
share-card: cap leaderboard top 10 (fix overflow on wide cohorts) (#1…
Flotapponnier Jul 17, 2026
116687b
share-card: cap leaderboard 8 rows (10 still overflows footer) (#1278)
Flotapponnier Jul 17, 2026
34a449e
TimeSeriesChart: remove DATA MISSING pill labels, keep tinted band on…
Flotapponnier Jul 17, 2026
ac783e0
share-card: cap leaderboard 6 rows (8 still overflows with 2-line tit…
Flotapponnier Jul 17, 2026
2ff2892
share-card: cap snapshot to top 8 series (legend overflow on wide coh…
Flotapponnier Jul 17, 2026
46b3672
share-card: snapshot cap drops to 6 when title wraps (rpc-capabilitie…
Flotapponnier Jul 17, 2026
dec41a1
share-card: shrink snapshot chart 280→220 (2-row legend overlapped fo…
Flotapponnier Jul 17, 2026
f07ec4f
share-card: propagate region/kind/venue filters through modal → route…
Flotapponnier Jul 17, 2026
d663378
share-card: label region/kind/venue pills by their kind (not CHAIN) (…
Flotapponnier Jul 17, 2026
3da1621
TimeSeriesChart: drop downtime bands entirely; gaps in the line speak…
Flotapponnier Jul 18, 2026
88ce85f
seo: fix GSC Dataset warnings (embed creator/publisher + distribution…
Flotapponnier Jul 18, 2026
40e6dc7
chore: audit-cleanup safe batch — drop orphan components + untrack .c…
Flotapponnier Jul 18, 2026
849b6d4
seo: keep inline creator on bench Dataset (GSC flags @id-only refs as…
Flotapponnier Jul 18, 2026
b3beda1
chore: prune 6 dead exports in src/lib (#1296)
Flotapponnier Jul 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .claude/scheduled_tasks.lock

This file was deleted.

7 changes: 0 additions & 7 deletions .claude/settings.local.json

This file was deleted.

10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ yarn-error.log*
# vercel
.vercel

# Prebuild-generated sitemap freshness manifest. Written by
# scripts/emit-page-mtimes.ts on every build (git log %ct of editorial
# hub pages) so the sitemap can emit a real <lastmod> from git history
# without depending on Vercel's build-container file mtimes.
/data/page-mtimes.json

# Internal-only docs that must NOT ship with the open-source repo.
# Patterns reserved as a tripwire: if a contributor adds a new doc with
# one of these naming conventions, git won't track it without an
Expand Down Expand Up @@ -70,3 +76,7 @@ scripts/hf_publisher/.venv/
scripts/hf_space/.venv/
**/__pycache__/
*.pyc

# Claude harness local state (per-session lock + per-user perms)
.claude/settings.local.json
.claude/*.lock
3 changes: 3 additions & 0 deletions alternatives/alchemy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ intro: |

seo_title: "Alchemy alternatives: live benchmark"
seo_description: Compare Alchemy alternatives on real-time data freshness. Live head-lag against a canonical archive node, refreshed every minute and published openly.

positioning: |
Alchemy's moat is a vertically integrated node platform. It runs archive nodes across 100+ chains (approximately 120 listed on the chain-connect page) and layers a data stack on top of the same infrastructure (Node API, Prices API, Notify webhooks, Subgraphs). For head lag, the relevant surface is the WebSocket subscription endpoint (eth_subscribe, plus proprietary alchemy_pendingTransactions and alchemy_minedTransactions) and the Notify webhook system for Address Activity and Custom Webhooks. Alchemy pushes filtered logs rather than pre-decoded swap events, which means an integrator must maintain a Transfer or Swap topic filter and decode the ABI client-side. The Prices API is a REST product with cached quotes drawn from CEX plus DEX aggregation, not a live swap feed. Alchemy tends to win when a team already runs the Node API for reads and wants notifications on the same account boundary; teams that need a decoded, cross-chain DEX trade stream typically migrate to a purpose-built aggregator because the client-side decoding overhead adds pipeline hops. Chain coverage skews heavily to EVM plus Solana; long-tail EVM L2s and Bitcoin sit inside the standard Node API surface.
3 changes: 3 additions & 0 deletions alternatives/birdeye.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ intro: |

seo_title: "Birdeye alternatives: live benchmark"
seo_description: "Birdeye alternatives on Solana token metadata coverage: logo, description, socials in seconds. Codex vs Mobula live."

positioning: |
Birdeye's architectural weight sits on Solana. The public docs list 14 supported networks with Solana first and a longer tail of EVM and non-EVM chains (Ethereum, Arbitrum, BSC, Base, zkSync, Sui, Aptos, Monad, MegaETH, Fogo, Avalanche, Optimism, Polygon). The DEX Protocols page cites data drawn from more than 180 AMMs, with Solana-native venues like Raydium, Raydium CLMM, Orca and Whirlpool getting first-class treatment. The API surface that matters for metadata coverage is the DeFi and Token endpoints (/defi/price, /defi/token_overview, /defi/token_security), which return price, liquidity, supply, market cap and holder-side signals as normalized JSON. Because Solana pools are volatile and permissionless, a metadata provider either owns direct pool ingestion or inherits gaps; Birdeye publishes coverage caveats on Sui (no wallet APIs, no token security data, missing market cap and supply), which suggests per-chain pipelines rather than one uniform indexer. Teams pick Birdeye when the primary target is Solana memecoin and DEX token metadata under a single API. Teams tend to migrate when they need long-tail EVM L2 coverage or deep historical DEX reconstruction across chains where Birdeye ships less depth per chain.
3 changes: 3 additions & 0 deletions alternatives/bitquery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ intro: |

seo_title: "Bitquery alternatives: live benchmark"
seo_description: Compare Bitquery alternatives on the number of blockchains each major onchain data provider officially supports. Live data, refreshed every six hours.

positioning: |
Bitquery's moat is a unified GraphQL schema fanned out across four transports: GraphQL over HTTP, WebSocket subscriptions, Kafka with Protobuf encoding, and a Solana gRPC product (CoreCast) fed by validator-side Geyser plugins. Coverage is 40+ chains, uniform schema, decoded DEX trades with USD notional pre-computed server-side. For a chain-coverage benchmark that measures how many networks a provider officially supports for market data, Bitquery is structurally competitive because the same query works across every indexed chain without per-chain re-plumbing. The DEX Trades API is the load-bearing endpoint for market data: it exposes buys, sells, swaps, OHLCV at 1-second resolution, and cross-DEX aggregates on a single graph. Delivery latency is tiered by transport: gRPC under 300ms, Kafka under 500ms, WebSocket around a second, which lets integrators pick the durability vs speed trade-off explicitly. Teams win with Bitquery when they need historical plus real-time on the same schema, especially for analytics or accounting pipelines; teams that only want a decoded firehose of Solana Pump.fun trades sometimes pick a narrower vendor because Bitquery's breadth carries a higher entry price.
3 changes: 3 additions & 0 deletions alternatives/chainlink.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "Chainlink alternatives: live benchmark"
seo_description: "Chainlink vs Pyth, Binance and Coinbase on live oracle deviation. Max pairwise gap on BTC, ETH, SOL."

status: live

positioning: |
Chainlink Data Feeds publish aggregated prices on-chain through an AggregatorV3 contract that is fed by a Decentralized Oracle Network running Offchain Reporting, with new rounds triggered either by a configured deviation threshold or by a heartbeat interval, and read via a proxy contract that returns latestRoundData() in the same transaction as the consuming logic. Its architectural moat is on-chain durability and the largest deployed integration surface across EVM chains, exposed through AggregatorV3Interface with no off-chain refresh step required. That model does not maximise for oracle-deviation on fast-moving assets, because the on-chain price only advances when the deviation trigger fires or the heartbeat elapses, so the reported value can lag a moving spot market by roughly one trigger-width until the next round lands. Chainlink also ships Data Streams, a pull-based sub-second latency product accessed over REST, WebSocket and SDKs, aimed at perpetual futures, options and prediction market venues that need low-latency data with on-chain verification. Lending markets, stablecoin issuers and blue-chip settlement continue on Data Feeds for the on-chain read pattern. Perp DEXes and derivatives protocols that cannot tolerate deviation lag on volatile assets migrate the price-sensitive path to Data Streams or a pull oracle.
3 changes: 3 additions & 0 deletions alternatives/coingecko.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ intro: |

seo_title: "CoinGecko alternatives: live benchmark"
seo_description: Compare CoinGecko alternatives on the number of blockchains each major onchain data API officially supports. Live data, refreshed every six hours.

positioning: |
CoinGecko's moat is aggregation breadth across both centralized and decentralized venues under a single independent methodology. The core surface indexes 1,500+ CEXs and 18,000+ coins; the on-chain arm, delivered through GeckoTerminal and exposed under the /onchain endpoint family, adds 200+ blockchain networks, 1,500+ DEXs and tens of millions of tokens. For a chain-coverage benchmark on market data, this is the widest reported footprint of any listed provider in the cluster. Delivery is REST across every tier, with WebSocket and webhook channels gated to higher tiers. Data is not sourced from partner feeds or exchange-owned data providers but crawled and aggregated independently, which is the architectural reason CoinGecko's price on a long-tail token often differs from a venue-native quote. The /onchain/networks and /onchain/pools endpoints are the practical entry points for chain-scoped queries. CoinGecko wins for teams building broad market-data dashboards, tax and PnL products, or research tools that need one API to cover every chain a user might touch; teams focused on a single L2 or a specific DEX with millisecond freshness typically pair it with a narrower, WebSocket-native vendor.
3 changes: 3 additions & 0 deletions alternatives/drpc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "dRPC alternatives: live benchmark"
seo_description: "dRPC alternatives on eth_blockNumber p50 latency. PublicNode, 1RPC, Tenderly, Nodies, Lava ranked live."

status: live

positioning: |
dRPC is a routing layer, not a node operator. Every request lands on Dproxy, which scores third-party providers on health, capability, location, and recent compute-unit distribution; the request is then handed to Dshackle, an open-source fault-tolerant load balancer that picks the specific upstream node based on the method called, the current chain head, and the block context required. The routing is method-aware: a sendRawTransaction fans out to every capable node, a balance read routes only to lag-free upstreams, and a historical read filters to nodes that have synced to the requested block. This is architecturally distinct from single-operator RPCs, where a request runs against one homogeneous fleet, and distinct from public free RPCs, which have no cross-provider selection at all. For the rpc-capabilities axis, the routing model directly shapes the observed method coverage: a method that any upstream supports counts as covered network-wide, and uptime aggregates across upstreams rather than depending on any one operator's incident window. Chain coverage spans 120+ chains across 217 networks (Chainlist product) spanning EVM L1s and L2s, Solana, Bitcoin, Cosmos, and TON. The typical use case is teams that want one endpoint per chain with automatic failover; migration happens when a team needs a proprietary method only one upstream exposes.
3 changes: 3 additions & 0 deletions alternatives/dune.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ intro: |

seo_title: "Dune alternatives: live benchmark"
seo_description: "Dune alternatives on wallet labelling depth. Recently active address coverage across major EVM chains."

positioning: |
Dune runs two distinct product surfaces with different pipelines. The core Dune Analytics product exposes SQL over decoded blockchain tables (Trino-backed, dbt-integrated), where community-maintained Spellbook models sit on top of raw, decoded, and traces tables. The Sim API is the real-time product, positioned in the docs as covering more than 60 EVM chains plus Solana and Eclipse with a REST surface for Balances, Activity, Transactions, Token Info, Token Holders, DeFi Positions, Collectibles and Webhooks. For a wallet-labels-coverage benchmark, the load-bearing distinction is that entity labels historically live in Dune Analytics as SQL tables and community spells rather than as a single REST endpoint on Sim; the Sim quickstart categorizes its endpoints around balances, activity, and token info, not wallet identity. Coverage of labels is therefore a function of what analysts have committed to the Spellbook plus what Sim exposes through its search and metadata endpoints. Teams pick Dune when the workflow is analyst-driven and labels are consumed via SQL joins in dashboards. Teams migrate when a product needs a single low-latency REST call that returns "is this address a CEX, MEV bot, bridge, or protocol contract" without writing a SQL query first.
3 changes: 3 additions & 0 deletions alternatives/dydx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "dYdX alternatives: live benchmark"
seo_description: Compare dYdX v4 against Hyperliquid, Lighter, GMX v2 and gains.trade on live taker fee plus spread crossed at $1000 notional, refreshed every five minutes.

status: live

positioning: |
dYdX v4 runs on an application-specific Cosmos SDK chain purpose-built for perpetuals, migrated off the Ethereum-based smart contracts in October 2023 with trading going live in November 2023. The moat sits at the pipeline level: validators maintain an off-chain in-memory orderbook for low-latency matching, then settle fills on-chain via consensus. Order placement and cancellation cost zero gas; fees apply only on execution and accrue to validators and stakers rather than a central operator. This split of matching from settlement is architecturally distinct from Ethereum L1 perp DEXs (fully on-chain, gas per action) and from single-sequencer L2 venues (matching lives on a proprietary node). For the perp-fees axis, the design has two direct consequences. Fees are set by governance parameter rather than by an operator, so tier changes are proposal-gated and observable on-chain. Rebates flow to on-chain makers under the same maker-taker schedule that a CEX would run, but with funds routed to the protocol staking layer instead of a company. The typical use case is high-volume market makers who want a maker rebate on a decentralized venue without paying per-order gas; teams migrate away when they need cross-margined equity products the Cosmos chain does not list.
3 changes: 3 additions & 0 deletions alternatives/etherscan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "Etherscan alternatives: live benchmark"
seo_description: Compare Etherscan against PublicNode feeHistory and Owlracle on gwei gap between predicted and realized priority fee, ranked on p99 over 24h.

status: live

positioning: |
Etherscan's moat is not a data product; it is a decade of running the canonical block explorer for Ethereum and the derivative explorer family (Polygonscan, BscScan, Arbiscan, Optimistic Etherscan and others), consolidated under Etherscan API V2 as one endpoint across 50+ chains. Gas Tracker rides on that same explorer infrastructure. The gastracker module exposes two actions: gasoracle returns SafeGasPrice, ProposeGasPrice, FastGasPrice, suggestBaseFee, LastBlock and gasUsedRatio; gasestimate returns a confirmation-time estimate for a supplied gas price. The public Gas Tracker page shows a countdown of "Next update in 10s" and breaks recommendations into Base plus Priority components, consistent with post-EIP-1559 fee mechanics. For the gas-estimation benchmark, the load-bearing point is that Etherscan sees the same block stream and pending pool that feeds the block explorer, so its recommendation is a direct function of recent-block base fee trajectory and the priority-tip distribution. Teams pick the Etherscan gas oracle when the integration is Ethereum-first and already uses etherscan.io for verified contracts and receipts. Teams migrate when they need mempool-derived estimates on non-EVM chains or a per-transaction priority-fee curve rather than three fixed tiers.
3 changes: 3 additions & 0 deletions alternatives/gmx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "GMX alternatives: live benchmark"
seo_description: Compare GMX v2 against Hyperliquid, dYdX, Lighter and gains.trade on live taker fee plus spread crossed at $1000 notional, refreshed every five minutes.

status: live

positioning: |
GMX V2 uses isolated GM liquidity pools rather than an orderbook. Each market has its own pool that pays out trader profits and absorbs trader losses, priced against a low-latency oracle rather than crossed against maker quotes. The V2 architecture runs on Arbitrum, Avalanche and MegaETH, with keeper contracts executing opens and closes so that the trader submits an intent and the keeper fills it at the next oracle price. This oracle-driven pool model is architecturally distinct from CLOB perp venues: there is no maker side, so there is no maker rebate to earn, and the fee schedule replaces the taker-only price with a bundle of position fee, price impact fee, borrow fee, and funding fee. For the perp-fees axis, this matters because a headline taker-only comparison understates GMX cost on skewed markets, where the borrow fee accrues hourly against the dominant side, and understates savings on balanced markets, where the position fee drops when a trade reduces open-interest skew. The typical use case is directional traders on major pairs who prefer no order management; teams migrate to CLOB venues once they need maker rebates or tight passive quoting.
3 changes: 3 additions & 0 deletions alternatives/hyperliquid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "Hyperliquid alternatives: live benchmark"
seo_description: Compare Hyperliquid against Lighter, dYdX, GMX v2 and gains.trade on live taker fee plus spread crossed at $1000 notional, refreshed every five minutes.

status: live

positioning: |
Hyperliquid runs a purpose-built L1 whose flagship application is the perp exchange itself. HyperCore holds the orderbook, margin, and matching engine as protocol state; HyperBFT, a HotStuff variant, orders blocks with median end-to-end latency of 0.2 seconds for co-located clients. Every resting order, fill, and liquidation is part of consensus and visible to every node, with strict price-time priority. This is architecturally different from dYdX v4, where matching happens in a validator in-memory book and only settlement lands on chain, and different from GMX, which has no orderbook at all. For the perp-fees axis, the design has two implications. The fee schedule is a 7-tier maker-taker table keyed to 14-day weighted volume, with maker rebates paid on every trade rather than settled periodically. HYPE staking layers a separate 5 to 40 percent discount as an overlay on top of the numbered volume tiers, and staking-linking lets a discount wallet apply to a distinct trading wallet, permanently. The typical use case is active perp traders and market makers who want CEX-shaped fees without a central operator; teams migrate away when they need EVM composability HyperCore itself does not offer, in which case HyperEVM sits on the same validator set.
3 changes: 3 additions & 0 deletions alternatives/jupiter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ seo_title: "Jupiter alternatives: live benchmark"
seo_description: Compare Jupiter against Mobula, OpenOcean and Raydium on live Solana quote latency. 100 USDC to long-tail token, polled every 60 seconds from 3 regions.

status: live

positioning: |
Jupiter is Solana-native and structured around two paired products. Metis is the routing primitive; Ultra is the managed execution engine on top. The Metis Update post describes slippage-aware routing, dynamic intermediate tokens and just-in-time routing as the mechanics behind route selection, and the Ultra vs Metis comparison frames Metis as a routing library callers wrap with their own RPC and transaction pipeline, while Ultra bundles transaction construction, priority-fee optimization, confirmation polling and error handling behind a single /order endpoint that averages 400 to 600 milliseconds end-to-end with p95 under one second. For a Solana DEX quote-latency benchmark, the load-bearing detail is that Jupiter runs the routing infrastructure that the majority of Solana DeFi frontends and aggregators call into, so the quote surface is a first-party product rather than a resold feed. The Quote API accepts inputMint, outputMint, amount and slippageBps, and returns a route that can traverse multiple Solana AMMs including Raydium, Orca, Meteora and Phoenix. Teams pick Jupiter when the target chain is Solana and a single call needs to price a swap across the full venue set. Teams migrate when the workflow leaves Solana or requires custom market-making beyond aggregated liquidity.
Loading
Loading