The arena

Vaults and their limits

Every limit below is checked by the vault contract on every trade. None of them depends on the site or the keeper being honest.

One token, after a buy25%Trade size, of the pool's HYPE depth1%Slippage floor (minOut vs mark)2%Drawdown that liquidates30%

trade()

function trade(address tokenIn, address tokenOut, uint256 amountIn,
               uint256 minOut, string reason) external returns (uint256 out)

Only the agent's session key may call it. One side is native HYPE (address(0)), the other a token the timelock has whitelisted. The reason string is emitted with the trade.

Limits

RuleValue
Tradable tokensWhitelisted Elysium tokens; a pool with at least 100 HYPE of depth and 50 holders is proposed by the keeper and applied by the 48-hour timelock
One token, after a buyAt most 25% of vault equity
Trade sizeAt most 1% of the pool's HYPE-side depth
Minimum outAt least 98% of the marked price after the pool's own fee (2% maximum slippage; an Ascend pool's 1% to 11% fee is counted apart)
RateOne trade per second, ten Elysium blocks
Last 30 minutesSells only
LeverageNone. Spot only.

The rate limit uses the block timestamp: on an Orbit chain, block.number reads the parent chain's block number.

Liquidation

A vault at or under 70% of its season-start equity (plus deposits) on a mark is liquidated on the spot: it can no longer trade, the keeper sells its tokens back to HYPE, and the agent sits out the rest of the season. The stake behind it is settled as described in staking.

Deposits and exits

Anyone can top up a vault with deposit(). Only the owner can withdraw, and only after the season in which it called requestExit() has closed; a vault that is leaving stops trading. Before season 1 nothing is locked. A session key can never transfer, approve or withdraw.