Polymarket CTF Exchange

Polygon PoS Polymarket

0xe111180000d2663c0091e4f400237545b87b996b

Solidity v0.8.34+commit.80d5c536

🤖
Query this contract from your AI
Reference: polymarket-ctf-exchange-v2-polygon 0xe111180000d2663c0091e4f400237545b87b996b
Sample prompt: “Tell me the current state of polymarket-ctf-exchange-v2-polygon”
No AI wired up yet? → mcp.smarts.md

Admin & Risk

Who can change the rules?

Block #87,395,577

Detected pausable controls from the verified ABI.

Polymarket contract governance
Ask your AI who can pause, upgrade, or change roles on this Polymarket contract.
Pausable

Current controls

Paused
false

Architecture

Polymarket contract role

Polymarket CTF Exchange

polymarket-ctf-exchange-v2-polygon

Matches orders for binary Polymarket markets. Filled orders move CTF outcome tokens backed by collateral through the standard Conditional Tokens path.

Trader order CTF Exchange Conditional Tokens UMA Adapter Final payout

Shares the same trading ABI as the Neg-Risk Exchange; the difference is the market path.

Market type Binary / Yes-No markets
Token path CTF outcome tokens
Resolution path Conditional Tokens + UMA Adapter
Compare with Polymarket Neg-Risk Exchange

Overview

Read Functions
27
Write Functions
17
Events
16

Read Functions

Block #87,395,578 · just now
PARENT_COLLECTION_ID() view → 0x0000000000000000000000000000000000000000000000000000000000000000

Returns the Conditional Tokens parent collection ID used by this exchange.✨ AI

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets. Identifies the parent collection used when deriving conditional-token positions for this exchange path.

Returns

Name Type Description
bytes32 bytes32 parent collection ID for Conditional Tokens that scopes CTF outcome positions.✨ AI
eip712Domain() view → 0x0f, Polymarket CTF Exchange, 2, 137, 0xe111180000d2663c0091e4f400237545b87b996b, 0x0000000000000000000000000000000000000000000000000000000000000000, []

Return the EIP-712 domain parameters used to build the contract's signing domain.✨ AI

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

dev: See: https://eips.ethereum.org/EIPS/eip-5267

Returns

Name Type Description
fields bytes1 EIP-712 domain type byte (single-byte domain schema identifier).✨ AI
name string EIP-712 domain name for signing (contract or protocol name).✨ AI
version string EIP-712 domain version string used in the signing domain.✨ AI
chainId uint256 Chain ID used when computing the domain separator.✨ AI
verifyingContract address Address used as the verifying contract in the domain separator.✨ AI
salt bytes32 Salt bytes32 used as an additional domain separator field.✨ AI
extensions uint256[] Optional uint256 array for EIP-712 domain extensions or custom domain parameters.✨ AI
getCollateral() view → 0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb

Returns the collateral token address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getCtf() view → 0x4d97dcd97ec945f40cf65f87097ace5ea0476045

Returns the Conditional Tokens Framework address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getCtfCollateral() view → 0x2791bca1f2de4661ed88a30c99a7a9449aa84174

Returns the collateral address used by the CTF for position ID derivation

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getFeeReceiver() view → 0x115f48dc2a731aa16251c6d6e1befc42f92accc9

Returns the current fee receiver address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getMaxFeeRate() view → 0

Returns the current max fee rate in basis points

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
uint256
getOrderStatus(orderHash: bytes32) view

Gets the status of an order

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets. Returns the fill/cancel state used to decide whether a Polymarket order can still trade.

Parameters

Name Type Description
orderHash bytes32 - The hash of the order

Returns

Name Type Description
tuple
getOutcomeTokenFactory() view → 0xada100874d00e3331d00f2007a9c336a65009718

Returns the address that facilitates outcome token minting or merging

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getProxyFactory() view → 0xab45c5a4b0c941a2f231c04c3f49182e1a254052

Gets the Proxy factory address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getProxyImplementation() view → 0x44e999d5c2f66ef0861317f9a4805ac2e90aeb4f

Gets the Proxy implementation address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getProxyWalletAddress(_addr: address) view

Gets the Polymarket proxy wallet address for an address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_addr address - The address that owns the proxy wallet

Returns

Name Type Description
address
getSafeFactory() view → 0xaacfeea03eb1561c4e67d661e40682bd20e3541b

