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/me/positions/convert

Resolution

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

Source

0xe8573F401a1fa30c3Df0e7F427C7f25a68E1Ec98 (testnet); PredictStreetNegRiskCtfExchange at 0xB1A9274D2a9bd8a8CDd4D836e4f5273d3870211a.