What you actually mint
You pass one collateral amount. The market maker pulls it, splits a complete set, keeps a slice of each answer as inventory, and mints ERC-20 pool shares to you. Those shares are a claim on the whole inventory — not an NFT and not a perpetual. In code, first liquidity ismarket.seed. Later liquidity is market.addLiquidity. Both call addFunding.
Invalid is part of the complete set and sits in the market maker. It is not tradable and always prices at 0.
On a skewed pool, later liquidity binds on the heaviest reserve. Lighter answers send leftover tokens back to you.
What you earn
Cost on add is
max(amountsAdded) (addedFunds). Indexer remove proceeds are the named basket at 1e18 prices, or 0/1 if resolved. Send-back tokens are a share position, not this LP lot.
Risks
Trading stops when the market resolves — otherwise LPs get arbitraged
After payouts are set, every named share is worth exactly1 or 0 collateral. If swaps kept running:
- Winner still priced below 1 — buy it from the market maker, redeem at 1.
- Loser still priced above 0 — sell worthless shares into the market maker, take collateral out.
buy / sell therefore revert Resolved once Conditional Tokens has a payout denominator. Fee income from traders stops with them.
Fee income for the protocol only exists between the first deposit and resolve. A market that resolves quickly can pay almost no volume relative to the inventory you posted — but leaving the market maker open would be worse: the inventory itself would be picked off.
Inventory while the market is open
Across-answer liquidity is how you market-make the whole question without picking Yes or No. It is not delta-neutral. As implied probability moves, you hold more of the answer traders are selling. You are the other side of every trade.Even join vs live odds
LateraddLiquidity joins current reserve proportions. It does not re-apply your original opening mix.
Idle Invalid
The complete-set mint always prints Invalid. It never trades. Unwinding a full set later means you need the named answers back (fromremoveFunding, from trading, or from leftover send-backs).
Operational
Approvals, factory version, and market-maker clone all have to match. Tiny deposits revert (mintAmount == 0 or dust). Contracts, oracles, and resolution can fail.
This is not financial advice. Size only what you can lose.
How to exit
client.user(owner).lpPositions({ market })— find the pool-share lot.- Open:
market.removeFunding({ shares, owner })— basket of every slot, thenmergecomplete sets if you want collateral. - Resolved:
market.redeemLp({ shares, owner })— burn shares, redeem the basket to collateral (same redeem fee). - Send-back / leftover named tokens:
market.redeemas share positions.
redeemLp only works after resolve. While open there is no 1:1 payout on a single answer.