OrderBook Market Maker Flow
How bettors and market makers interact to create parlays
1
Bettor submits a parlay request with their desired positions and bet amount
Bettor
OrderBook
requestBet(positions, amount)
2
First market maker provides liquidity with their odds and stake
Market Maker A
OrderBook
makeOffer(odds: -150, stake: 500 USDC)
3
Second market maker offers different odds and stake amount
Market Maker B
OrderBook
makeOffer(odds: -120, stake: 300 USDC)
4
Third market maker joins with another offer
Market Maker C
OrderBook
makeOffer(odds: -180, stake: 200 USDC)
5
Bettor reviews all available offers from market makers
OrderBook
Bettor
getOffers() → all offers
6
Bettor accepts partial amounts from multiple offers
Bettor
OrderBook
acceptOffers([0,1], [500, 200])
7
Market makers transfer potential winnings as collateral
OrderBook
Market Makers
transferFrom(MM → OrderBook, winnings)
8
Bettor's stake is transferred to the OrderBook
Market Makers
Bettor
transferFrom(Bettor → OrderBook, stake)
9
Individual ParlayMarket contracts are created for each accepted offer
OrderBook
Parlay Markets
create() → ParlayMarket contracts
Key Market Maker Actions:
- makeOffer() - Market makers provide liquidity by offering odds and stake amounts
- cancelOffer() - Can cancel their offer before it's accepted
- Multiple MMs compete - Different market makers can offer different odds for the same request
- Partial fills - Bettor can accept partial amounts from multiple offers
- Time limits - Offers can have expiry times (validUntil parameter)
- Collateral required - Market maker must transfer potential winnings upfront
Example Scenario:
- Bettor wants to bet 1000 USDC on a 3-leg parlay
- MM-A offers 500 USDC at -150 odds (66.7% implied prob)
- MM-B offers 300 USDC at -120 odds (54.5% implied prob)
- MM-C offers 200 USDC at -180 odds (64.3% implied prob)
- Bettor accepts MM-A (500) and MM-C (200) = 700 USDC total
- Two separate ParlayMarket contracts created, each with bettor as the user