Polymarket Neg-Risk Exchange
Polygon PoS Polymarket0xe2222d279d744050d28e00520010520000310f59
Solidity v0.8.34+commit.80d5c536
Admin & Risk
Who can change the rules?
Detected pausable controls from the verified ABI.
Current controls
- Paused
- false
Architecture
Polymarket contract role
Polymarket Neg-Risk Exchange
Matches orders for multi-outcome Polymarket markets. Filled orders use neg-risk outcome tokens, then resolution flows through the Neg-Risk Adapter before final CTF-style settlement.
Shares the same trading ABI as the CTF Exchange; the difference is the market path.
| Market type | Multi-outcome / mutually exclusive markets |
|---|---|
| Token path | Neg-risk outcome tokens |
| Resolution path | Neg-Risk Adapter + UMA Adapter |
| Compare with | Polymarket CTF Exchange |
Overview
Read Functions
Block #87,395,593 · just nowReturns the parent collection id used by the Conditional Tokens path.✨ AI
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets. Identifies the parent collection used when deriving conditional-token positions for this exchange path.
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 | bytes32 identifier of the Conditional Tokens parent collection.✨ AI |
Return the EIP-712 domain fields used for signing orders on the Polymarket CTF Exchange.✨ AI
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| fields | bytes1 | Domain type byte (bytes1) used as a small-domain flag or variant in EIP-712 encoding.✨ AI |
| name | string | Human-readable domain name (string) identifying the signing domain, e.g. Polymarket CTF Exchange.✨ AI |
| version | string | Domain version string (string) used to version the signing domain.✨ AI |
| chainId | uint256 | Chain ID (uint256) applied to the domain to prevent cross-chain replay attacks.✨ AI |
| verifyingContract | address | Verifying contract address (address) that validates signatures for this EIP-712 domain.✨ AI |
| salt | bytes32 | Domain salt (bytes32) used to further distinguish the signing domain instance.✨ AI |
| extensions | uint256[] | Array of uint256 extension fields providing optional domain metadata; may be empty.✨ AI |
Returns the collateral token address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Returns the Conditional Tokens Framework address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Returns the collateral address used by the CTF for position ID derivation
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Returns the current fee receiver address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Returns the current max fee rate in basis points
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | uint256 |
Gets the status of an order
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome 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 |
Returns the address that facilitates outcome token minting or merging
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Gets the Proxy factory address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Gets the Proxy implementation address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Gets the Polymarket proxy wallet address for an address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _addr | address | - The address that owns the proxy wallet |
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Gets the Safe factory address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Gets the Safe implementation address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Gets the Polymarket Gnosis Safe address for an address
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _addr | address | - The Safe owner/signer address used to derive the Safe address |
Returns
| Name | Type | Description |
|---|---|---|
| — | address |
Computes the hash for an order
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| order | tuple | - The order to be hashed |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
Returns whether an address is an admin
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _usr | address | The address to check |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
Returns whether an address is an operator
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _usr | address | The address to check |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
Checks if a user is currently paused
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| user | address | - The user address to check |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
Return whether an order is fully filled and how many outcome tokens remain.✨ AI
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| filled | bool | filled: true if the order is fully filled, false otherwise.✨ AI |
| remaining | uint248 | remaining: uint248 count of outcome tokens still unfilled for the order.✨ AI |
Reports whether the CTF exchange is currently paused.✨ AI
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | bool | True if the exchange is paused (trading and order matching disabled), false otherwise.✨ AI |
ERC-165 interface detection
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| interfaceId | bytes4 | - The interface identifier to check |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
Returns the number of blocks a user's pause lasts.✨ AI
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Returns
| Name | Type | Description |
|---|---|---|
| — | uint256 | The pause interval in blocks that applies to a user (uint256).✨ AI |
Return the block number when a specific user was paused in the exchange.✨ AI
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome 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 |
Validates that the fee does not exceed the maximum allowed rate
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome 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 |
order - The order to be validated
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets. Checks whether an order is structurally fillable before execution, including signature and exchange constraints.
Parameters
| Name | Type | Description |
|---|---|---|
| order | tuple |
Validates the signature of an order
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| orderHash | bytes32 | - The hash of the order |
| order | tuple | - The order |
Write Functions
Adds a new admin Can only be called by a current admin
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _admin | address | - The new admin |
Adds a new operator Can only be called by a current admin
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _operator | address | - The new operator |
Entrypoint to invalidate a preapproval
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| orderHash | bytes32 | - The hash of the order to invalidate |
Matches a taker order against a list of maker orders
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome 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 |
Handles receipt of a batch of ERC1155 tokens.
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| — | address | |
| — | address | |
| — | uint256[] | |
| — | uint256[] | |
| — | bytes |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes4 | The function selector for acceptance. |
Handles receipt of a single ERC1155 token.
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| — | address | |
| — | address | |
| — | uint256 | |
| — | uint256 | |
| — | bytes |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes4 | The function selector for acceptance. |
Pause trading on the Exchange
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Allows a user to pause their account
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Entrypoint to set an order as preapproved
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| order | tuple | - The order to be set as preapproved |
Removes an existing Admin Can only be called by a current admin
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _admin | address | - The admin to be removed |
Removes an existing operator Can only be called by a current admin
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _operator | address | - The operator to be removed |
Removes the operator role for the caller
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Sets a new fee receiver for the Exchange
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| receiver | address | - The new fee receiver address |
Sets the maximum fee rate for trades
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| rate | uint256 | - The new max fee rate in basis points |
Sets the user pause block interval
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Parameters
| Name | Type | Description |
|---|---|---|
| _interval | uint256 | - The new user pause block interval |
Unpause trading on the Exchange
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Allows a user to unpause their account
Polymarket context On the Neg-Risk Exchange, this applies to multi-outcome markets.
Events
Emitted when a fee is charged
| Name | Type | Indexed | Description |
|---|---|---|---|
| receiver | address | ✓ | |
| amount | uint256 |
Emitted when the fee receiver is updated
| Name | Type | Indexed | Description |
|---|---|---|---|
| feeReceiver | address | ✓ |
Emitted when the max fee rate is updated
| Name | Type | Indexed | Description |
|---|---|---|---|
| maxFeeRate | uint256 |
Emitted when a new admin is added
| Name | Type | Indexed | Description |
|---|---|---|---|
| newAdminAddress | address | ✓ | |
| admin | address | ✓ |
Emitted when a new operator is added
| Name | Type | Indexed | Description |
|---|---|---|---|
| newOperatorAddress | address | ✓ | |
| admin | address | ✓ |
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 |
Emitted when a preapproval is invalidated
| Name | Type | Indexed | Description |
|---|---|---|---|
| orderHash | bytes32 | ✓ |
Emitted when an order is preapproved
| Name | Type | Indexed | Description |
|---|---|---|---|
| orderHash | bytes32 | ✓ |
Emitted when a set of orders is matched
| Name | Type | Indexed | Description |
|---|---|---|---|
| takerOrderHash | bytes32 | ✓ | |
| takerOrderMaker | address | ✓ | |
| side | uint8 | ||
| tokenId | uint256 | ||
| makerAmountFilled | uint256 | ||
| takerAmountFilled | uint256 |
Emitted when an admin is removed
| Name | Type | Indexed | Description |
|---|---|---|---|
| removedAdmin | address | ✓ | |
| admin | address | ✓ |
Emitted when an operator is removed
| Name | Type | Indexed | Description |
|---|---|---|---|
| removedOperator | address | ✓ | |
| admin | address | ✓ |
| Name | Type | Indexed | Description |
|---|---|---|---|
| pauser | address | ✓ |
| Name | Type | Indexed | Description |
|---|---|---|---|
| pauser | address | ✓ |
Emitted when the user pause block interval is updated
| Name | Type | Indexed | Description |
|---|---|---|---|
| oldInterval | uint256 | ||
| newInterval | uint256 |
Emitted when a user pauses their account
| Name | Type | Indexed | Description |
|---|---|---|---|
| user | address | ✓ | |
| effectivePauseBlock | uint256 |
Emitted when a user unpauses their account
| Name | Type | Indexed | Description |
|---|---|---|---|
| user | address | ✓ |