Skip to main content

Disputes & Voting

Oracles can be wrong — data sources get manipulated, rules get misread. Astromarkets provides a correction path: staked disputes + public voting + DAO review.

Timeline (mainnet windows)

Result submitted

├── 24h dispute window: StartDispute (staked challenge)

status: Dispute

├── 48h voting window: Vote (stake USDC to take a side)
├── 24h cooling period

SubmitFinalMarketResult (writes the majority result)


status: Final Cooling (24h)

├── optional: RequestDaoReview ──► DAO Review ──► DAO can override at threshold

ConfirmFinalResult ──► Settlement

Raising a Dispute

While the market is Result Submitted and within the 24h window, the sidebar shows the dispute panel:

  • Submitted result — the current oracle result;
  • Required stake — equal to the creator's security deposit (≥600 USDC);
  • Your claim — the result you assert, which must differ from the current one (Yes ↔ No).

Click Raise Dispute and sign; on-chain StartDispute:

  1. creates the dispute account with a voting deadline (+48h) and cooling deadline (+72h);
  2. moves your stake into the dispute vault;
  3. sets the market status to Dispute.
Disputing is high-risk

If voting / DAO upholds the original result, your stake is paid in full to the market creator. Dispute only with solid evidence. Conversely, if you win you receive your stake back + the creator's entire deposit.

Voting

Once the market is in Dispute, anyone can vote during the 48h window:

  1. Pick a position:
    • Support — back the disputer (the original result is wrong);
    • Oppose — back the original result;
  2. Enter a USDC amount — 1 USDC = 1 vote; your weight is your stake;
  3. Click Submit Vote (Vote); USDC moves to the dispute vault and your vote record is created.

Voting Payoffs

After settlement:

  • Winning-side voters: ClaimVoteReward returns your principal + a pro-rata share of the entire losing pool;
  • Losing-side voters: stake fully forfeited to the winners.

Reward formula: reward = principal + principal × losing_pool / winning_pool

Dispute Info in the UI

During a dispute the trading page shows two cards:

  • My Dispute — all your positions in this dispute: your claim and stake as disputer, your side and amount as voter, plus win/loss and claim status after settlement;
  • Dispute Details — the full picture: submitted result, disputer address and claim, stake, the three time windows (dispute / vote / cooling, with a current-phase badge), live Support / Oppose tallies in USDC, and the final outcome.

After Voting Ends

Once the cooling period (24h) elapses, anyone calls SubmitFinalMarketResult:

  • support > oppose → adopt the disputer's claim;
  • otherwise → keep the original result;

and the market enters Final Cooling (another 24h).

DAO Review (the last line of defense)

If you believe the vote still got it wrong, anyone can call RequestDaoReview during Final Cooling (the proposed result must differ from the current one), moving the market to DAO Review:

  • the DAO is defined by a global config: up to 10 members with an M-of-N approval threshold;
  • members call ApproveDaoProposal one by one;
  • once approvals reach the threshold, ConfirmFinalResult overrides the result with the proposal and enters Settlement;
  • if Final Cooling expires with no review (or the review never reaches threshold), ConfirmFinalResult confirms the standing result into Settlement.

The three layers (oracle → voting → DAO) escalate progressively: most markets take the fully automated happy path, contested ones are decided by economic games, and the extreme cases fall back to governance.