Reference
Supported venues
Live
| Venue | Executor kind | Discovery | Notes |
|---|---|---|---|
| Uniswap V3 and forks | KIND_V3 | Configured + auto-discovered factories | Any fee tier, including the 2% (20000) tier some Elysium forks add. Exact tick-crossing estimates |
| Uniswap V2 and forks | KIND_V2 | Configured + auto-discovered factories | Fee read from the pair bytecode (25 or 30 bps) |
| Uniswap v4 | KIND_V4 | Configured PoolManagers | Pools with hooks included (tested through a hook). Native HYPE pools mapped onto a WHYPE in the graph and unwrapped/wrapped around the hop |
| WHYPE ↔ WHYPE | KIND_REWRAP | Allow-list | 1:1, connects pools that use different WHYPE contracts |
| Launchpad bonding curve (testnet "Ramses curve") | Launchpad router (not the Executor) | Configured in the network file | Pre-graduation tokens block contract-to-contract transfers, so they can't go through the Executor. /quote compares the curve with the aggregator and keeps the better one (venue: "launchpad") |
Testnet numbers at the time of writing: ~2,260 V3, ~1,450 V2 and ~770 v4 pools indexed.
Ready for Elysium mainnet day one
Built for the venues announced for launch (see venue research). Supported in the Executor, the indexer (auto-discovered like V2/V3) and the router; tested on forks of Base (Aerodrome, Slipstream) and Arbitrum (Algebra via Camelot):
| Venue | Type | Executor | Indexer |
|---|---|---|---|
| Aero (Aerodrome/Velodrome v2) and Nest classic, Ramses legacy | Solidly: volatile x·y=k and stable x³y+xy³ | KIND_SOLIDLY (4): output from pool.getAmountOut | PoolCreated(…, bool stable, pool, …) / PairCreated(…, bool stable, pair, …) |
| Aero Slipstream | Concentrated liquidity keyed by tick spacing | KIND_V3 (same swap ABI and callback) | PoolCreated(…, int24 tickSpacing, pool); fee from pool.fee() |
| Nest CL | Algebra Integral, dynamic fee plugin | KIND_V3 + algebraSwapCallback | Pool(token0, token1, pool); state from globalState() |
None are deployed on Elysium yet (mainnet scan at block ~1.086M). Their factories are picked up automatically once they emit pool-creation events, or can be pinned in the network file (solidlyFactories, slipstreamFactories, algebraFactories).
Elysium mainnet launchpads (no adapter needed)
The big mainnet launchpads don't use a bonding curve: each token launches straight into a Uniswap v4 pool holding the supply as one-sided liquidity, behind the launchpad's hook (taxes, dynamic fees, anti-snipe). They are ordinary v4 pools for the router, discovered through their PoolManagers.
| Launchpad | PoolManager | Hook | Pool key | Fork-tested |
|---|---|---|---|---|
| Kleos (v4 generation) | 0xb308B5df…2490 | 0x0c835e6A…E0Cc (per-token buy/sell tax) | native HYPE / token, fee 0, tick spacing 200 | ✅ buy + sell, quote exact |
| Kleos (v5 generations) | 0xb308… and 0xE2e105d3…23F1 | per generation | same shape | — |
| Kleos (v3 generation) | V3 factory 0x809ff799…efaF1, own WHYPE 0x0269031a…9EEF | — | fee 1% | (V3 path) |
| ElysPump | 0x5fb015a4…9600 | 0xe11CaFA5…20Cc (= launcher; keyOf(token)) | native HYPE / token, fee 0, tick spacing 200 | ✅ buy + sell, quote exact |
| Ascend | 0xE2e105d3…23F1 | 0xe0dEF422…a8eC (= launchpad) | token / ERC20 WHYPE, dynamic fee, tick spacing 200 | ✅ buy + sell, quote exact |
| Montra | 0xE2e105d3…23F1 | 0x6b1216a4…f8ec | native HYPE / token, dynamic fee | — |
Pools sitting at the edge. A launch pool holds the token's supply as one-sided liquidity, and the price starts exactly at the edge of that range: in-range liquidity is 0, although the first buy trades immediately. The indexer reads the liquidity across the nearest range boundary (and in which direction it trades); such pools count as live, are estimated from that liquidity, valued for TVL on their one-sided supply, and priced from the buy side while nothing can be sold into them. Found in the mainnet rehearsal: without it these tokens had no route.
contracts/test/Launchpads.mainnet.fork.t.sol (runs with ELYSIUM_MAINNET_RPC_URL) swaps 0.05 HYPE in and back out through each hook: the Executor's quote matches the executed amount both ways and the Executor ends empty. The off-chain estimator doesn't model hook taxes, so it can over-rank these pools; the exact on-chain quote corrects the final choice. During a token's launch window, its hook can enforce max-wallet and anti-snipe limits; the simulation catches a swap that would hit them.
Not supported (yet)
| Venue type | Why not | What it would take |
|---|---|---|
| Other launchpad curves (e.g. one that blocks contract transfers before graduation) | Each has its own contract | One adapter per launchpad, like launchpad.ts |
| DLMM / bin-based AMMs (ZKBLAST) | Different math and swap interface | A new hop kind and estimator |
| kHYPE staking | No minting contract on Elysium; kHYPE is bridged | Once kHYPE pools exist they are routed automatically |
| RFQ / market makers | No RFQ source on Elysium | — |
Adding a venue
| Venue is… | Work needed |
|---|---|
| A new Uniswap V2/V3 fork | None. Auto-discovered from its events. Add the factory to the network file to pin it |
| A new v4 PoolManager | Add it to v4.managers in the network file |
| Something else | Executor hop kind (swap + callback + quote), indexer discovery and state, estimator, gas entry, tests |