Documentation

Getting Started

This guide takes you from an empty wallet to your first filled position on Levant, an oracle-priced, vault-backed perpetual-futures DEX for crypto. You will connect a wallet to Robinhood Chain mainnet, claim gas, mint test USDG, approve it, place a trade with a slippage tolerance, and watch an off-chain keeper fill it against the shared Levant Vault.

Before you start

Two things get you trading: a wallet connected to Robinhood Chain mainnet, and some USDG to post as collateral. USDG is the 6-decimal, USD-denominated stablecoin behind every position, fee, and payout on Levant. There is no order book and no sign-up — you trade directly from your wallet against the shared Levant Vault, which is the counterparty to every trade.

  • An EVM browser wallet (MetaMask or any injected wallet) pointed at Robinhood Chain mainnet — chain ID 4663.
  • A little ETH for gas. On this testnet the gas token is Sepolia ETH, claimed free from the chain faucet; nobody can mint it.
  • USDG collateral — minimum 10 USDG per position, maximum 500,000 USDG. On testnet the mint is open, so you can claim it in-app.
  • That's it. Every user action goes to a single contract, the Levant Diamond at 0xE07098bc29Ebe50E6203606bc2eA0e1E189cb7e2.
Warning
Levant is live on Robinhood Chain testnet only. It is unaudited, the tokens have no monetary value, the USDG mint is open purely so anyone can try it, the price oracle is 1-of-1 today, and ownership is still on the deployer key. Nothing here is investment advice, and access to leveraged derivatives is restricted in some jurisdictions.

1 · Connect a wallet

Click Connect Wallet and approve the connection. Make sure your wallet's active network is Robinhood Chain mainnet (chain ID 4663); if it isn't listed, add it and switch. You can inspect any transaction, address, or block on the explorer at https://robinhoodchain.blockscout.com. Nothing is stored server-side — the app reads state straight from the chain using your connected address.

2 · Get testnet ETH for gas

Every on-chain action — minting, approving, submitting a trade — costs gas, and nobody can mint ETH. Open the Faucet menu in the header: step 1 · Gas shows your current status as ok or none. If it reads none, follow the Claim testnet ETH link, which sends you to the chain's own faucet at https://faucet.testnet.chain.robinhood.com. Claim there, then return to Levant.

Note
This is the single most common first-time failure: without ETH you cannot even sign the USDG mint. Claim gas first, confirm the Faucet shows ok, and only then mint. If a mint fails with an insufficient-funds error, that's the cause.

3 · Mint test USDG

In the same Faucet panel, step 2 · Collateral shows your USDG balance and a Mint 10,000 USDG button. USDG is a mock stablecoin with an open mint on this testnet, so the app hands it straight to your wallet — one click, one signature, and 10,000 USDG lands in your balance. The button is disabled until you have gas (it needs a signature). Claim again anytime you want more.

Note
Test USDG has no value and no redemption. The open mint exists only so people can try Levant end to end.

4 · Approve USDG

Before your first trade, the Diamond needs an ERC-20 allowance to pull your collateral. Whenever your allowance is below the collateral amount you entered, the panel's action button reads Approve USDG — click it once and confirm the transaction. The approval is set to the maximum amount, so this is a one-time step: once it confirms, the button switches to the trade action (Open Long / Open Short, or Limit / Stop) and you should not need to approve again.

5 · Place your first trade

Open the Trade page and pick one of the 20 markets — BTC, ETH, SOL, BNB, XRP, DOGE, ADA, TRX, AVAX, LINK, DOT, SUI, LTC, BCH, NEAR, APT, UNI, ATOM, ARB, OP — each priced against USD. Then build the order in the panel on the right:

  1. 1Choose Long (profit when price rises) or Short (profit when it falls).
  2. 2Pick an order type: Market, Limit, or Stop (see the table below).
  3. 3Enter Collateral in USDG — type it, use the 25/50/75/100% chips, or MAX. Minimum 10, maximum 500,000.
  4. 4Set Leverage with the slider or a preset (2×, 5×, 10×, 25×, 50×, or 100×). Leverage is a whole number, up to 100×.
  5. 5For Limit or Stop, set a Trigger Price; a Market order uses the live oracle price shown in the panel.
  6. 6Set your Max slippage (0.10% / 0.30% / 0.50% / 1.00%); the panel starts at 0.30%.
  7. 7Read the summary — Entry (est.), Spread, Position Size, Est. Liq. Price, and Open Fee — then click the action button.
  8. 8On submit, your collateral is escrowed on-chain by the Diamond and you'll see the toast "confirmed — keeper is executing".

How your size and cost are computed

The 0.08% (8 bps) open fee is charged on the gross notional (deposit × leverage) and deducted from your collateral; the position then opens on what remains, so your position is slightly smaller than deposit × leverage. A worked example at 10×:

Deposit       = 1,000 USDG
Leverage      = 10×
Open fee      = 1,000 × 10 × 0.08%  = 8 USDG      (8 bps of gross notional)
Margin        = 1,000 − 8           = 992 USDG
Position size = 992 × 10            = 9,920 USDG notional

