Earn — the LP Vault
The Levant Vault is a single ERC-4626 liquidity pool that is the counterparty to every trade on Levant. Deposit USDG and you become a liquidity provider: you receive lvUSDG shares, earn 100% of trading fees, and take the aggregate other side of every trader's profit and loss.
How the Levant Vault works
The Levant Vault is a single ERC-4626 vault denominated in USDG. You deposit USDG and receive lvUSDG shares — a proportional, transferable claim on the vault's assets. The vault is the sole counterparty to every trade on Levant: it opens the other side of each position, pays trader profits, absorbs trader losses, and collects every fee. There is no order book and no matching against other traders — as an LP you take the aggregate other side of the entire market. All trading and settlement run through the Diamond engine (0xE07098bc29Ebe50E6203606bc2eA0e1E189cb7e2), which is the only contract allowed to move the vault's assets. The vault never hands custody to the keeper.
Your position is measured in shares, not a fixed USDG balance. USDG is a 6-decimal token; lvUSDG shares are 18-decimal. The USDG value of each share floats: it rises as fees accrue and falls only if the vault has to pay net trader wins beyond its buffer. You always redeem shares for USDG at the current share price — value accrues in place, so there is no separate reward to claim or stake.
Where your yield comes from
LP returns have one direct component and one buffered component. Fees flow straight into the vault and lift the lvUSDG share price immediately — no new shares are minted, so the same shares become worth more USDG. Trader PnL is routed through a protocol first-loss buffer (described below) rather than being marked directly into the share price.
| Flow | Where it goes |
|---|---|
| Open fee — 0.08% (8 bps) of gross notional | Into the vault; raises the lvUSDG share price directly (no shares minted) |
| Close fee — 0.08% (8 bps) of adjusted size (size ± realized PnL) | Into the vault; raises the share price directly |
| Trader net losses (incl. liquidation remainders) | Fund the first-loss buffer; the share price stays flat |
| Trader net profits | Paid from the buffer first, then from LP principal; the share price falls only past the buffer |
| Funding | Redistributed from the crowded side of open interest to the underweight side; settled into realized PnL |
The first-loss buffer
Levant follows the gTrade / Avantis model: a protocol loss buffer sits between winning traders and LP principal. Trader losses are paid into the buffer, and the buffer is excluded from the vault's total assets, so those losses are never owned by — and never inflate — lvUSDG shares. When a trader wins, the payout is drawn from the buffer first; only a payout larger than the entire buffer reaches LP principal and lowers the share price. The protocol can seed the buffer at cold start so the first trader win does not touch LPs, and liquidation remainders (the collateral a liquidated trader forfeits after the 5% liquidator fee) keep topping it up over time.
share price = totalAssets / total lvUSDG supply (USDG per share)
totalAssets = vault USDG balance - lossBuffer (buffer is NOT LP-owned)
freeAssets = totalAssets - lockedAssets (instantly withdrawable)
availableLiquidity = lossBuffer + freeAssets (engine's payout ceiling)
fee in : balance +f, buffer +0 -> totalAssets up -> share price up
loss in : balance +l, buffer +l -> totalAssets flat -> share price flat
payout out : buffer -min(p, buffer); only the shortfall (p - buffer) lowers totalAssetsLocked vs. free (withdrawable) liquidity
Every Levant position caps profit at 900% of its margin, and the vault reserves exactly that maximum payout for each open position so a winning trade can always be settled. The sum of those reserves is the vault's locked assets; everything above it is free and withdrawable right now. The engine updates the locked figure as positions open and close, and the vault caps maxWithdraw / maxRedeem at the free amount, so LPs can never withdraw the liquidity backing live positions.
lockedAssets = SUM(position margin x 9) over all open positions // 900% max-profit reserve
freeAssets = totalAssets - lockedAssets // withdrawable now
maxWithdraw = min( your lvUSDG value in USDG , freeAssets )Depositing
- 1Connect your wallet on Robinhood Chain mainnet (chainId 4663) and hold some USDG. On testnet the USDG token has an open mint, so anyone can mint test funds.
- 2Open the Earn page and enter the amount of USDG to provide. There is no deposit cap.
- 3Approve the vault to spend your USDG (first deposit only), then confirm the deposit.
- 4Receive lvUSDG at the current share price. Your shares start earning fees and taking the other side of trader PnL immediately.
Withdrawing
- 1Open the Earn page and choose how much to redeem — by lvUSDG shares or by USDG value.
- 2Confirm; the vault burns your shares and returns USDG at the current share price, including everything the price has accrued or lost since you deposited.
- 3Withdrawals are instant and permissionless up to the free (unlocked) liquidity. If your request exceeds it, reduce the amount and withdraw the remainder as open positions close and reserves free up.
What the vault settles today (v1)
v1 settles realized PnL only — the amounts the engine pushes to the vault when a position closes, is liquidated, or has funding applied. Unrealized (mark-to-market) PnL on still-open positions is not yet written into the share price, though the reserved liquidity guarantees those positions can always be paid in full. On-chain open-PnL and epoch-based valuation are on the roadmap. The vault also uses OpenZeppelin's virtual-shares offset (10^12) to neutralize the classic ERC-4626 first-depositor inflation attack. The engine is an EIP-2535 Diamond, and upgrades are performed with diamondCut, which preserves the vault, your lvUSDG shares, and all open positions.
Contracts
| Contract | Address |
|---|---|
| Vault / lvUSDG share token (ERC-4626) | 0xC90D98cFeE95F481aDE30d95AD88f01B6C65ad5C |
| USDG collateral (MockStable, 6 decimals, open mint) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 |
| Engine (Diamond — all trading & settlement) | 0xE07098bc29Ebe50E6203606bc2eA0e1E189cb7e2 |
| Network | Robinhood Chain mainnet · chainId 4663 |
