From a4544975568b1807755fd8f65c90b18714f29e34 Mon Sep 17 00:00:00 2001
From: Florent Tapponnier
+ OpenChainBench is funded by Mobula because we needed honest infrastructure benchmark data internally and saw no neutral source existed. The site is open-sourced because the industry needs it. +
++ Mobula competes in five live benchmarks: aggregator head lag, bridge fee, bridge quote latency, network coverage and metadata coverage. Mobula currently leads aggregator head lag and bridge quote latency. This is a real conflict of interest and we want it visible above the fold, not buried. +
++ Three safeguards stand against the conflict: +
+quantile_over_time query. Anyone can hit our /api/citable or /api/stat/<slug> endpoint and re-derive the leaderboard with their own aggregation. If Mobula were inflating its rank, the raw data would show it.docker compose up, your /metrics endpoint emits the same numbers ours does within 30 seconds.+ We do not run a paid tier. We do not sell ranking slots. We do not take provider sponsorship in exchange for inclusion. There is no token. If you spot any deviation from this policy, file a private security advisory and we will treat it as the integrity incident it would be. +
++ Hosting and infrastructure costs are paid by Mobula. The site runs on Vercel; harnesses run on Railway. We are open to grant funding that preserves editorial independence, but we will not accept funding from any party we benchmark. +
+ +Every benchmark is a YAML spec plus a harness. The spec describes what to measure, which providers, which Prometheus queries hold the numbers; the harness runs continuously on Railway and exposes those metrics. A single shared Prometheus scrapes every harness; the site queries Prometheus directly and re-renders every minute. Every provider is rendered with equal visual weight. readers do their own ranking.
@@ -62,7 +84,7 @@ export default function AboutPage() { walks through the steps. New providers, new metrics, new chains. all welcome via pull request. -
See a number you can't reproduce? File a{" "}
From b4f3a83eeabd999d560be8ce4fad2df588da8ae6 Mon Sep 17 00:00:00 2001
From: Florent Tapponnier
@@ -430,6 +438,17 @@ export default async function ProviderPage({
decoding="async"
/>
+ `;
+ const markdown = `[](${targetUrl})`;
+ // Pre-baked X intent. Providers click → tweet draft opens
+ // with the ranking claim, the bench URL and the OCB handle
+ // already filled in. Removes the friction of writing the
+ // post themselves and gives us the canonical anchor text
+ // back as a tagged tweet on every share.
+ const tweetText = `Independently benchmarked #1 on ${a.benchmark.title} by @OpenChainBench.\n\nReproducible methodology, live data:`;
+ const tweetIntent = `https://x.com/intent/tweet?text=${encodeURIComponent(tweetText)}&url=${encodeURIComponent(targetUrl)}`;
return (
Copy HTML
@@ -438,6 +457,14 @@ export default async function ProviderPage({
{html}
+ Copy Markdown
+
+
+{markdown}
+
+