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
157 changes: 79 additions & 78 deletions benchmarks/hyperliquid-frontends.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -916,19 +916,6 @@ providers:
sample_size: hl_frontend_fills_total_24h_v2{builder="0x7cc0fd2b"}
series: hl_frontend_fees_usd_24h_v2{builder="0x7cc0fd2b"}

- slug: "0x557edb25"
name: "0x557e…3c81"
tag: Unidentified builder address, rename pending identification
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for this not yet identified builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="0x557edb25"}
p90: hl_frontend_volume_usd_24h_v2{builder="0x557edb25"}
p99: hl_frontend_fees_per_user_usd_v2{builder="0x557edb25"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="0x557edb25"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="0x557edb25"}
series: hl_frontend_fees_usd_24h_v2{builder="0x557edb25"}

- slug: "0x446fbc72"
name: "0x446f…d6c6"
tag: Unidentified builder address, rename pending identification
Expand DownExpand Up@@ -968,19 +955,6 @@ providers:
sample_size: hl_frontend_fills_total_24h_v2{builder="0xb290f2f3"}
series: hl_frontend_fees_usd_24h_v2{builder="0xb290f2f3"}

- slug: "0xa1fcd6e2"
name: "0xa1fc…bf4d"
tag: Unidentified builder address, rename pending identification
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for this not yet identified builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="0xa1fcd6e2"}
p90: hl_frontend_volume_usd_24h_v2{builder="0xa1fcd6e2"}
p99: hl_frontend_fees_per_user_usd_v2{builder="0xa1fcd6e2"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="0xa1fcd6e2"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="0xa1fcd6e2"}
series: hl_frontend_fees_usd_24h_v2{builder="0xa1fcd6e2"}

- slug: "0x53a19541"
name: "0x53a1…fcd1"
tag: Unidentified builder address, rename pending identification
Expand All@@ -1007,32 +981,6 @@ providers:
sample_size: hl_frontend_fills_total_24h_v2{builder="0xdbc27ea7"}
series: hl_frontend_fees_usd_24h_v2{builder="0xdbc27ea7"}

- slug: "0xea2c82b5"
name: "0xea2c…75b3"
tag: Unidentified builder address, rename pending identification
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for this not yet identified builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="0xea2c82b5"}
p90: hl_frontend_volume_usd_24h_v2{builder="0xea2c82b5"}
p99: hl_frontend_fees_per_user_usd_v2{builder="0xea2c82b5"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="0xea2c82b5"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="0xea2c82b5"}
series: hl_frontend_fees_usd_24h_v2{builder="0xea2c82b5"}

- slug: "0x49791d46"
name: "0x4979…37b8"
tag: Unidentified builder address, rename pending identification
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for this not yet identified builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="0x49791d46"}
p90: hl_frontend_volume_usd_24h_v2{builder="0x49791d46"}
p99: hl_frontend_fees_per_user_usd_v2{builder="0x49791d46"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="0x49791d46"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="0x49791d46"}
series: hl_frontend_fees_usd_24h_v2{builder="0x49791d46"}

- slug: "0x9f83fe01"
name: "0x9f83…31d9"
tag: Unidentified builder address, rename pending identification
Expand DownExpand Up@@ -1072,32 +1020,6 @@ providers:
sample_size: hl_frontend_fills_total_24h_v2{builder="0xc95d92dc"}
series: hl_frontend_fees_usd_24h_v2{builder="0xc95d92dc"}

- slug: "0xdf39721d"
name: "0xdf39…4750"
tag: Unidentified builder address, rename pending identification
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for this not yet identified builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="0xdf39721d"}
p90: hl_frontend_volume_usd_24h_v2{builder="0xdf39721d"}
p99: hl_frontend_fees_per_user_usd_v2{builder="0xdf39721d"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="0xdf39721d"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="0xdf39721d"}
series: hl_frontend_fees_usd_24h_v2{builder="0xdf39721d"}

- slug: "0x40e9d9fe"
name: "0x40e9…5260"
tag: Unidentified builder address, rename pending identification
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for this not yet identified builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="0x40e9d9fe"}
p90: hl_frontend_volume_usd_24h_v2{builder="0x40e9d9fe"}
p99: hl_frontend_fees_per_user_usd_v2{builder="0x40e9d9fe"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="0x40e9d9fe"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="0x40e9d9fe"}
series: hl_frontend_fees_usd_24h_v2{builder="0x40e9d9fe"}

# All five metrics come from the local hl-node harness and update at the
# same sub-minute cadence as the main headline.

Expand DownExpand Up@@ -1478,6 +1400,85 @@ providers:
sample_size: hl_frontend_fills_total_24h_v2{builder="nansen"}
series: hl_frontend_fees_usd_24h_v2{builder="nansen"}

# ─── Identified 2026-06-28 via on-chain HL referral code cross-reference ───
- slug: invo
name: Invo
tag: Hyperliquid builder code, USD revenue captured over rolling 24h window
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for Invo's builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="invo"}
p90: hl_frontend_volume_usd_24h_v2{builder="invo"}
p99: hl_frontend_fees_per_user_usd_v2{builder="invo"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="invo"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="invo"}
series: hl_frontend_fees_usd_24h_v2{builder="invo"}