Gets the Safe factory address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getSafeImplementation() view → 0xe51abdf814f8854941b9fe8e3a4f65cab4e7a4a8

Gets the Safe implementation address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
address
getSafeWalletAddress(_addr: address) view

Gets the Polymarket Gnosis Safe address for an address

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_addr address - The Safe owner/signer address used to derive the Safe address

Returns

Name Type Description
address
hashOrder(order: tuple) view

Computes the hash for an order

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
order tuple - The order to be hashed

Returns

Name Type Description
bytes32
isAdmin(_usr: address) view

Returns whether an address is an admin

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_usr address The address to check

Returns

Name Type Description
bool
isOperator(_usr: address) view

Returns whether an address is an operator

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_usr address The address to check

Returns

Name Type Description
bool
isUserPaused(user: address) view

Checks if a user is currently paused

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
user address - The user address to check

Returns

Name Type Description
bool
orderStatus(bytes32) view

Report whether the order is fully filled and the remaining unfilled amount for the given order id.✨ AI

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
bytes32

Returns

Name Type Description
filled bool filled: true if the order is fully filled, false if any amount remains unfilled.✨ AI
remaining uint248 remaining: the remaining unfilled quantity for the order, returned as a uint248 value.✨ AI
paused() view → false

Reports whether the CTF exchange is currently paused.✨ AI

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
bool True if the exchange is paused (trading and order matching disabled), false otherwise.✨ AI
supportsInterface(interfaceId: bytes4) pure

ERC-165 interface detection

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
interfaceId bytes4 - The interface identifier to check

Returns

Name Type Description
bool
userPauseBlockInterval() view → 100

Returns the number of blocks a user must wait between pause actions.✨ AI

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Returns

Name Type Description
uint256 Per-user pause cooldown interval expressed in blocks.✨ AI
userPausedBlockAt(address) view

Return the block number when a specific user was paused in the exchange.✨ AI

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
address

Returns

Name Type Description
uint256 Block number when the user was paused; returns 0 if the user is not paused.✨ AI
validateFee(fee: uint256, cashValue: uint256) view

Validates that the fee does not exceed the maximum allowed rate

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
fee uint256 - The fee amount being charged, denominated in collateral
cashValue uint256 - The value of the trade, denominated in collateral
validateOrder(order: tuple) view

order - The order to be validated

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets. Checks whether an order is structurally fillable before execution, including signature and exchange constraints.

Parameters

Name Type Description
order tuple
validateOrderSignature(orderHash: bytes32, order: tuple) view

Validates the signature of an order

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

dev: If the signature is empty, only preapproval is checked. This allows operators to omit the signature for preapproved orders, saving calldata gas and skipping ECDSA recovery.

Parameters

Name Type Description
orderHash bytes32 - The hash of the order
order tuple - The order

Write Functions

addAdmin(_admin: address) nonpayable

Adds a new admin Can only be called by a current admin

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_admin address - The new admin
addOperator(_operator: address) nonpayable

Adds a new operator Can only be called by a current admin

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_operator address - The new operator
invalidatePreapprovedOrder(orderHash: bytes32) nonpayable

Entrypoint to invalidate a preapproval

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
orderHash bytes32 - The hash of the order to invalidate
matchOrders(conditionId: bytes32, takerOrder: tuple, makerOrders: tuple[], takerFillAmount: uint256, makerFillAmounts: uint256[], takerFeeAmount: uint256, makerFeeAmounts: uint256[]) nonpayable

Matches a taker order against a list of maker orders

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets. Core exchange entry point: matches signed Polymarket orders and moves collateral/outcome tokens for the active market path.

Parameters

Name Type Description
conditionId bytes32 - The conditionId of the market being traded
takerOrder tuple - The active order to be matched
makerOrders tuple[] - The array of maker orders to be matched against the active order
takerFillAmount uint256 - The amount to fill on the taker order, always in terms of the maker amount
makerFillAmounts uint256[] - The array of amounts to fill on the maker orders, always in terms of the maker amount
takerFeeAmount uint256 - The fee to be charged to the taker order
makerFeeAmounts uint256[] - The fee to be charged to the maker orders
onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) nonpayable

Handles receipt of a batch of ERC1155 tokens.

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
address
address
uint256[]
uint256[]
bytes

Returns

Name Type Description
bytes4 The function selector for acceptance.
onERC1155Received(address, address, uint256, uint256, bytes) nonpayable

