Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
1b05a02
feat: HL vs Gains wallet fee comparison tool
Flotapponnier Aug 25, 2026
a973c34
feat: HL vs Gains wallet fee comparison
Flotapponnier Aug 25, 2026
6692bba
fix: fetch Gains fee rates live, drop hardcoded 0.12%
Flotapponnier Aug 25, 2026
889664d
fix: fetch Gains fee rates live, drop hardcoded rates
Flotapponnier Aug 25, 2026
b379dbe
fix: fetch Gains fee rates live, drop hardcoded rates
Flotapponnier Aug 25, 2026
0a2373e
feat: per-trade table, live Gains rates per coin, PnL column
Flotapponnier Aug 25, 2026
ba06791
Merge remote-tracking branch 'origin/dev' into feat/fee-compare
Flotapponnier Aug 25, 2026
c565279
fix: remove duplicate gainsFeeCache declaration
Flotapponnier Aug 25, 2026
d83c55b
feat: fee-compare per-trade breakdown + live Gains rates
Flotapponnier Aug 25, 2026
4518cab
redesign: fee-compare UI — logos, VS card, trade table, per-fill savi…
Flotapponnier Aug 25, 2026
304f788
perf: reduce Vercel invocations - live-prices 1s->5s CDN TTL, alterna…
Flotapponnier Aug 25, 2026
d553ad0
merge: resolve fee-compare-client conflict, keep dev version
Flotapponnier Aug 25, 2026
df2dbda
Merge pull request #2047 from ChainBench/feat/fee-compare
Flotapponnier Aug 25, 2026
cce2a59
fix: double-counted notional in HL vs Gains comparison (#2048)
Flotapponnier Aug 25, 2026
7f426b8
fix: rename Gains.trade -> Gains, HL -> Hyperliquid in UI (#2049)
Flotapponnier Aug 25, 2026
cbda474
feat: always show Gains simulated, bold winner, pro design (#2051)
Flotapponnier Aug 25, 2026
aa2ea52
Merge branch 'dev' of https://github.com/ChainBench/OpenChainBench in…
Flotapponnier Aug 25, 2026
cfe5868
fix: mobile responsive — stack VS card vertically, hide overflow colu…
Flotapponnier Aug 25, 2026
a21c334
fix: symmetric HL/Gains display + winner logic for single-platform wa…
Flotapponnier Aug 25, 2026
3780118
fix: show Gains fee on mobile in trade table (#2055)
Flotapponnier Aug 25, 2026
4e33325
feat: fee-compare agnostic — pick any two perp venues on both sides
Flotapponnier Aug 25, 2026
57eb6ef
fix: live bench rates + full venue logos for fee-compare
Flotapponnier Aug 25, 2026
3e14eeb
fix: correct taker rates from bench YAML, drop all-in bench source
Flotapponnier Aug 25, 2026
9f3772e
merge: keep agnostic fee-compare client over fixed-HL version
Flotapponnier Aug 25, 2026
0cf8ccf
feat: agnostic fee-compare page — any two perp venues
Flotapponnier Aug 25, 2026
9393fe7
fix: always show wallet input, grey out when venue has no history
Flotapponnier Aug 25, 2026
917714d
merge: keep agnostic client with wallet-always-visible fix
Flotapponnier Aug 25, 2026
7a0724c
fix: always show wallet input on fee-compare
Flotapponnier Aug 25, 2026
fd479fd
feat: add GMX v2 and dYdX v4 wallet history to fee-compare
Flotapponnier Aug 25, 2026
956052d
fix: use EIP-55 checksum for GMX Subsquid queries (case-sensitive)
Flotapponnier Aug 25, 2026
4da3724
feat: add notional simulation — compare fees without wallet
Flotapponnier Aug 26, 2026
2dbfc28
Merge remote-tracking branch 'origin/dev' into feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
9d2b73a
Merge pull request #2060 from ChainBench/feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
4dac92e
fix: show projected cost on inactive side in fee-compare wallet analysis
Flotapponnier Aug 26, 2026
13daa9c
feat: remove notional simulation UI, wallet-only mode
Flotapponnier Aug 26, 2026
e45cbb2
Merge pull request #2061 from ChainBench/feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
a92cb05
feat: per-trade fee comparison column in HL trade history
Flotapponnier Aug 26, 2026
f127ce9
Merge pull request #2062 from ChainBench/feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
26f703a
fix: GMX v2 static rate 6->5 bps
Flotapponnier Aug 26, 2026
2c7e462
Merge pull request #2063 from ChainBench/feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
db37e7f
feat: live rates for all venues, remove lighter/extended/aster
Flotapponnier Aug 26, 2026
86dd57b
Merge pull request #2064 from ChainBench/feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
ddb11ea
feat: rateIsLive field + LIVE/Protocol badges in rate card
Flotapponnier Aug 26, 2026
cbe3aa1
Merge pull request #2065 from ChainBench/feat/fee-compare-agnostic
Flotapponnier Aug 26, 2026
6d08bcf
fix: revalidate hl-cohort + hl-history tags on aggregate purge (#2066)
Flotapponnier Aug 26, 2026
06054a8
fix(app-store-ratings): last_over_time[31m] on reviews panel for 7d+ …
Flotapponnier Aug 26, 2026
9449a20
fix: parse EdgeX defaultTakerFeeRate as string (API returns strings n…
Flotapponnier Aug 26, 2026
5368178
fix: GMX live rate — filter to USDC collateral only (non-USDC decimal…
Flotapponnier Aug 26, 2026
d1f671e
fix: show maker rebates as earned (green +), clarify savings when fee…
Flotapponnier Aug 26, 2026
cb43bf6
feat(rpc): add Dogecoin bench #235 (Tatum, dRPC, BlockCypher)
Flotapponnier Aug 26, 2026
3050775
Merge pull request #2078 from ChainBench/feat/dogecoin-rpc-bench
Flotapponnier Aug 26, 2026
de54457
feat: effective per-coin rate in rate card + funding display in walle…
Flotapponnier Aug 26, 2026
298b6d0
test: add unit tests for perp-fees walk, fee conversions, tier logic
Flotapponnier Aug 26, 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
2 changes: 1 addition & 1 deletion benchmarks/app-store-ratings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ metric_panels:
- id: reviews
label: Review count
label_key: app
metric: app_store_reviews_total
metric: last_over_time(app_store_reviews_total{}[31m])
unit: count
higher_is_better: true
description: "Total number of user ratings submitted on the US App Store. More reviews = more statistically reliable average. Robinhood leads with 4.8M+ ratings, Coinbase follows at 1.8M+."
Expand Down
139 changes: 139 additions & 0 deletions benchmarks/dogecoin-rpc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# OpenChainBench. Bench No 235

slug: dogecoin-rpc
number: "235"
title: Fastest free Dogecoin RPC, live no-key endpoint latency
seo_title: "Fastest free Dogecoin RPC 2026"
seo_description: "{{best_name}} leads free Dogecoin RPC at {{best_p50}} (getblockcount p50, 24h). 3 providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for getblockcount against every available public Dogecoin node, audited every 60 seconds from 3 regions.

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

seo_intro: |
Dogecoin is a proof-of-work UTXO blockchain forked from Litecoin (itself a Bitcoin fork) and launched in December 2013. It targets one block every 60 seconds using the Scrypt hashing algorithm and has no hard supply cap. Dogecoin exposes a Bitcoin-compatible JSON-RPC interface — most node implementations accept `getblockcount` as a standard method. Public endpoints are available without an API key from Tatum, dRPC and BlockCypher. BlockCypher exposes a REST API instead of JSON-RPC, returning the current chain height via a GET request to its blockchain info endpoint. Every provider was live-verified with consecutive block-height probes at launch.

abstract: |
Per-chain member of the RPC latency cluster, extended to Dogecoin.
We measure the round-trip latency of a block-height query against
every available public Dogecoin node that sustains continuous probing:
3 providers at launch, every 60 seconds, from us-east, eu-west and
Singapore. Tatum and dRPC are probed via JSON-RPC POST (getblockcount);
BlockCypher via REST GET of its blockchain info endpoint. The harness
classifies every response (ok / http_err / jsonrpc_err / stale / timeout)
with a Dogecoin-scaled staleness gap (5 blocks, around 5 min at 60 s/block).
The cross-chain view lives on the parent rpc-capabilities benchmark;
this page is the Dogecoin-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 (Tatum, dRPC): {\"jsonrpc\":\"2.0\",\"id\":<rotating>,\"method\":\"getblockcount\",\"params\":[]}. Plain HTTP POST. The result is a decimal integer (block count = current height + 1)."
- "Payload (BlockCypher): GET https://api.blockcypher.com/v1/doge/main. Returns a JSON object with a `height` field containing 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 5 behind the cross-provider tip), timeout. Latency without reliability is a misleading ranking signal."
- "This page is part of the per-chain RPC cluster derived from the cross-chain rpc-capabilities benchmark; the identical harness, cadence and exclusion rules apply on every chain."
- "Chain scope: every query on this page is pinned to chain=dogecoin. Provider coverage at launch: 3 endpoints (Tatum, dRPC, BlockCypher)."

findings:
- "{{best_name}} currently leads Dogecoin RPC at {{best_p50}} (getblockcount p50, 24h) across 3 measured providers."

faq:
- q: "What is the fastest free Dogecoin RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (Dogecoin block count 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 Dogecoin RPC endpoints work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: Tatum (dogecoin-mainnet.gateway.tatum.io, JSON-RPC), dRPC (dogecoin.drpc.org, JSON-RPC) and BlockCypher (api.blockcypher.com/v1/doge/main, REST GET). Every listed endpoint was live-verified with a block-height probe returning a parsable result before inclusion."
- q: "Does the fastest Dogecoin RPC change by region?"
a: "Often. dRPC routes through a decentralized mesh so latency varies by origin region; Tatum and BlockCypher have fixed infrastructure, so latency rankings can shift significantly depending on your geographic origin. The region tabs at the top of the page re-scope every number to a single origin."
- q: "How is Dogecoin RPC latency measured here, technically?"
a: "One block-height probe every 60 seconds against each provider from each of 3 regions. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus quantile_over_time over 24 hours. Tatum and dRPC use JSON-RPC POST (getblockcount); BlockCypher uses REST GET of its blockchain info endpoint. Best-effort measurements; p50 is the median, p90 the 90th percentile and p99 the 99th percentile of latency samples collected over the last 24 hours."
- q: "Why does BlockCypher use a different API method than the other Dogecoin providers?"
a: "BlockCypher exposes a proprietary REST API rather than a Bitcoin-compatible JSON-RPC interface. Instead of getblockcount, we send a GET request to its blockchain info endpoint, which returns a JSON object with a height field. The measurement logic is identical: client-side round-trip in milliseconds, classified as ok when a parsable block height is returned."

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

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

- slug: drpc
name: dRPC
tag: dRPC decentralized RPC mesh, Dogecoin public endpoint, no key required
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a getblockcount POST sent every 60s from 3 regions to dogecoin.drpc.org."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="dogecoin"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="dogecoin"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="drpc", chain="dogecoin"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="drpc", chain="dogecoin"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="drpc", chain="dogecoin"}) / sum(ocb:rpc_call:rate_24h{provider="drpc", chain="dogecoin"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="drpc", chain="dogecoin"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="dogecoin"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="dogecoin", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="dogecoin", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="dogecoin", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="dogecoin", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="dogecoin", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="drpc", chain="dogecoin", region="sgp"}[1h])

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