Skip to main content

Structure

Each binary market has exactly two outcomes: outcome=0 and outcome=1. On-chain this corresponds to a single conditionId with outcomeSlotCount=2 on ConditionalTokens. Token IDs are derived deterministically from the condition:
  • yesTokenId = position ID for the 0b01 index set (outcome 0 YES)
  • noTokenId = position ID for the 0b10 index set (outcome 1 YES)
You buy into an outcome by acquiring its corresponding position token. At resolution, one of the tokens becomes worth 1 USDC; the other becomes worth 0.

Trading

Use outcome: "0" or outcome: "1" in the order request. The server resolves this to the correct tokenId for you. Internally the Order.tokenId field in the EIP-712 payload carries the raw position ID.

Split and merge

A user can exchange 1 USDC for a full set {1 YES, 1 NO}, or collapse a full set back into 1 USDC:
See Positions for details.

Settlement

  1. The platform proposes the outcome via Oracle.proposeOutcome.
  2. The challenge window opens (2 hours by default).
  3. If no challenge, contract reportPayouts to ConditionalTokens, unlocking redemption.
  4. Holders redeem winning position tokens through their vault — the tokens sit in the vault, so calling ConditionalTokens.redeemPositions from your EOA pays nothing. With auto-redeem on (the default), the platform redeems winnings of at least 1 USDC for you within a few minutes. For smaller winnings, or with auto-redeem off, use POST /api/me/positions/redeem (the platform pays the gas) or Vault.redeemPositions(conditionId, indexSets); see Market status.
See Settlement flow for the timeline.