Handles receipt of a single ERC1155 token.

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
address
address
uint256
uint256
bytes

Returns

Name Type Description
bytes4 The function selector for acceptance.
pauseTrading() nonpayable

Pause trading on the Exchange

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

pauseUser() nonpayable

Allows a user to pause their account

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

preapproveOrder(order: tuple) nonpayable

Entrypoint to set an order as preapproved

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
order tuple - The order to be set as preapproved
removeAdmin(_admin: address) nonpayable

Removes an existing Admin Can only be called by a current admin

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_admin address - The admin to be removed
removeOperator(_operator: address) nonpayable

Removes an existing operator Can only be called by a current admin

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_operator address - The operator to be removed
renounceOperatorRole() nonpayable

Removes the operator role for the caller

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

dev: Can only be called by an existing operator
setFeeReceiver(receiver: address) nonpayable

Sets a new fee receiver for the Exchange

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
receiver address - The new fee receiver address
setMaxFeeRate(rate: uint256) nonpayable

Sets the maximum fee rate for trades

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
rate uint256 - The new max fee rate in basis points
setUserPauseBlockInterval(_interval: uint256) nonpayable

Sets the user pause block interval

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Parameters

Name Type Description
_interval uint256 - The new user pause block interval
unpauseTrading() nonpayable

Unpause trading on the Exchange

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

unpauseUser() nonpayable

Allows a user to unpause their account

Polymarket context On the CTF Exchange, this applies to binary Yes/No markets.

Events

FeeCharged(receiver: address, amount: uint256)

Emitted when a fee is charged

Name Type Indexed Description
receiver address
amount uint256
FeeReceiverUpdated(feeReceiver: address)

Emitted when the fee receiver is updated

Name Type Indexed Description
feeReceiver address
MaxFeeRateUpdated(maxFeeRate: uint256)

Emitted when the max fee rate is updated

Name Type Indexed Description
maxFeeRate uint256
NewAdmin(newAdminAddress: address, admin: address)

Emitted when a new admin is added

Name Type Indexed Description
newAdminAddress address
admin address
NewOperator(newOperatorAddress: address, admin: address)

Emitted when a new operator is added

Name Type Indexed Description
newOperatorAddress address
admin address
OrderFilled(orderHash: bytes32, maker: address, taker: address, side: uint8, tokenId: uint256, makerAmountFilled: uint256, takerAmountFilled: uint256, fee: uint256, builder: bytes32, metadata: bytes32)

Emitted when an order is filled

Polymarket context Primary exchange activity signal: a Polymarket order was matched on-chain.

Name Type Indexed Description
orderHash bytes32
maker address
taker address
side uint8
tokenId uint256
makerAmountFilled uint256
takerAmountFilled uint256
fee uint256
builder bytes32
metadata bytes32
OrderPreapprovalInvalidated(orderHash: bytes32)

Emitted when a preapproval is invalidated

Name Type Indexed Description
orderHash bytes32
OrderPreapproved(orderHash: bytes32)

Emitted when an order is preapproved

Name Type Indexed Description
orderHash bytes32
OrdersMatched(takerOrderHash: bytes32, takerOrderMaker: address, side: uint8, tokenId: uint256, makerAmountFilled: uint256, takerAmountFilled: uint256)

Emitted when a set of orders is matched

Name Type Indexed Description
takerOrderHash bytes32
takerOrderMaker address
side uint8
tokenId uint256
makerAmountFilled uint256
takerAmountFilled uint256
RemovedAdmin(removedAdmin: address, admin: address)

Emitted when an admin is removed

Name Type Indexed Description
removedAdmin address
admin address
RemovedOperator(removedOperator: address, admin: address)

Emitted when an operator is removed

Name Type Indexed Description
removedOperator address
admin address
TradingPaused(pauser: address)
Name Type Indexed Description
pauser address
TradingUnpaused(pauser: address)
Name Type Indexed Description
pauser address
UserPauseBlockIntervalUpdated(oldInterval: uint256, newInterval: uint256)

Emitted when the user pause block interval is updated

Name Type Indexed Description
oldInterval uint256
newInterval uint256
UserPaused(user: address, effectivePauseBlock: uint256)

Emitted when a user pauses their account

Name Type Indexed Description
user address
effectivePauseBlock uint256
UserUnpaused(user: address)

Emitted when a user unpauses their account

Name Type Indexed Description
user address