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
13 changes: 13 additions & 0 deletions benchmarks/hyperliquid-frontends.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1504,6 +1504,19 @@ providers:
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 7200))
sample_size: hl_frontend_fills_total_24h_v2{builder="perpex"}
series: hl_frontend_fees_usd_24h_v2{builder="perpex"}

- slug: afterbell
name: Afterbell
tag: Hyperliquid builder code, USD revenue on the last complete UTC day
formula: "USD builder fees collected on the last complete UTC day, summed across every attributed fill in the daily feed file for Afterbell's builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="afterbell"}
p90: hl_frontend_volume_usd_24h_v2{builder="afterbell"}
p99: hl_frontend_fees_per_user_usd_v2{builder="afterbell"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="afterbell"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 7200))
sample_size: hl_frontend_fills_total_24h_v2{builder="afterbell"}
series: hl_frontend_fees_usd_24h_v2{builder="afterbell"}
metric_panels:
- id: volume
label: Volume routed
Expand Down
7 changes: 7 additions & 0 deletions harnesses/hyperliquid-frontends/builders.json
Original file line number Diff line number Diff line change
Expand Up @@ -744,5 +744,12 @@
"address": "0x495a2c91b4173d979150ba108e2d80ce0145a7de",
"valid_from": "2026-03-14",
"notes": "Perpex (perpex.co, by Celebit Ltd), a Hyperliquid trading front-end on web, iOS and Android. Builder address and fee from the operator: 0.10% of eligible filled notional, including copied orders, published at perpex.co/fees. valid_from is the first day the public fills bucket returns a file, checked day by day from 2025-01-01 on 2026-10-23: 139 days have one, the earliest 2026-03-14. Hyperliquid's referral info for the address reports about $788 of builderRewards."
},
{
"slug": "afterbell",
"name": "Afterbell",
"address": "0xda5584eb1dff6ee2ae383b077b4dca9c0df1d4f6",
"valid_from": "2026-11-04",
"notes": "Afterbell (afterbell.pro), a Hyperliquid trading front-end for stock, index and commodity perps (HIP-3) and crypto perps, each stock perp read against its home exchange's session. Builder address and fee from the operator; the live site bundle carries the same address and Hyperliquid's referral info gives it the code AFTERBELL. Fee published at afterbell.pro/fees: 0.03% standard; 0.015%, 0.01% and 0.008% from $10M, $50M and $250M of 30-day volume; 0.005% for a wallet's first 30 days; 0.04% on copied fills; 0.001% on every order until 2026-12-31. valid_from is the first day the public fills bucket returns a file, checked day by day from 2026-10-01 on 2026-11-08: 3 days have one, the earliest 2026-11-04, for 10 fills, $849 of notional and $0.011 of builder fees in total, all from one wallet, the builder address itself. Its first builder fill was 2026-11-03 at 20:16 UTC, after that day's export cutoff."
}
]
Binary file added public/logos/afterbell.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions src/data/provider-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2255,6 +2255,12 @@ export const PROVIDER_REGISTRY: Record<string, ProviderRegistryEntry> = {
description:
"Perpex is a third-party Hyperliquid trading front-end by Celebit Ltd on web, iOS and Android, covering perps, spot, HIP-3 and HIP-4 outcome markets and copy trading of public wallets, with a 0.10% builder fee on eligible fills.",
},
afterbell: {
url: "https://afterbell.pro",
description:
"Afterbell is a Hyperliquid trading front-end for stock, index and commodity perps (HIP-3) and crypto perps that reads each stock perp against its home exchange's session; its orders carry a registered builder code (Hyperliquid referral code AFTERBELL) at 0.03% standard, lower by 30-day volume.",
twitter: "@Afterbell_pro",
},

// ─── Perp funding venues (bench № 036) ─────────────────────────────
bybit: {
Expand Down
1 change: 1 addition & 0 deletions src/lib/logo-manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@ const RAW: Record<string, string> = {
"binance-us": "/logos/binance-us.svg",
cryptocom: "/logos/cryptocom.svg",
// ─── Hyperliquid frontends (bench № 030) ───
afterbell: "/logos/afterbell.png",
"nova-markets": "/logos/nova-markets.jpeg",
"phantom-perps": "/logos/phantom-perps.svg",
// ─── Terminal fill quality (bench № 268): the wallets' in-app swap ───
Expand Down
4 changes: 3 additions & 1 deletion src/lib/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -949,7 +949,9 @@ const buildProvidersCached = unstable_cache(
// that appearance. Lockstep with bench-unfiltered-v115.
// v32: BlockVectra gains two appearances, ethereum-rpc and arbitrum-rpc.
// Lockstep with bench-unfiltered-v116.
["providers-v32"],
// v33: Afterbell gains its first appearance, bench 030.
// Lockstep with bench-unfiltered-v117.
["providers-v33"],
// 900 s: the provider index feeds products / compare / answers, whose
// numbers move slowly, and this revalidate is also the effective ISR
// period of those ~500 pages (Next takes the min across a route's caches).
Expand Down
2 changes: 1 addition & 1 deletion src/lib/spec-provider-set.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,6 @@ describe("the provider set behind the cache keys", () => {
"Then set EXPECTED to the hash in this failure, and add the provider",
`to PRODUCT_NAMES if it needs a display name. Providers now: ${count}.`,
].join("\n"),
).toBe("c96bf5534dd9dc77");
).toBe("7e83b3a6fb29832f");
});
});
9 changes: 7 additions & 2 deletions src/lib/spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,11 @@ const loadBenchmarkUnfilteredCached = unstable_cache(
// arbitrum-rpc (issue #3573), one more public row on each. Cached
// entries hold the old provider set. Moves with all-benchmarks-v109,
// bench-filters-v55 and providers-v32.
["bench-unfiltered-v116", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
// v117: Afterbell joins bench 030 as a builder row (#3578). Cached
// entries hold the old provider set. Moves with all-benchmarks-v110
// and providers-v33; bench 030 declares no dimensions, so
// bench-filters stays.
["bench-unfiltered-v117", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] },
);

Expand Down Expand Up @@ -879,7 +883,8 @@ const loadAllBenchmarksCached = unstable_cache(
// retired 2026-11-06; a cached catalog would keep linking them).
// v109: lockstep with bench-unfiltered-v116 (BlockVectra on Ethereum and
// Arbitrum).
["all-benchmarks-v109", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
// v110: lockstep with bench-unfiltered-v117 (Afterbell on bench 030).
["all-benchmarks-v110", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] },
);
export const loadAllBenchmarks = cache(loadAllBenchmarksCached);
Expand Down
Loading