Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OpenChainBench. Bench № 206

slug: solana-avg-trade-size
slug: terminal-avg-trade-size
number: "206"
title: "Average swap size per trading terminal: who carries the biggest tickets"
seo_title: "Average trade size by trading terminal 2026"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OpenChainBench. Bench № 207

slug: solana-unique-traders
slug: terminal-swap-transactions
number: "207"
title: "Daily swap transactions per trading terminal: Axiom vs Fomo vs pump.fun vs GMGN"
seo_title: "Daily swap transactions by trading terminal 2026"
Expand Down Expand Up @@ -51,7 +51,7 @@ methodology:
- "Latest complete day, not a rolling 24 hours: the source publishes daily and its latest day is normally yesterday. A terminal with no activity on that day carries no figure and reads unresponsive rather than having its last live day carried forward. BasedBot is the live case, with volume on Robinhood Chain and almost none on Solana."
- "Stale source: a day more than 3 whole days behind, or a terminal the source stops returning, has its gauges deleted and reads unresponsive. An old figure is never republished as current, because these gauges are scraped every 60 seconds and read through a 24h window, which would average a frozen figure in as though it had just been measured."
- "Two freshness layers, because they fail differently: terminal_activity_last_success_unix says the harness is still running, and terminal_activity_health says this particular terminal and chain published a day inside the window. A harness that runs while its source freezes trips the second, not the first."
- "Scope: seven chains as tabs plus an all-chains total, from the ten the harness measures. The slug still reads solana- because this bench was Solana-only until 2026-10-07 and renaming a slug is a separate change; the page, its title and its default view are not Solana-only any more."
- "Scope: seven chains as tabs plus an all-chains total, from the ten the harness measures. The remaining three carry one or two terminals each, which is a list rather than a comparison."
- "Not scored here: what those transactions cost. A terminal can lead on transaction count and be the most expensive way to route a swap; benches 268 and 279 measure that."

