Prediction markets
How a pot market works
Two pots, one question about a launch on this chain, and a payout that is each winner's share of the whole pot.
Status#
Two pots, no price#
A market is one yes-or-no question and two pots, YES and NO. Nothing is priced: there is no order book and no AMM. Each market is an EIP-1167 clone of one fixed ParimutuelMarket implementation, so no key can change a live market’s logic.
| Step | Call | Who |
|---|---|---|
| Create | PredictionMarketFactory.createMarket — opens with an equal opening stake on both sides | Anyone, paying the creation fee |
| Stake | stake(side, amount) — no unstake | Anyone |
| Settle | LaunchOutcomeOracle.settle(marketId) | Anyone |
| Claim | claim() — a payout or a refund | Each staker; no expiry |
See Creating a market and Settlement and refunds.
The payout#
| Quantity | Formula |
|---|---|
| Pot | totalYes + totalNo |
| Protocol fee | pot × feeBps / 10,000 |
| Featured-placement fee | pot × marketingBps / 10,000 — zero unless the market was featured |
| Payout pool | pot − protocol fee − featured fee |
| A winner’s payout | stake on the winning side × payout pool / winning pot, rounded down |
pot = 10 ETH (YES 4, NO 6) feeBps = 200 outcome = YES
payout pool = 10 − 0.2 = 9.8 ETH
a 1 ETH YES stake receives 1 × 9.8 / 4 = 2.45 ETH| Case | Every staker gets |
|---|---|
| Voided | Their stake back at par; both fees zero |
| Settled with one side empty | Their stake back at par; both fees zero |
Division truncates, so payouts never exceed the payout pool; the remainder of under one base unit per claimant stays in the market and is never swept.
What a market is about#
Every question is about The Hood’s own launchpad on the same chain: LaunchOutcomeOracle answers it by reading the launchpad’s contracts directly. No signer, no bond, no challenge window, no off-chain data.
question = (family, metric, subject, comparator, threshold, deadline)
outcome = compare(observedValue, comparator, threshold) // YES when trueWhich metrics may be asked: Creating a market. The ids and reads: Prediction markets metrics.
Currencies and limits#
A market is denominated in one currency for its whole life, chosen at creation from SettlementRegistry. Stakes, fees and payouts are all in that currency, and figures are never summed across currencies.
| Currency | How it is listed | Default protocol fee |
|---|---|---|
| Native ETH | Always listed; cannot be delisted or denied | 200 bps (2%) on production |
| Core stablecoin | Owner, via addCoreCurrency | Set at listing |
| Project token | A graduated Hood launch token that meets the listing bars, after a 7-day notice | 0 bps unless the owner sets one |
| Limit | Value | Refusal |
|---|---|---|
| Minimum stake | 0.001 ETH | StakeBelowMinimum |
| Per market | 100 ETH | StakeExceedsMarketCap |
| Per address, per market | 10 ETH | StakeExceedsPerAddressCap |
| Protocol fee ceiling | 500 bps — MAX_FEE_BPS | FeeAboveHardCap |
A market copies its currency’s fee and limits at creation; a later change to the registry affects new markets only. ERC-20 stakes credit the measured amount received, so a fee-on-transfer token credits what actually arrived.
Staking window#
| Condition | Refusal |
|---|---|
| The deadline has passed | StakingClosed |
| The market settled or voided before its deadline | StakingClosedMarketResolved |
| The market or the factory is paused | StakingPaused |