How Polymarket Resolution Works
- A market is initialized on-chain (QuestionInitialized on the UMA adapter)
- A proposer submits an answer (YES or NO) via ProposePrice on UMA’s Optimistic Oracle V2 and posts a USDC bond
- A 2-hour liveness window opens where anyone can dispute
- If no dispute, the oracle settles (Settle event on OO V2) and the market resolves (QuestionResolved on the adapter)
- If disputed, the question resets and goes to UMA’s DVM for a token-holder vote
- Admins can flag, pause, or manually resolve markets in edge cases
Subscribe
Oracle Event Types
Every oracle event has anoracle_type field indicating what happened:
Market initialized on-chain. The UMA adapter has registered a new question. This is the first on-chain event in a market’s lifecycle.
Resolution proposed on UMA Optimistic Oracle V2 (ProposePrice). A proposer has submitted an answer and posted a bond. The 2-hour liveness countdown begins. Includes
proposer address, proposed_price (1.0 = YES, 0.0 = NO), and expiration_timestamp.Resolution disputed on UMA Optimistic Oracle V2 (DisputePrice). Someone challenged the proposed outcome. The market re-enters the proposal phase or escalates to UMA’s DVM for a token-holder vote. High signal, rare event. Price swings are likely. Includes
proposer, disputer, and proposed_price.Settled on UMA Optimistic Oracle V2 after the liveness period expires. The oracle has accepted the proposed answer. Includes
resolved_price and proposer.Market officially resolved via UMA oracle (QuestionResolved on the adapter). The most common event type (~200+ per hour during active sports periods). Includes the final
resolved_price, payouts array, and resolved_outcome.Question reset after a dispute. The market goes back to the proposal phase.
Market flagged by admin. Something may be wrong with the resolution.
Market manually resolved by admin, bypassing the normal oracle flow. Includes
payouts array.Resolution Event (real payload)
A tennis market resolved — Baena won the first set:Proposal Event (ProposePrice from OO V2)
A proposer submits YES for an XRP price market, with a 2-hour liveness window. Proposals include full market metadata:Field Reference
Core Fields (all oracle events)
Type of oracle event:
initialization, proposal, dispute, settled, resolution, reset, flag, unflag, pause, unpause, manual_resolution.UMA’s unique identifier for this market question.
Which UMA adapter contract this event relates to.
Polygon block number where the event was emitted.
Position of this event within the block’s logs.
Block timestamp in milliseconds.
Proposal Fields (proposal only)
Address of the account that proposed the resolution.
The proposed answer.
1.0 = YES (first outcome), 0.0 = NO (second outcome).When the 2-hour liveness window expires (unix milliseconds). After this time, the proposal can be settled if not disputed.
Dispute Fields (dispute only)
Address of the account that disputed the proposal.
Address of the original proposer whose answer is being challenged.
The proposed answer that was disputed.
Resolution Fields (resolution, settled, and manual_resolution)
The settled price from UMA.
1.0 = first outcome wins (usually YES), 0.0 = second outcome wins (usually NO), 0.5 = split/tie.Human-readable winning outcome (e.g. “Yes”, “No”, “L1ga Team”). Derived from
resolved_price + market metadata. Returns "Split" for voided markets where payouts are [1, 1].Payout array from UMA.
[1, 0] means the first outcome wins. [0, 1] means the second outcome wins. [1, 1] means a split (both outcomes pay out). Only present on resolution and manual_resolution.Enrichment Fields (from Polymarket metadata)
These fields are populated automatically when the market’s metadata is available.Polymarket’s condition identifier for this market.
Human-readable market question (e.g. “Will Bitcoin reach $100K?”).
URL slug for the market on polymarket.com.
Parent event name if this market is part of a group (e.g. “Dota 2: Pipsqueak+4 vs L1ga Team (BO3)”).
Market image URL from Polymarket.
All outcome names for this market (e.g.
["Yes", "No"] or ["Pipsqueak+4", "L1ga Team"]).All conditional token IDs for this market.
Map of token ID to outcome name (e.g.
{"2174263...": "Yes", "4839315...": "No"}).Whether this market uses the neg-risk framework (multi-outcome markets like elections).
Frequency
Oracle events are not evenly distributed. They come in bursts when UMA’s resolver bot processes batches of markets.| Period | Typical Volume |
|---|---|
| Active sports hours | 200+ resolutions/hour, proposals flowing continuously |
| Quiet periods | 10-50 resolutions/hour |
| Proposals (ProposePrice) | ~30/hour, continuous flow |
| Settlements (Settle) | ~30/hour, fires after 2-hour liveness |
| Disputes | A few per month (high signal) |
| Flags / Manual resolutions | Very rare |
Trading Implications
| Event | What It Means | Action |
|---|---|---|
| initialization | New market registered on-chain. | First signal of a new tradeable market |
| proposal | Answer proposed, 2-hour countdown started. | Monitor for disputes, position accordingly |
| dispute | Proposed outcome challenged. Uncertainty returns. | Watch for price swings, potential arb |
| settled | Oracle accepted the answer after liveness. | Resolution imminent |
| resolution | Market is settled. Winning positions can be redeemed. | Close tracking, update portfolio |
| reset | Market re-enters proposal phase after dispute. | Resolution delayed, reassess positions |
| flag | Admin flagged an issue. Market may be paused. | Caution, reduce exposure |
| manual_resolution | Admin override. Could be controversial. | Check outcome, compare to expectations |

