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:
POST /api/me/positions/split
POST /api/me/positions/merge
See Positions for details.

Settlement

  1. Oracle-service posts outcome via PredictStreetOracle.proposeOutcome.
  2. 2-hour challenge window opens.
  3. If no challenge, contract reportPayouts to ConditionalTokens, unlocking redemption.
  4. Users redeem winning position tokens via ConditionalTokens.redeemPositions.
See Settlement flow for the timeline.