Fees
Three fees, all small, all on-chain. They're set by the protocol's superadmin role and capped at 50%.
The fee table
| Fee | Default | Charged on |
|---|---|---|
| Creation fee | 0.5% (50 bps) | Initial liquidity at market creation |
| Trade fee | 0.3% (30 bps) | Every buy or sell |
| Redemption fee | 0.5% (50 bps) | Claiming a winning position |
| LP fee share | 50% (5000 bps) | Portion of trade fees routed to liquidity providers |
All fees are configurable by the superadmin and capped at MAX_FEE_BPS = 5000 (50%). In practice they sit at the defaults above.
How the trade fee splits
Every trade pays 30 bps. Half of that goes to the liquidity providers in the market (rewarding them for warehousing risk); the other half goes to the protocol treasury.
If you buy $100 of a position:
- $0.30 in trade fees
- $0.15 to LPs
- $0.15 to the protocol
When you sell, the same split applies on whatever you're selling.
When the redemption fee hits
When you call claim_payout on a winning position, the protocol takes 50 bps off the gross redemption. So a position worth $100 at resolution returns $99.50 to your wallet.
This fee exists so the protocol earns from successful predictions, not just from churn.
Creation fee details
When you create a market and seed it with initial liquidity, 50 bps of that liquidity gets siphoned into the protocol treasury. So if you seed with $1,000, the market starts with $995 of working liquidity.
Most users never create markets directly; this only matters if you're a market designer or running a market for a community.
Rounding and minimums
A few constants worth knowing:
| Constant | Value | What it means |
|---|---|---|
MIN_LIQUIDITY | 1 USDC | Minimum initial liquidity at market creation |
MIN_TRADE_AMOUNT | 0.001 USDC | Minimum size for any single trade |
SCALE | 10⁹ | Fixed-point precision (no floats anywhere) |
These guard against dust positions that would otherwise round to zero.