findings:
Expand Down
10 changes: 5 additions & 5 deletions src/app/trading-apps/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ const ALL_BENCH_SLUGS = [
"terminal-fill-quality",
"solana-trading-platform-wars",
"solana-dex-volume",
"solana-unique-traders",
"solana-avg-trade-size",
"terminal-swap-transactions",
"terminal-avg-trade-size",
"trading-platform-wallets",
"solana-launchpad-wars",
"memecoin-platforms",
Expand All @@ -51,8 +51,8 @@ const ALL_GROUPS = [
items: [
{ slug: "solana-trading-platform-wars", title: "Volume and commission" },
{ slug: "solana-dex-volume", title: "DEX volume & protocol revenue" },
{ slug: "solana-unique-traders", title: "Swap transactions" },
{ slug: "solana-avg-trade-size", title: "Average trade size" },
{ slug: "terminal-swap-transactions", title: "Swap transactions" },
{ slug: "terminal-avg-trade-size", title: "Average trade size" },
{ slug: "trading-platform-wallets", title: "Daily active wallets" },
],
},
Expand Down Expand Up @@ -110,7 +110,7 @@ export default async function TradingAppsHubPage() {
// tehcscreener API on 2026-10-07 and are in the staging pipeline for the 24h
// window and the audit round every bench serves on production after, so say
// that rather than naming a blocker that has been cleared.
const pausedNote = isDevOnlyBench("solana-unique-traders")
const pausedNote = isDevOnlyBench("terminal-swap-transactions")
? "Benches 203 platform fee rates, 206 average trade size, 207 swap transactions and 232 active wallets were re-sourced on 2026-10-07 and are completing validation on staging. "
: "";
const kpiCol = COLUMNS.find(
Expand Down
4 changes: 2 additions & 2 deletions src/data/bench-published.json
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,10 @@
"sei-rpc": "2026-07-26T14:46:53.000Z",
"sentinel-rpc": "2026-08-28T18:56:40.000Z",
"shentu-rpc": "2026-08-29T17:19:43.000Z",
"solana-avg-trade-size": "2026-08-13T00:01:53.000Z",
"solana-dex-volume": "2026-08-12T19:45:32.000Z",
"solana-launchpad-wars": "2026-08-11T14:35:34.000Z",
"solana-rpc": "2026-07-12T15:37:15.000Z",
"solana-trading-platform-wars": "2026-08-11T15:07:42.000Z",
"solana-unique-traders": "2026-08-13T00:44:06.000Z",
"soneium-rpc": "2026-07-03T22:44:42.000Z",
"songbird-rpc": "2026-08-05T14:29:04.000Z",
"sonic-rpc": "2026-07-03T22:44:42.000Z",
Expand All @@ -197,8 +195,10 @@
"swellchain-rpc": "2026-08-02T21:30:41.000Z",
"taiko-rpc": "2026-07-03T22:44:42.000Z",
"telos-rpc": "2026-08-05T14:29:04.000Z",
"terminal-avg-trade-size": "2026-08-13T00:01:53.000Z",
"terminal-execution-quality": "2026-09-24T18:51:48.000Z",
"terminal-fill-quality": "2026-09-18T08:17:28.000Z",
"terminal-swap-transactions": "2026-08-13T00:44:06.000Z",
"terra-rpc": "2026-08-04T15:53:48.000Z",
"tezos-rpc": "2026-08-18T23:06:04.000Z",
"token-deployment-cost": "2026-06-09T15:34:12.000Z",
Expand Down
41 changes: 14 additions & 27 deletions src/lib/removed-benches.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,36 +177,23 @@ export const DEV_ONLY_BENCH_SLUGS = new Set([
// of the eight rows have no maker rate at all. Un-gate after a 24h
// window and an audit round.
"perp-fee-disclosure",
// The Dune trial ended 2026-10-02 and no paid plan was committed, so these
// four stood down. The note here used to say they "have no free equivalent
// for what they measure"; that stopped being true on 2026-10-07, when they
// were re-sourced to the public tehcscreener API (Allium-backed, no key) via
// harnesses/terminal-activity. Bench 201 had already moved to DeFiLlama's
// free adapters (see bench 201 and 267).
// Benches 203, 206, 207 and 232 left this list on 2026-10-07.
//
// They stay here for the ordinary reason, not the old one: a re-sourced
// bench needs a full 24h window of the new series and an audit round before
// production serves it. Un-gate condition: both of those, not a Dune plan.
// They were gated on 2026-10-02 when the Dune trial ended, under a note
// saying they "have no free equivalent for what they measure". They were
// re-sourced the same week to the public tehcscreener API (Allium-backed,
// no key) via harnesses/terminal-activity: a different vendor, not a
// cheaper route to the same one. Bench 201 had already moved to DeFiLlama.
//
// The move was not a cheaper route to the same numbers. Fee-wallet
// attribution could not see a terminal that charges no fee, so pump.fun was
// structurally absent from three of the four and Fomo from the wallet count;
// all five rows that were blank for source reasons now carry a figure, and
// the comparison is per chain rather than Solana-only.
// Un-gated after the audit round rather than after a 24h window, because
// these four read instant gauges and declare no range selector: the only
// thing a day buys them is a complete chart, which is cosmetic. What the
// audit round caught is in #2843, #2844, #2846, #2848 and #2849.
//
// 206 average trade size, 207 swap transactions, 232 active wallets: all
// three now read terminal-activity. Un-gate condition: a 24h window of the
// new series plus an audit round.
"solana-avg-trade-size",
"solana-unique-traders",
"trading-platform-wallets",
// 203 memecoin platform fee rates: the headline take rate now reads
// terminal-activity. Its fee-paying-rate panel was removed rather than
// re-sourced: that column measured the share of transactions that actually
// paid a fee, which the new source does not report and which none of its
// fields reconstruct. Approximating it would have put a derived number where
// a measured one stood. Un-gate condition: a 24h window plus an audit round.
"memecoin-platforms",
// 206 and 207 were renamed on the way out, from solana-avg-trade-size and
// solana-unique-traders. Neither was ever served on production, so there is
// no signal to preserve and no redirect is owed: their default view is
// all-chains now and the old slugs claimed otherwise.
]);

/**
Expand Down
12 changes: 9 additions & 3 deletions src/lib/spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,9 @@ const loadBenchmarkUnfilteredCached = unstable_cache(
// v88 (2026-09-30): GetBlock joins the keyed cohort on the nine chain RPC
// benches. The provider set of those benches changed, so v87 entries hold a
// keyed cohort of three and a GetBlock exclusion row that is no longer true.
["bench-unfiltered-v88", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
// v89: four benches left DEV_ONLY for production (203, 206, 207, 232) and
// two of them changed slug, so every cached bench set is stale.
["bench-unfiltered-v89", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] },
);

Expand Down Expand Up @@ -716,7 +718,9 @@ const loadAllBenchmarksCached = unstable_cache(
// Dune benches gated).
// v81: lockstep with bench-unfiltered-v88 (GetBlock joins the keyed cohort
// on the nine chain RPC benches).
["all-benchmarks-v81", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
// v82: lockstep with bench-unfiltered-v89 (four benches to production, two
// renamed).
["all-benchmarks-v82", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] },
);
export const loadAllBenchmarks = cache(loadAllBenchmarksCached);
Expand Down Expand Up @@ -819,7 +823,9 @@ const loadBenchmarkFiltered = unstable_cache(
// v32: lockstep with bench-unfiltered-v88. The GetBlock row lives only in
// the tier=keyed variants, so without this bump the keyed tabs keep serving
// a three-provider cohort.
["bench-filters-v32", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
// v33: lockstep with bench-unfiltered-v89. The four new production benches
// carry a chain dimension the cached filter sets do not know about.
["bench-filters-v33", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] }
);

Expand Down
8 changes: 4 additions & 4 deletions src/lib/trading-apps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export const ALL_TRADING_APP_COLUMNS: readonly TradingAppColumn[] = [
key: "traders",
label: "Swap Tx",
scope: "solana",
bench: "solana-unique-traders",
bench: "terminal-swap-transactions",
fmt: fmtCount,
tip: "Swap transactions routed on one complete UTC day, on Solana, from the tehcscreener API. Counted directly rather than inferred from who paid a fee, so a terminal that charges nothing is still counted: pump.fun now appears, having been structurally invisible before.",
higherBetter: true,
Expand All @@ -88,7 +88,7 @@ export const ALL_TRADING_APP_COLUMNS: readonly TradingAppColumn[] = [
key: "tradeSize",
label: "Avg Trade",
scope: "solana",
bench: "solana-avg-trade-size",
bench: "terminal-avg-trade-size",
fmt: fmtUSD,
tip: "One complete UTC day's routed Solana volume divided by that day's swap count, from the tehcscreener API. Includes bots and MEV, so a terminal carrying heavy sniping reads lower than a human-only baseline would. Padre, Phantom and Bloom left this column on 2026-10-07: the current source does not cover them, and a row that cannot be measured is removed rather than shown as zero.",
higherBetter: true,
Expand Down Expand Up @@ -152,8 +152,8 @@ const SOURCE_BY_BENCH: Record<string, string> = {
// fee-wallet attribution could not see a terminal that charges no fee, so
// pump.fun was structurally absent from three of these four columns and
// Fomo from the wallet one.
"solana-unique-traders": "tehcscreener",
"solana-avg-trade-size": "tehcscreener",
"terminal-swap-transactions": "tehcscreener",
"terminal-avg-trade-size": "tehcscreener",
"trading-platform-wallets": "tehcscreener",
"memecoin-platforms": "tehcscreener",
"solana-trading-platform-wars": "DeFiLlama",
Expand Down
Loading