Repository navigation
feat(app): Elysium as a fourth chain, behind the "Coming soon" gate - #123
Merged
Merged
Conversation
Elysium (Kinetiq's Arbitrum Orbit L2 for Hyperliquid, chain 99901, gas HYPE) joins the registry. Until NEXT_PUBLIC_LAUNCH_FACTORY_ELYSIUM is set the form shows it as "Coming soon", /elysium 404s and no switcher offers it, so this can ship before the factory is deployed there. - chain: id 99901, HYPE as an ordinary 18-dec native asset, the public RPC as the fallback (ELYSIUM_RPC_URL overrides it server-side), Multicall3, and the explorer under elysium.kinetiq.xyz/explorer (the registry test now allows an explorer base URL with a path, never a trailing slash). - Uniswap v4 from Uniswap/contracts deployments/99901.md; Universal Router v2.1.2 with the "v2" swap layout (proven on a fork with a USDC pool, where the two layouts differ; contracts/test/LaunchFactory.elysium.fork.t.sol). - quotes: HYPE (native, the default) and Circle's USDC at a fixed dollar; WHYPE is a known quote at HYPE's price. A new "hype" quote key carries HYPE's live price, filled server-side the way GITLAWB's is: hypePrice.ts reads Coinbase HYPE-USD spot, falls back to Hyperliquid's allMids, serves the last good value for at most 15 minutes, then null. List sorts, totals (by_chain gains volume_quote_hype), community-pair core quotes and the launch form use it. - the launch form decides "native quote" by address(0) (isNativeQuote), not by the "eth" key, so HYPE takes the native path: msg.value, no approvals, the gas reserve out of the same balance. Presets in HYPE (~ the ETH ones in USD). - indexer: LAUNCH_DEPLOY_BLOCK_ELYSIUM, 2 confirmations (Orbit, like Robinhood Chain), lag alert at 4000 blocks (100 ms blocks). - copy: form blurb, /elysium landing page, rules-page verifier (explorer only: Sourcify lists Elysium testnet but not mainnet yet). - env plumbing: .env.example, Dockerfile, fly.toml, fly-secrets.sh, the CSP's dev RPC list. - brand: public/brand/elysium-placeholder.svg is a neutral lettermark, NOT Kinetiq's mark; replace it with the official one before switching Elysium on. Not in this change, on purpose: the site-wide copy that names the chains by hand (brand.ts title and tagline, footer, hero, about, me, feed, rules intro, README) and the bridge dialog. They come with the switch-on, so the site never advertises a chain it cannot launch on yet. Checks: tsc clean, lint clean, 1391 tests (1380 pass, 11 skipped, 0 fail), production build with the Elysium factory set (/elysium renders), and a local smoke run: /elysium 200, the form offers HYPE and USDC with HYPE's live price, /api/rpc?chain=elysium answers chain id 0x1863d. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
The Elysium network mark supplied by the maintainers (225x225 PNG, added byte-for-byte): a black disc on white, so it is its own tile on the light and dark themes alike. ChainLogo and the wallet menu use it; the neutral placeholder is gone. Swap in Kinetiq's brand-kit SVG, with its source recorded, once one is published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 of 5 tasks
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.
Summary
Adds Elysium (Kinetiq's Arbitrum Orbit L2 for Hyperliquid, chain 99901, gas paid in HYPE) to the site as a fourth chain, behind the existing "Coming soon" gate. Until
NEXT_PUBLIC_LAUNCH_FACTORY_ELYSIUMis set, the form shows Elysium as "Coming soon",/elysiumreturns 404, and no switcher offers it. The contracts are already live on Elysium (block 3986599), so switching on is configuration only.Stacked on the contracts PR (
feat/elysium). Merge that one first: the app's deployments test needscontracts/deployments/launchpad-elysium.jsonfrom it.ELYSIUM_RPC_URLoverrides it on the server), Multicall3, explorer underelysium.kinetiq.xyz/explorer.hypequote key carries HYPE's live price, filled on the server the way GITLAWB's is.hypePrice.tsreads Coinbase HYPE-USD first, falls back to HyperliquidallMids, serves the last good value for at most 15 minutes, then reports null.address(0)(isNativeQuote) instead of theethkey, so HYPE takes the native path:msg.value, no approvals, gas reserve taken from the same balance. Presets are in HYPE.LAUNCH_DEPLOY_BLOCK_ELYSIUM; 2 confirmations, like Robinhood Chain (also Orbit); lag alert at 4,000 blocks (100 ms blocks)..env.example,Dockerfile,fly.toml,fly-secrets.sh, and the dev RPC list in the CSP.Deliberately not in this PR
public/brand/elysium-placeholder.svgis a neutral lettermark, not Kinetiq's logo. Replace it with the official mark (source recorded in the file) before the switch-on.Test plan
tsc --noEmitclean,npm run lintcleannpm test: 1391 tests, 1380 pass, 11 skipped, 0 fail. New tests:hypePrice.test.ts; Elysium cases innative-quote.test.ts(HYPE is never priced as ETH; WHYPE shares HYPE's key; the HYPE SQL arm is chain-scoped). The chain-name branch guard now coverselysiumand99901./elysiumis built/elysiumreturns 200/api/rpc?chain=elysiumanswers chain id0x1863dNEXT_PUBLIC_LAUNCH_FACTORY_ELYSIUM/NEXT_PUBLIC_LAUNCH_LOCKER_ELYSIUM(build args),LAUNCH_DEPLOY_BLOCK_ELYSIUM=3986599andELYSIUM_RPC_URL(secrets); swap in the official mark; add the site copy