From fe5f2f28d4a9d93c99a61aa0946babe79c17b4e1 Mon Sep 17 00:00:00 2001 From: Flotapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Thu, 13 Aug 2026 16:44:44 +0200 Subject: [PATCH 1/4] fix(204): restore ExecBenchTable page (#1924) --- .../benchmarks/trading-app-execution/page.tsx | 151 +++++++++--------- 1 file changed, 76 insertions(+), 75 deletions(-) diff --git a/src/app/benchmarks/trading-app-execution/page.tsx b/src/app/benchmarks/trading-app-execution/page.tsx index ebfa6b11..babfe560 100644 --- a/src/app/benchmarks/trading-app-execution/page.tsx +++ b/src/app/benchmarks/trading-app-execution/page.tsx @@ -1,62 +1,56 @@ import type { Metadata } from "next"; +import { readFileSync } from "fs"; +import { join } from "path"; +import yaml from "js-yaml"; import Link from "next/link"; import { pageMetadata } from "@/lib/page-metadata"; import { safeJsonLd, buildBreadcrumbJsonLd, buildFaqPageJsonLd } from "@/lib/jsonld"; import { SITE } from "@/data/site"; import { fetchExecLeaderboard } from "@/lib/solana-exec"; -import { fetchEVMRevenue } from "@/lib/evm-exec"; -import { ExecChainTabs } from "@/components/exec-chain-tabs"; +import { ExecBenchTable } from "@/components/exec-bench-table"; export const revalidate = 60; +type BenchMeta = { + faq: { q: string; a: string }[]; + methodology: string[]; + findings: string[]; + subtitle: string; +}; + +function loadBenchMeta(): BenchMeta { + const raw = readFileSync( + join(process.cwd(), "benchmarks/trading-app-execution.yml"), + "utf-8", + ); + return yaml.load(raw) as BenchMeta; +} + export const metadata: Metadata = pageMetadata({ path: "/benchmarks/trading-app-execution", - title: "Trading App Execution Quality: Axiom vs GMGN vs Trojan vs Maestro | OpenChainBench", + title: + "Trading App Execution Quality: Axiom vs GMGN vs Trojan vs Maestro | OpenChainBench", description: - "Compare on-chain execution quality for Solana trading apps: avg platform fee, priority fee, Jito bundle rate, CU price. Axiom vs GMGN vs Trojan vs Maestro, measured passively from fee accounts, updated hourly.", + "Compare on-chain execution quality for Solana trading apps: Jito rate, CU price, priority fee, platform fee. Axiom vs GMGN vs Trojan vs Maestro, measured passively from fee accounts.", }); -const FAQ = [ - { - q: "What is platform fee vs priority fee?", - a: "Priority fee is paid to Solana validators to compete for block space; it does not go to the trading app. Platform fee is the SOL transferred to the trading app's own fee wallet per transaction, which is the actual revenue the platform captures from each trade.", - }, - { - q: "How is transaction count measured?", - a: "Tx count comes from getSignaturesForAddress on the platform's fee wallet(s), giving the total number of transactions that sent fees to that address. This is the full population count, not a sample; the 100-tx sample is used only for fee amount and CU metrics.", - }, - { - q: "Why does Trojan show a near-zero Jito rate?", - a: "Trojan does not appear to use Jito MEV bundles for its standard execution path, consistent with its design as a Telegram bot that prioritises simplicity over MEV protection.", - }, - { - q: "Why are EVM revenues lower than Solana revenues?", - a: "Most platforms primarily target Solana users. EVM fee collection varies: some platforms charge mostly in native ETH/BNB via internal transactions which are not traceable without a trace API. The EVM figures reflect directly visible USDC and native transfers only.", - }, - { - q: "How often is data updated?", - a: "Solana metrics update every 5 minutes (materialiser cycle). EVM revenue updates block-by-block continuously. The timestamp in the table header reflects the last materialiser run.", - }, - { - q: "Which platforms are tracked on EVM chains?", - a: "GMGN, Maestro, and Banana Gun are tracked on Ethereum. GMGN, Maestro, Axiom, and Banana Gun are tracked on BSC. GMGN, Maestro, and Banana Gun are tracked on Base. pump.fun Terminal is tracked on all three EVM chains.", - }, -]; - export default async function TradingAppExecutionPage() { - const [solanaData, evmData] = await Promise.all([ + const [data, meta] = await Promise.all([ fetchExecLeaderboard(), - fetchEVMRevenue(), + Promise.resolve(loadBenchMeta()), ]); const breadcrumb = buildBreadcrumbJsonLd([ { name: "Home", item: SITE.url }, { name: "Benchmarks", item: `${SITE.url}/benchmarks` }, - { name: "Trading App Execution", item: `${SITE.url}/benchmarks/trading-app-execution` }, + { + name: "Trading App Execution", + item: `${SITE.url}/benchmarks/trading-app-execution`, + }, ]); const faqJsonLd = buildFaqPageJsonLd( - FAQ, + meta.faq, `${SITE.url}/benchmarks/trading-app-execution`, ); @@ -65,24 +59,36 @@ export default async function TradingAppExecutionPage() {