resolveMarket does not immediately open the market for claims - it triggers an Arcium MPC computation that transitions the market to PendingResolution, starts a 24–48 hour challenge window, and only after that window elapses (undisputed) can anyone call finalizeResolution to open claims.
After a successful
resolveMarket call the market enters the pendingResolution phase, not claimable. The claimPayout action is only available after finalizeResolution (or adminOverrideResolution) completes and the market transitions to Resolved.resolveMarket
Submits the winning outcome to the Arcium MPC cluster, which verifies and writes it on-chain. Only the market’s designated resolver (the creator fororacleType: "creator" markets, or the Pyth oracle for oracleType: "pyth" markets) may call this instruction.
Parameters
The market PDA to resolve. The market must be in the
"awaitingResolve" phase (active, past lockTimestamp, before resolutionDeadline).The winning outcome index. For YesNo:
0 = NO, 1 = YES. For MultiOutcome: the zero-based index of the winning option.Return value
Solana transaction signature for the
resolveMarket instruction. The Arcium MPC callback runs asynchronously - wait for the MarketResolvedEvent or poll marketPhase(market) until it returns "pendingResolution".Challenge window flow
Once a market is inpendingResolution, the following phase transitions are possible:
flagResolution
Flags an outcome as disputed during the challenge window. Anyone can call this - it does not require any special authority. A flagged market transitions to thedisputed phase and can only be unblocked by an admin override.
Parameters
The market PDA to flag. Must be in the
"pendingResolution" phase (challenge window active, not yet disputed).Optional free-text reason for the dispute, logged in transaction metadata.
Return value
Solana transaction signature. After confirmation the market is
"disputed" and only adminOverrideResolution can proceed.finalizeResolution
Finalises an undisputed resolution after the challenge window has elapsed. This is a permissionless instruction - anyone can call it, including a backend crank. No special authority or signing key is required.Parameters
The market PDA to finalise. Must be in
"awaitingFinalize" phase (challenge window elapsed, not disputed).Return value
Solana transaction signature. After confirmation the market transitions to
Resolved and claimPayout becomes available.adminOverrideResolution
Re-resolves a disputed market with a corrected outcome. Only the Cyphers protocol admin account may call this instruction. The payout ratio is recomputed from the plaintext pool balances against the new outcome.Parameters
The disputed market PDA. Must be in the
"disputed" phase.The corrected winning outcome index.
Return value
Solana transaction signature. After confirmation the market becomes
claimable with the corrected payout ratio.