Skip to content

Gnosis CTF Model

Gnosis Conditional Tokens Framework (CTF) is the token model Arenaton uses for binary Outcome Shares. A Market is not a new Solidity deployment. It is a CTF condition prepared against a collateral token, an oracle/resolver address, and an outcome slot count.

This page documents the model Arenaton builds against. It is not a production address registry. Apps and services must read live contract addresses from /api/contract-registry or /api/paper/contract-registry.

Third-party contract addresses are useful references, not Arenaton production configuration.

Address typeCurrent rule
Arenaton production addressesRead from /api/contract-registry after production gates pass.
Arenaton paper addressesRead from /api/paper/contract-registry for Polygon Amoy and PaperUSDC.
Polymarket addressesUse only as external CTF references. Do not paste them into Arenaton registries.

As of May 4, 2026, Polymarket’s public docs list Polygon mainnet CTF infrastructure including the Conditional Tokens contract, CTF Exchange V2 contracts, pUSD collateral contracts, and UMA adapter/oracle contracts. Those are Polymarket deployment details, not Arenaton settlement authority.

Sources:

ObjectMeaning in Arenaton
MarketThe product record users browse and trade.
ConditionThe on-chain CTF record for a question and outcome set.
Outcome ShareERC-1155 position token representing one outcome.
CollateralUSDC in production, PaperUSDC in paper mode.
ResolverThe address that reports final payout vectors to CTF.
SettlementThe contract or paper engine path that atomically moves Collateral and Outcome Shares.

The condition ID is deterministic:

conditionId = getConditionId(oracle, questionId, outcomeSlotCount)

For first-launch binary Markets:

ParameterValue
oracleArenaton resolver for the environment.
questionIdDeterministic hash of the Market terms and resolution source.
outcomeSlotCount2.

The Market ID remains human-readable for APIs and URLs. The questionId and conditionId are the settlement and redemption identifiers.

Binary Outcome Shares are computed in three steps:

conditionId = getConditionId(oracle, questionId, 2)
yesCollectionId = getCollectionId(bytes32(0), conditionId, 1)
noCollectionId = getCollectionId(bytes32(0), conditionId, 2)
yesPositionId = getPositionId(collateralToken, yesCollectionId)
noPositionId = getPositionId(collateralToken, noCollectionId)

Index sets use bitmasks:

OutcomeIndex set
YES / outcome 01 / 0b01
NO / outcome 12 / 0b10

Complementary buy demand can create the first Outcome Shares:

YES buyer signs buy YES at price P
NO buyer signs buy NO at price 1 - P or better
settlement transfers Collateral
settlement calls CTF splitPosition
YES and NO Outcome Shares move to the buyers

The settlement contract must not retain user Collateral or Outcome Shares after execution.

After Outcome Shares exist, same-outcome buy/sell matching transfers existing shares:

seller signs sell YES
buyer signs buy YES
settlement transfers Collateral from buyer to seller
settlement transfers YES Outcome Shares from seller to buyer

Failed resale cannot create user debt. If balances, approvals, signatures, cancellation, expiry, or Live State Version checks fail, settlement reverts or the paper engine marks the fill failed.

The resolver reports a payout vector to CTF after the correction window closes.

ResolutionPayout vector
YES wins[1, 0]
NO wins[0, 1]
Invalid[1, 1]

With [1, 1], each binary Outcome Share redeems for half of one unit of Collateral. Users redeem through CTF redemption mechanics, not an Arenaton internal balance.

Paper mode uses the same mental model while staying isolated:

AreaPaper rule
ChainPolygon Amoy 80002.
CollateralPaperUSDC only.
Registry/api/paper/contract-registry.
SettlementPaper exchange plus paper CTF settlement path.
PortfolioDerived from paper settlement, lifecycle, redemption, and indexer state.

Read CTF Paper Mode and Paper Trading Backend for the current implementation spine.