Skip to main content
NegRiskAdapter adds multi-outcome market support on top of ConditionalTokens. Paired with PredictStreetNegRiskCtfExchange.

Why separate from binary

Binary markets = 2 outcomes, 2 position tokens. Multi-outcome could use one condition per outcome, but that’s collateral-inefficient — holding NO across all outcomes should equal 1 USDC, traded atomically.

Market setup

function prepareMarket(
    bytes32 marketId,
    bytes32[] calldata questionIds,
    uint256 outcomeCount
) external;

convertPositions

function convertPositions(
    bytes32 marketId,
    uint256 indexSet,
    uint256 amount
) external;
Example: 4-outcome market; hold NO on outcomes 1, 2, 3 (indexSet 0b1110), want to collapse to USDC — burn 1 NO_1 + 1 NO_2 + 1 NO_3, receive 1 USDC.

Via the API

Partners typically call through the vault’s dual-sig path:
POST /api/vault/convert-signature

Resolution

Each outcome settled independently against the same conditionId. At resolution, reportPayouts called with payout array.

Source

0x3BE93B8e19b73e1b21B65adFFEF4ef248715D21B (testnet); PredictStreetNegRiskCtfExchange at 0x2eB97912c333963a21410Af1eF7E9a0aAB7631bf.