Binary and neg-risk markets can both be challenged. Binary proposals
live on
Oracle and are keyed by the market’s
conditionId; neg-risk proposals live on the neg-risk oracle, are
keyed by the market’s negRiskMarketId, and cover every outcome of the
group — see Flow.When you can challenge
From the block in whichproposeOutcome lands until the challenge
deadline, 2 hours after the proposal by default (for a sports market
proposed at about T+15 min, until about T+135 min). The exact
deadline is resolution.challengeWindowClosesAt on the market payload
(on-chain: getProposal(id).challengeDeadline). Only one challenge per
market is accepted.
Posting a challenge
approve the oracle to pull the bond (10 USDC) from
the challenging address. The oracle collects it with transferFrom, so
that address must hold the USDC itself. The bond amount is fixed when
the outcome is proposed (getProposal(id).bondSnapshot); the
challenger does not choose it.
Submitting a challenge
There is no REST endpoint that raises a challenge: send thechallengeOutcome transaction above yourself. Both oracle addresses
are in GET /api/platform/contracts: oracle for binary markets,
negRiskOracle for neg-risk. Once the transaction is indexed, the
challenge appears on GET /api/markets/{symbol}/challenges.
A neg-risk challenge covers the whole group but is listed under one
sibling’s symbol. A challenge you send yourself is listed under the
group’s first outcome (lowest negRiskQuestionIndex); one filed from
the PredictStreet app is listed under the outcome it was filed on.
GET /api/challenges?challengerWallet=<address> finds it whichever
sibling it is listed under.
A refunded bond (plus any reward) is not sent back automatically: it
is credited to pendingBondPayouts(yourAddress) on the oracle you
challenged, and you claim it with withdrawBondPayout(to).
Possible outcomes
Decision SLA
- Target: 2 hours for straightforward data-check cases.
- Maximum: 24 hours for investigations.
- Beyond 4 hours: platform-wide notification sent.
During DISPUTED
Trading is paused for the market. Existing positions are preserved. User banner: “This market is under review due to a raised dispute.”Good reasons to challenge
- Proposed payouts contradict the resolution criteria.
- Primary data source was evidently wrong at proposal time.
- Match abandoned / cancelled but oracle proposed a winner.
Bad reasons (will likely cost you the bond)
- Subjective disagreement.
- Out-of-scope ref / VAR complaints.
- Disagreement with penalty shootout decisions accepted in the feed.