Polymarket Collateral Adapter

Polygon PoS Polymarket

0xada100874d00e3331d00f2007a9c336a65009718

Solidity v0.8.34+commit.80d5c536

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

Admin & Risk

Who can change the rules?

Block #87,395,608

Detected pausable and ownable controls from the verified ABI.

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

Current controls

Owner
0x47ebfac3353314c788b96cdcbf41daadfe03629c ↗ Polygonscan → smarts

Architecture

Polymarket contract role

Polymarket Collateral Adapter

polymarket-collateral-adapter-polygon

Bridges Polymarket pUSD collateral into the standard Conditional Tokens path used by binary markets.

pUSD Collateral Adapter Conditional Tokens Binary market positions

Overview

Read Functions
10
Write Functions
17
Events
6

Read Functions

Block #87,395,608 · just now
COLLATERAL_TOKEN() view → 0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb

Returns

Name Type Description
address
CONDITIONAL_TOKENS() view → 0x4d97dcd97ec945f40cf65f87097ace5ea0476045

Returns

Name Type Description
address
USDCE() view → 0x2791bca1f2de4661ed88a30c99a7a9449aa84174

Returns

Name Type Description
address
hasAllRoles(user: address, roles: uint256) view
dev: Returns whether `user` has all of `roles`.

Parameters

Name Type Description
user address
roles uint256

Returns

Name Type Description
bool
hasAnyRole(user: address, roles: uint256) view
dev: Returns whether `user` has any of `roles`.

Parameters

Name Type Description
user address
roles uint256

Returns

Name Type Description
bool
owner() view → 0x47ebfac3353314c788b96cdcbf41daadfe03629c
dev: Returns the owner of the contract.

Returns

Name Type Description
result address
ownershipHandoverExpiresAt(pendingOwner: address) view
dev: Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.

Parameters

Name Type Description
pendingOwner address

Returns

Name Type Description
result uint256
paused(address) view

Parameters

Name Type Description
address

Returns

Name Type Description
bool
rolesOf(user: address) view
dev: Returns the roles of `user`.

Parameters

Name Type Description
user address

Returns

Name Type Description
roles uint256
supportsInterface(interfaceId: bytes4) pure

ERC-165 interface detection

Parameters

Name Type Description
interfaceId bytes4 - The interface identifier to check

Returns

Name Type Description
bool

Write Functions

addAdmin(_admin: address) nonpayable

Adds a new admin

Parameters

Name Type Description
_admin address The address of the new admin
cancelOwnershipHandover() payable
dev: Cancels the two-step ownership handover to the caller, if any.
completeOwnershipHandover(pendingOwner: address) payable
dev: Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`.

Parameters

Name Type Description
pendingOwner address
grantRoles(user: address, roles: uint256) payable
dev: Allows the owner to grant `user` `roles`. If the `user` already has a role, then it will be an no-op for the role.

Parameters

Name Type Description
user address
roles uint256
mergePositions(address, bytes32, _conditionId: bytes32, uint256[], _amount: uint256) nonpayable

Merges conditional token positions back into collateral

dev: Unnamed params retained for IConditionalTokens interface compatibility

Parameters

Name Type Description
address
bytes32
_conditionId bytes32 The condition ID to merge on
uint256[]
_amount uint256 The amount of each position to merge
onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) nonpayable

Handles receipt of a batch of ERC1155 tokens.

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.

Parameters

Name Type Description
address
address
uint256
uint256
bytes

Returns

Name Type Description
bytes4 The function selector for acceptance.
pause(_asset: address) nonpayable

Pauses the wrapping/unwrapping of a supported asset

dev: The caller must have the ADMIN_ROLE role

Parameters

Name Type Description
_asset address The asset to pause
redeemPositions(address, bytes32, _conditionId: bytes32, uint256[]) nonpayable

Redeems conditional token positions for collateral after resolution

Polymarket context Redeems winning or partially winning outcome tokens after a condition has resolved.

dev: Unnamed params retained for IConditionalTokens interface compatibility

Parameters

Name Type Description
address
bytes32
_conditionId bytes32 The condition ID to redeem
uint256[]
removeAdmin(_admin: address) nonpayable

Removes an admin

Parameters

Name Type Description
_admin address The address of the admin to remove
renounceOwnership() payable
dev: Allows the owner to renounce their ownership.
renounceRoles(roles: uint256) payable
dev: Allow the caller to remove their own roles. If the caller does not have a role, then it will be an no-op for the role.

Parameters

Name Type Description
roles uint256
requestOwnershipHandover() payable
dev: Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default.
revokeRoles(user: address, roles: uint256) payable
dev: Allows the owner to remove `user` `roles`. If the `user` does not have a role, then it will be an no-op for the role.

Parameters

Name Type Description
user address
roles uint256
splitPosition(address, bytes32, _conditionId: bytes32, uint256[], _amount: uint256) nonpayable

Splits collateral into conditional token positions

dev: Unnamed params retained for IConditionalTokens interface compatibility

Parameters

Name Type Description
address
bytes32
_conditionId bytes32 The condition ID to split on
uint256[]
_amount uint256 The amount of collateral to split
transferOwnership(newOwner: address) payable
dev: Allows the owner to transfer the ownership to `newOwner`.

Parameters

Name Type Description
newOwner address
unpause(_asset: address) nonpayable

Unpauses the wrapping/unwrapping of a supported asset

dev: The caller must have the ADMIN_ROLE role

Parameters

Name Type Description
_asset address The asset to unpause

Events

OwnershipHandoverCanceled(pendingOwner: address)
Name Type Indexed Description
pendingOwner address
OwnershipHandoverRequested(pendingOwner: address)
Name Type Indexed Description
pendingOwner address
OwnershipTransferred(oldOwner: address, newOwner: address)
Name Type Indexed Description
oldOwner address
newOwner address
Paused(asset: address)

Emitted when wrapping/unwrapping is paused.

Name Type Indexed Description
asset address The paused asset address.
RolesUpdated(user: address, roles: uint256)
Name Type Indexed Description
user address
roles uint256
Unpaused(asset: address)

Emitted when wrapping/unwrapping is unpaused.

Name Type Indexed Description
asset address The unpaused asset address.