Perps that can't go insolvent.
FluxDEX is a perpetual futures exchange for BTC, ETH, SOL, HYPE, ZEC, NEAR, JUP and PUMP, with up to 50x leverage, running on a port of percolator, the open-source risk engine from toly's GitHub.
Most perp venues stay solvent by promise: an insurance fund, then auto-deleveraging when that runs out. Percolator makes solvency structural. Capital is senior, profit is junior, and nobody can withdraw more value than the vault holds.
Quickstart
- Connect Phantom (or any Solana wallet) and sign the free session message. It moves no funds.
- Pick a market on the left of the trade screen.
- Choose Long or Short, a size in USD and your leverage. The ticket shows entry, margin required, estimated liquidation and fee before you confirm.
- Close any time from Your positions. Profit is paid at the current haircut H.
Markets
| Market | Max leverage | Price source |
|---|---|---|
| BTC-PERP | 50x | CoinGecko · Jupiter fallback |
| ETH-PERP | 50x | CoinGecko · Jupiter fallback |
| SOL-PERP | 50x | CoinGecko · Jupiter fallback |
| HYPE-PERP | 25x | CoinGecko |
| ZEC-PERP | 20x | CoinGecko |
| NEAR-PERP | 20x | CoinGecko |
| JUP-PERP | 20x | CoinGecko · Jupiter fallback |
| PUMP-PERP | 15x | CoinGecko · Jupiter fallback |
Markets listed by users (see Listing) are priced by Jupiter, with leverage capped by pool depth.
Pricing
Marks refresh every 10 seconds. Majors are priced from CoinGecko's aggregated spot price. If a Solana major hasn't updated for 30 seconds, FluxDEX falls back to Jupiter's on-chain price for its mint. Every update passes through the bounded crank below before it can move a mark.
The percolator engine
Three invariants, applied every slot:
1 · Haircut H: capital is senior
The vault V holds every trader's capital C_tot plus the insurance fund I. Whatever is left is the residual, and only the residual can pay profit:
Residual = V − (C_tot + I) H = min(Residual, ΣPnL⁺) / ΣPnL⁺
When the residual covers all open profit, H = 100% and every exit is paid in full. If it ever didn't, every winner would be paid the same fraction H, and your collateral would still come back first. The live H is on the landing page and in the app.
2 · A/K/F indices: no queues, no ADL lottery
Each side of each market keeps three lazy indices. Marks and funding update the side once, and every account reads its share in O(1):
K_side += A_side · ΔP (mark-to-market) F_side ±= A_side · funding (funding) liquidation shrinks A_side; any deficit shifts K for the whole side
Losses are shared pro-rata across a side instead of picking unlucky counterparties.
3 · Bounded cranks
A single update can only move a mark by a bounded amount per slot:
|ΔP| · 1e4 ≤ max_move_bps (800) · Δt · P_last
A bad tick or a spiking oracle can't liquidate the book in one step.
Side recovery
If a side's A drops below 0.25 it enters DrainOnly (positions can close, none can open). When its open interest reaches zero it moves to ResetPending, increments its epoch and returns to Normal.
Margin & liquidation
| Parameter | Value |
|---|---|
| Maintenance margin | 0.5% of notional (min $1) |
| Liquidation fee | 0.5% |
| Profit warm-up | 25 slots before fresh profit counts as withdrawable |
A position is liquidated when collateral plus PnL falls below maintenance. The estimated liquidation price is shown on the ticket and in Your positions.
Fees & funding
Taker fee: 0.06% of notional on open and close. Funding is shown per market, applied through the F index each slot, and bounded to ±0.08% per hour.
Listing a market
Paste any Solana token mint on the landing page. FluxDEX finds its deepest pool on DexScreener and lists it if liquidity is at least $50,000. Leverage is capped by depth:
| Pool liquidity | Max leverage |
|---|---|
| ≥ $5M | 20x |
| ≥ $1M | 15x |
| ≥ $500K | 10x |
| ≥ $150K | 5x |
| below | 3x |
Wallet & sessions
FluxDEX uses Solana wallets. On connect you sign one session message (free, no transaction). Every open and close carries that signature, which the server verifies (ed25519) against your address, so nobody else can trade your account.
API
| Endpoint | Returns |
|---|---|
GET /api/markets | every market: price, 24h change, funding, max leverage, side modes |
GET /api/market/<SYM> | one market with recent price history and side indices |
GET /api/metrics | open interest, vault, insurance, residual, haircut H, leaderboard |
POST /api/list | list a Solana mint as a market |