Repository navigation
add Nova as the 105th Hyperliquid builder, and not as a perp DEX - #3130
Merged
Merged
Conversation
Florent asked to add nova.markets as a perp DEX. It is two things, and only one of them is ours to measure today. **What it is.** Nova routes perpetual trades to Hyperliquid under its own builder code, 0x3f950b0a5221048097057af9fd162c3cdf81e9dd, and separately runs a venue on Arbitrum at 0x1410FA3F87F6A6ea221E5D2aB608C23005eC34f3. That second contract's proxy bytecode is byte-identical to the Gains Network diamond: same 2,227 bytes, same sha256, different EIP-1967 implementation slot. So the Arbitrum side is a gTrade deployment, not a new architecture, and its docs list one market trading, HYPE/USD, out of 453 pair entries. It is not a HIP-3 dex. The perpDexs registry returns ten names and none is Nova: abcd, cash, flx, hyna, io, km, mkts, para, vntl, xyz. **Why the builder row and not the perp cohort.** The Arbitrum contract holds $1,590.90 of USDC against the Gains diamond's $705,081. One market, no measurable open interest, nothing for /perps to rank that would not be a row of near-zeros. Its Hyperliquid activity, meanwhile, is exactly what bench 030 already measures for 104 other frontends off the same public feed, so putting it in both would count the same flow twice. **What it actually trades.** The public fills bucket, checked day by day over 46 days on 2026-10-21: 17 days return a file, the earliest 2026-09-25. Across all of them, 156 fills, $27,729 of notional and $9.71 of builder fees. Its best day was 2026-10-20 at $15,086 and $5.28, from three wallets. For scale, fomo did 13,476 fills, 1,126 wallets, $34.07M and $14,930 on that same day. That is small, and it belongs anyway: the bench publishes 104 rows of which 44 sit under $10 a day and at least six read exactly $0.00 with zero samples. The cohort policy is every known builder, measured, whatever the number says. Nova lands mid-way through the small tail rather than at the bottom. **Not included.** No logo, because I will not invent an asset; 13 of the 104 existing builders have none either. The X handle is the one the docs name, @novadotmarkets, after I first wrote a plausible-looking handle that does not exist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flotapponnier
force-pushed
the
feat/add-nova-markets
branch
from
October 21, 2026 21:01
01f38df to
d9f75d8
Compare
This was referenced Oct 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Asked to add nova.markets as a perp DEX. It turns out to be two things, and
only one of them is ours to measure today.
What Nova is
0x3f950b0a5221048097057af9fd162c3cdf81e9dd0x1410FA3F87F6A6ea221E5D2aB608C23005eC34f3The Arbitrum contract's proxy bytecode is byte-identical to the Gains
Network diamond: same 2,227 bytes, same sha256, different EIP-1967
implementation slot. So that side is a gTrade white-label, not a new
architecture, which also means everything this repo already knows about
reading Gains applies to it. Its docs list one market trading, HYPE/USD, out
of 453 pair entries, USDC collateral, 1.1x to 200x.
Not a HIP-3 dex:
{"type":"perpDexs"}returns ten names and none is Nova(
abcd, cash, flx, hyna, io, km, mkts, para, vntl, xyz).Why the builder row rather than the perp cohort
One market and no measurable open interest. Adding it to
PERP_VENUESwouldput a row of near-zeros on /perps, and its Hyperliquid flow is already what
bench 030 measures for 104 other frontends off the same public feed, so both
would count the same trades twice.
What it actually trades
Public fills bucket, checked day by day over 46 days on 2026-10-21. 17 days
return a file, the earliest 2026-09-25:
For scale,
fomoon that same day: 13,476 fills, 1,126 wallets, $34.07M,$14,930.
That is small, and it belongs anyway. Bench 030 publishes 104 rows of
which 44 sit under $10 a day and at least six read exactly $0.00 with
zero samples. The cohort policy is every known builder, measured, whatever
the number says. Nova lands mid-way through the small tail, not at the bottom.
What changed
harnesses/hyperliquid-frontends/builders.json: a 105th entry, withvalid_from: 2026-09-25established by the day-by-day scan rather than bythe first day I happened to probe.
benchmarks/hyperliquid-frontends.yml: a provider block on the same sevenqueries as every other row. Provider count 104 → 105, and no editorial field
on this spec asserts a cohort size, so there is no prose to follow.
src/data/provider-registry.ts: url and description, so the product pagehas an official link.
Not included
have none either. Drop a file in
public/logos/nova-markets.*and add themanifest line when you have one.
plausible-looking handle that does not exist, then checked.
Checks
pnpm validate253 specs valid.tsc --noEmitclean.eslint0 errors.bun test713 pass, 0 fail.The row appears once the harness redeploys and picks up the new registry
entry; it reads $0.00 on any day Nova routes no attributed fills, which is 29
of the last 46.
🤖 Generated with Claude Code