Long liq.     ≈ entry × (1 − 0.9 / 10) = entry × 0.91   (10% maintenance margin)

Margin is isolated per position — the most you can lose is that margin. When a position opens, the vault locks reserved = margin × 9, which funds the capped payout: profit is limited to 900% of margin. A long's PnL is notional × (exit − entry) / entry; a short is the mirror image.

Order types

TypeFills whenUse it to
MarketAt the next verified oracle priceEnter or exit right now
LimitThe mark crosses your trigger in your favorBuy lower / sell higher — never worse than the trigger
StopThe mark crosses your triggerEnter on a breakout or arm a protective exit

Setting a max-slippage tolerance

Every market and limit intent carries a mandatory max-slippage, in the range 1 to 500 bps (0.01%–5%). There is no implicit default — the panel simply starts at 0.30%. Your tolerance caps how far the spread may push your fill from the oracle mid. At fill time, if the spread would move your entry past that tolerance, the keeper's executeOpen reverts with SlippageExceeded: your intent stays pending (not consumed) and the full escrow is reclaimable with Cancel. Before you even submit a market order, the panel greys the button ("Spread exceeds slippage") if the current spread already exceeds your tolerance.

PresetIn bpsBehaviour
0.10%10 bpsTightest — the fill is rejected on almost any price impact
0.30%30 bpsDefault — comfortable for ordinary size
0.50%50 bpsLooser — for larger orders or a one-sided book
1.00%100 bpsWidest preset — high tolerance for size or volatility

Your entry is the oracle mid moved worse-for-you by a fully deterministic spread — buys fill above mid, sells below. The spread has three parts: a constant base, a price-impact term that grows with size, and a skew term that grows when you push the crowded side of the book:

spread(bps) = 2 (base) + priceImpact + skew

priceImpact = notional × 100 / depth1pct      ; depth1pct = 10,000,000 USDG
skew        = 100 × signedImbalance / oiCap    ; oiCap     =  2,000,000 USDG

• floored at 0  → a fill is never better than mid
• capped at 500 bps (5%)
• applied worse-for-trade: buys fill ABOVE mid, sells BELOW mid
Warning
Leverage can lose your entire margin. A ~90% adverse move against your margin hits the 10% maintenance margin and liquidates the position — you forfeit the rest. At very high leverage the entry spread alone can already put a position under maintenance margin; the engine refuses it (the button reads Liquidatable at open) and takes no fee. Start with small size and modest leverage, and arm a stop-loss.

6 · Watch the keeper fill

Submitting does not fill instantly — Levant is two-step and keeper-driven. Step 1: you submit an intent (submitOpenIntent for a market order, submitLimitIntent for limit/stop) and the Diamond escrows your collateral; the keeper never holds your funds. Step 2: an off-chain keeper fills it with executeOpen at the next verified price, carrying an EIP-712 signed price report. A market order fills at that next price; a limit or stop waits until the mark actually crosses your trigger, enforced on-chain so it can never fill worse than the trigger. Your order flips from pending to filled in seconds. The keeper is non-custodial and bounded by the on-chain guards — it can only ever fill at a verified price within your slippage and the liquidatable-at-open check.

Note
Prices come from a self-hosted signed-price oracle that sources Gate.io first, then KuCoin, then CoinGecko. Each report binds the market, price, and timestamp; anything older than 60 seconds, or dated in the future, is rejected. The oracle is 1-of-1 today — the keeper is the sole signer — with m-of-n signing on independent machines on the roadmap.

7 · Find your position

Once you're filled, everything lives in the tabs beneath the chart:

  • Positions — open trades with live PnL, entry price, leverage, and liquidation price. From here you can add margin (pushes the liquidation price further away), remove margin, partial-close (25/50/75%), or set a take-profit and stop-loss that a keeper settles automatically.
  • Orders — your unfilled limit and stop intents. Cancel any of them to reclaim the full escrowed collateral.
  • History — closed positions and past fills, including realized PnL and fees.

Closing is symmetric to opening: closePosition / closePartial escrows the request, then the keeper runs executeClose. The 0.08% (8 bps) close fee is charged on the adjusted size (size ± realized PnL). Liquidation is permissionless — if a position falls to its 10% maintenance margin, anyone can close it with a signed price report and is paid 5% of its collateral; no adverse spread is applied on the liquidation mark, and only that isolated position is affected.

Key numbers at a glance

ParameterValue
Min / max collateral10 / 500,000 USDG per position
Max leverage100×
Open fee0.08% (8 bps) of gross notional
Close fee0.08% (8 bps) of adjusted size
Base spread0.02% (2 bps), total spread capped at 5%
Max slippagemandatory, 0.01%–5% (1–500 bps)
Maintenance margin10% (liquidated at ~90% loss)
Liquidation fee5% of collateral, to the liquidator
Max profit900% of margin (reserved = margin × 9)
Funding rate~0.01%/hr base, capped ~0.1%/hr
Faucet mint10,000 USDG per claim (testnet)
Tip
New to this? Mint once, open a tiny position — say 20 USDG at 2–5× on a liquid market like BTC or ETH — and watch it fill. Then practice adding margin, setting a stop-loss, and closing before you size up.