Docs / Integrate
Integrate Orpheus
For trading bots, aggregators, wallets and indexers.
Download the full guide (.md)Network
Elysium Testnet, chain ID 99801, gas in HYPE. RPC https://testnet-rpc.elysium.kinetiq.xyz. Explorer explorer-elysium-testnet.t.conduit.xyz.
Contracts
BondingCurve
0xa76d5C7B5A8B267a3BDCdb9579DE8d473Aa7aaB3
Buy and sell every Orpheus token, before and after it Rises
OrpheusFactory
0x8A43708A4CcF846E0805dFE1cd52534d49bd5a72
Creates tokens, emits TokenCreated
RisenPools
0xB0be85E0054148562FF4c64aF13B58B6106B60cC
Uniswap v4 hook and locked liquidity for Risen tokens
Deployed at block 17332980. Check a token is genuine with OrpheusFactory.creatorOf(token) != 0.
Trade through the BondingCurve
One entry point for every token. While a token is on its curve it trades there; after it Rises the same calls route through its locked Uniswap v4 pool.
buy(address token, uint256 minTokensOut) payable returns (uint256 tokensOut)
sell(address token, uint256 tokensIn, uint256 minHypeOut) returns (uint256 hypeOut) // no approve needed
quoteBuy(address token, uint256 hypeIn) view returns (uint256 tokensOut, uint256 feeHype)
quoteSell(address token, uint256 tokensIn) view returns (uint256 hypeOut, uint256 feeHype)
curveState(address token) view returns (hypeRaised, tokensSold, spotPrice, graduated, launchedAt)
currentFeeBps(address token) view returns (uint16)Always pass a real minimum out (quote × (1 − slippage)). Selling needs no approval: the curve only pulls tokens from the seller who calls it.
Fees
- First 3 seconds after launch: anti-snipe tax, 99% at launch falling each second to the normal fee. Read
currentFeeBps(token)before trading a new token. - On the curve: the token's creator fee (0–8%, fixed at launch) + 2% platform.
- After Rising: 3% of the HYPE side, taken by the pool hook (1% creator, 1% stakers, 1% treasury).
Events
// OrpheusFactory
event TokenCreated(address indexed token, address indexed creator, string name, string symbol, string metadataURI)
// BondingCurve
event Trade(address indexed token, address indexed trader, bool isBuy, uint256 hypeAmount,
uint256 tokenAmount, uint256 feeHype, uint256 hypeRaised)
event Graduated(address indexed token, bytes32 pool, uint256 hypeLiquidity)Good to know
- A buy that fills the curve only takes what's needed and refunds the rest; the token Rises in that transaction.
- After Rising there's a price floor at the launch value: a sell that would cross it stops there and returns the unsold tokens.
- Elysium's base fee moves between blocks; set maxFeePerGas to about 2× the current base fee.
- Trading a Risen token directly on Uniswap v4 works too:
RisenPools.poolKey(token)gives the pool key (native HYPE / token, fee 0, tick spacing 1, hook = RisenPools). Your router must support hooks that return deltas.