- slug: bitget-wallet
name: Bitget Wallet
tag: Hyperliquid builder code, USD revenue captured over rolling 24h window
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for Bitget Wallet's builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="bitget-wallet"}
p90: hl_frontend_volume_usd_24h_v2{builder="bitget-wallet"}
p99: hl_frontend_fees_per_user_usd_v2{builder="bitget-wallet"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="bitget-wallet"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="bitget-wallet"}
series: hl_frontend_fees_usd_24h_v2{builder="bitget-wallet"}

- slug: defi-saver
name: DeFi Saver
tag: Hyperliquid builder code, USD revenue captured over rolling 24h window
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for DeFi Saver's builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="defi-saver"}
p90: hl_frontend_volume_usd_24h_v2{builder="defi-saver"}
p99: hl_frontend_fees_per_user_usd_v2{builder="defi-saver"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="defi-saver"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="defi-saver"}
series: hl_frontend_fees_usd_24h_v2{builder="defi-saver"}

- slug: marsgo
name: MarsGO
tag: Hyperliquid builder code, USD revenue captured over rolling 24h window
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for MarsGO's builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="marsgo"}
p90: hl_frontend_volume_usd_24h_v2{builder="marsgo"}
p99: hl_frontend_fees_per_user_usd_v2{builder="marsgo"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="marsgo"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="marsgo"}
series: hl_frontend_fees_usd_24h_v2{builder="marsgo"}

- slug: unitywallet
name: UnityWallet
tag: Hyperliquid builder code, USD revenue captured over rolling 24h window
formula: "USD builder fees collected over the rolling 24h window, summed across every attributed fill on the local hl-node stream for UnityWallet's builder address."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="unitywallet"}
p90: hl_frontend_volume_usd_24h_v2{builder="unitywallet"}
p99: hl_frontend_fees_per_user_usd_v2{builder="unitywallet"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="unitywallet"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="unitywallet"}
series: hl_frontend_fees_usd_24h_v2{builder="unitywallet"}

- slug: metamask-alt
name: MetaMask (alt)
tag: Hyperliquid builder code, USD revenue captured over rolling 24h window
formula: "USD builder fees collected over the rolling 24h window via MetaMask's secondary on-chain HL builder address (0xea2c…75b3, documented alongside the primary 0xe95a…53aa)."
queries:
p50: hl_frontend_fees_usd_24h_v2{builder="metamask-alt"}
p90: hl_frontend_volume_usd_24h_v2{builder="metamask-alt"}
p99: hl_frontend_fees_per_user_usd_v2{builder="metamask-alt"}
mean: avg_over_time(hl_frontend_fees_usd_24h_v2{builder="metamask-alt"}[7d])
success: (hl_frontend_local_last_tick_unix_v2 > bool (time() - 120))
sample_size: hl_frontend_fills_total_24h_v2{builder="metamask-alt"}
series: hl_frontend_fees_usd_24h_v2{builder="metamask-alt"}

metric_panels:
- id: volume
label: Volume routed
Expand Down
Binary file addedpublic/logos/bitget-wallet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 33 additions & 0 deletions public/logos/defi-saver.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file addedpublic/logos/invo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file addedpublic/logos/marsgo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file addedpublic/logos/unitywallet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 18 additions & 1 deletion src/components/ledger-table.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,6 +21,17 @@ import { buildProviderColors } from "@/lib/series-colors";
import { isRegion } from "@/lib/brand";
import { isAll } from "@/lib/dimensions";

// Hyperliquid frontends bench surfaces builder addresses that aren't
// yet in /opt/hl-bench/builders.json with a raw hex slug. Mirrors the
// HEX_ADDRESS_SLUG regex in src/lib/providers.ts (the /products route
// blacklist) — kept inline because providers.ts is server-only (it
// imports unstable_cache + the bench loaders) and pulling it into
// this client component breaks the build.
const HEX_ADDRESS_SLUG = /^0x[a-f0-9]+$/;
function isHexAddressSlug(slug: string): boolean {
return HEX_ADDRESS_SLUG.test(slug.toLowerCase());
}

/** Sort keys exposed by the header click handlers. `null` (the default)
* means "use the bench's natural sort" — pickValue + higherIsBetter —
* which is what callers, OG renders, and share cards depend on. Any
Expand DownExpand Up@@ -589,7 +600,13 @@ function Row({
<div className="flex flex-col gap-1 min-w-0">
<span className="flex items-center gap-2 min-w-0">
<ProviderLogo slug={r.slug} name={r.name} size={20} />
{isRegion(r.slug) ? (
{isRegion(r.slug) || isHexAddressSlug(r.slug) ? (
// Hex builder addresses (HL frontends not yet in
// builders.json) have no /products/<slug> page — the
// route is blacklisted in providers.ts, so a link would
// 404. Render as plain text until the builder is added
// to the registry, at which point it gets a real slug
// and the link reappears automatically.
<span
className="font-semibold truncate min-w-0"
style={{ color: isOffline ? "var(--color-ink-muted)" : color }}
Expand Down
Loading
Loading