Developing Liquidity Systems for Prediction Markets on Ethereum and L2
A 12% spread and slippage of several percent make prediction markets useless for traders. This is where UX breaks down: users are not willing to pay such a fee for uncertainty. We develop liquidity systems that make markets deep even before organic interest appears. Our approach combines Fixed Product AMM, conditional tokens, and dynamic LP incentives. As a result, even a niche market can attract volumes up to $500k without slippage. Each contract is audited for reentrancy and correct outcome distribution, ensuring LP fund safety.
How AMM Works for Prediction Markets
LMSR and Its Limitations
LMSR (Logarithmic Market Scoring Rule) is historically the first AMM for prediction markets. Outcome prices are calculated as p_i = e^(q_i/b) / sum(e^(q_j/b)), where q_i is the number of shares of outcome i, b is the liquidity parameter. Advantage: mathematically guaranteed market maker — the market is always liquid. Disadvantage: unlimited market maker losses in extreme moves.
A later CPMM (Constant Product, as in Uniswap v2) is used in Polymarket: for a binary market YES_shares * NO_shares = k. YES price = NO_shares / (YES_shares + NO_shares). Simpler implementation, bounded losses. CPMM is 3x more gas-efficient than LMSR for binary markets.
Conditional Tokens (ERC-1155)
The modern standard for prediction markets is the Gnosis Conditional Tokens Framework. Each event outcome is a separate ERC-1155 token. Collateral (e.g., USDC) is locked in the ConditionalTokens contract. When the condition is resolved (resolveCondition()), holders of winning outcome tokens can redeem collateral 1:1. This allows building composite markets: combinations of outcomes from multiple independent conditions — "AND-markets". For example, a position "ETH > $5000 AND BTC > $100k by December" is an intersection of two conditional tokens.
Architecture of Liquidity Provisioning
Automated Market Making via Fixed Product AMM
For each market, a liquidity pool is deployed based on Fixed Product AMM (FPMM). LPs deposit equal amounts of all outcomes (for binary markets — YES and NO tokens). Initial outcome price = 50/50.
The FPMMFactory contract creates an FPMM instance for each market:
function create( address conditionalTokens, address collateralToken, bytes32[] memory conditionIds, uint[] memory outcomeSlotCounts, uint fee // basis points ) external returns (address fpmm) Fee goes to liquidity providers — their incentive. But fees from prediction markets are usually low (0.1-2%), and the risk for LPs is significant: LPs hold positions in outcomes until resolution. If the market becomes highly one-sided, LPs accumulate many losing tokens that could become worthless.
Incentive Mechanics for LPs
The simplest approach is liquidity mining: additional rewards in the protocol token for LPs. But this is temporary; after mining ends, liquidity leaves.
A more sustainable approach is dynamic fee: higher fees on low-liquidity markets, lower on highly competitive ones. Implementation: fee = base_fee + liquidity_adjustment, where liquidity_adjustment is inversely proportional to pool depth. For example, a pool with $2M TVL generates $5000 in daily fees at 0.5% turnover.
Another pattern is a shared liquidity pool: instead of per-market pools, a single basket of liquidity is distributed across several markets. The contract automatically allocates liquidity where price impact is highest. Risk is diversified, capital efficiency is higher. LP commission savings reach 30%.
Oracle Resolution and Dispute Mechanism
The most sensitive part is resolving the outcome. Two approaches:
| Approach | Speed | Decentralization | Risk |
|---|---|---|---|
| Centralized oracle | Instant | Low | Single point of failure |
| Optimistic oracle (UMA) | 2-3 days | High | Depends on bond |
| Chainlink Any API | 1 block | Medium | API availability |
Centralized oracle. A trusted reporter address calls reportPayouts(). Fast but centralized. Acceptable for the initial phase with a multisig reporter.
Optimistic oracle (UMA-style). A proposer suggests an outcome with a bond. 48-72 hour dispute window. A disputer can challenge with a bond. If challenged, it goes to voting via UMA DVM or Kleros. The loser loses their bond. Resistant to manipulation: cost of dispute > reward from incorrect resolution.
Chainlink + Sports/Events API. For sports events, Chainlink Any API with verified sources (ESPN, official sports APIs). Declarative, automatic, no human factor. Limitation: not all events have public APIs.
Why Gas Is a Bottleneck for Prediction Markets
Prediction markets with many outcomes (>2) create gas issues. For an event with 10 outcomes (e.g., World Cup, 32 teams), an FPMM swap requires updating balances of all 32 tokens in one transaction. This is O(n) SLOAD/SSTORE operations per trade.
Optimization: lazy evaluation — store only delta changes, recompute full state only when necessary (e.g., on redeem). But this complicates logic and requires thorough invariant testing.
For markets with >5 outcomes on Ethereum mainnet, it is economically more sensible to deploy on Polygon or Base. L2 gas allows working with 20-30 outcome markets without issues. Gas cost comparison:
| Chain | Gas per swap (2 outcomes) | Gas per swap (10 outcomes) |
|---|---|---|
| Ethereum | ~180k | ~1.2M |
| Polygon | ~90k | ~600k |
| Base | ~70k | ~500k |
Development Process
- Analytics (3-5 days). Choose AMM mechanics (FPMM vs LMSR vs custom), oracle strategy, LP incentive model, target chain.
- Contracts (2-3 weeks). Conditional tokens setup + FPMM factory + LP incentives + oracle adapters. Foundry with property-based tests: "sum of probabilities always = 1", "redeem never exceeds collateral".
- Oracle integration (1 week). Chainlink API or UMA optimistic oracle setup, dispute mechanism.
- Frontend (1-2 weeks). wagmi/viem integration, trading interface, probability display, LP dashboard.
What's Included in Our Work:
- Smart contracts in Solidity (Foundry, tests, audit)
- Integration with conditional tokens and FPMM
- Oracle setup (Chainlink/UMA/custom)
- Frontend development for trading interface and LP dashboard
- Deployment on L2 (Polygon, Arbitrum) for gas savings
- Documentation and team training
- Technical support after launch
Timeline Estimates
A basic protocol for binary markets with a centralized oracle — 1-2 weeks. A full system with an optimistic oracle, LP incentives, and multi-outcome support — from 4-6 weeks.
Cost is determined after discussing market types and resolution mechanics. We are a team with years of experience in smart contracts, having delivered over 20 DeFi projects. Get a consultation: we will assess your project and propose a liquidity system architecture. Contact us to discuss.







