Polymarket Collateral Adapter

Polygon PoS Polymarket Browse chains

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 · Browse chains

Admin & Risk

Who can change the rules?

Block #89,865,105

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 #89,865,105 · just now
COLLATERAL_TOKEN() view → 0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb

Returns the address of the pUSD collateral token used by this adapter.✨ AI

Returns

Name Type Description
address Address of the collateral token (pUSD) accepted by the adapter.✨ AI
CONDITIONAL_TOKENS() view → 0x4d97dcd97ec945f40cf65f87097ace5ea0476045

Returns the Conditional Tokens contract address used by this Polymarket collateral adapter.✨ AI

Returns

Name Type Description
address The address of the Conditional Tokens contract that the adapter forwards pUSD collateral to.✨ AI
USDCE() view → 0x2791bca1f2de4661ed88a30c99a7a9449aa84174

Return the address of the pUSD collateral token used by this Polymarket collateral adapter.✨ AI

Returns

Name Type Description
address The address of the pUSD collateral token that the adapter exposes to the Conditional Tokens system.✨ AI
hasAllRoles(user: address, roles: uint256) view

Check whether an account holds all roles specified and return true if it does.✨ AI

dev: Returns whether `user` has all of `roles`.

Parameters

Name Type Description
user address Account whose roles will be checked.✨ AI
roles uint256 Bitmask or combined role identifiers to verify the account possesses.✨ AI

Returns

Name Type Description
bool True if the account holds all specified roles, false otherwise.✨ AI
hasAnyRole(user: address, roles: uint256) view

Return whether a given user holds any of the specified roles.✨ AI

dev: Returns whether `user` has any of `roles`.

Parameters

Name Type Description
user address Address to check roles for.✨ AI
roles uint256 Bitmask of role flags to test; non-zero overlap yields true.✨ AI

Returns

Name Type Description
bool True if the user holds at least one of the specified roles; otherwise false.✨ AI
owner() view → 0x47ebfac3353314c788b96cdcbf41daadfe03629c

Returns the owner address of the Collateral Adapter contract.✨ AI

dev: Returns the owner of the contract.

Returns

Name Type Description
result address result: address - Owner address with administrative permissions over the adapter.✨ AI
ownershipHandoverExpiresAt(pendingOwner: address) view

Returns the timestamp when a pending ownership handover for an account expires.✨ AI

dev: Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.

Parameters

Name Type Description
pendingOwner address Address that requested the ownership handover.✨ AI

Returns

Name Type Description
result uint256 Unix timestamp (seconds) when the pending handover expires; 0 if no pending handover.✨ AI
paused(address) view

Check if the adapter is paused for a given address.✨ AI

Parameters

Name Type Description
address

Returns

Name Type Description
bool True if the adapter is paused for the provided address, otherwise false.✨ AI
rolesOf(user: address) view

Return the roles assigned to a user in the Collateral Adapter.✨ AI

dev: Returns the roles of `user`.

Parameters

Name Type Description
user address Address to query roles for.✨ AI

Returns

Name Type Description
roles uint256 A uint256 bitmask representing the user's roles within the adapter.✨ AI
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

Cancel a pending ownership handover to prevent the pending account from becoming the owner.✨ AI

dev: Cancels the two-step ownership handover to the caller, if any.
completeOwnershipHandover(pendingOwner: address) payable

Finalize transfer of contract ownership to the pendingOwner address.✨ AI

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 Address proposed to become the new contract owner.✨ AI
grantRoles(user: address, roles: uint256) payable

Grants a role bitmask to a user, enabling privileged adapter actions.✨ AI

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 Address that will receive the specified roles.✨ AI
roles uint256 Bitmask (uint256) encoding one or more roles to grant.✨ AI
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

Permanently renounce ownership and remove the owner from the contract.✨ AI

dev: Allows the owner to renounce their ownership.
renounceRoles(roles: uint256) payable

Renounce one or more permission roles held by the caller on this collateral adapter.✨ AI

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 Bitmask of roles to renounce from the caller.✨ AI
requestOwnershipHandover() payable

Requests an ownership handover to initiate the owner transfer handshake.✨ AI

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

Revoke specified roles from a user in the adapter so they lose assigned permissions.✨ AI

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 Address of the account to remove roles from.✨ AI
roles uint256 Bitmap of roles to revoke from the user (uint256 bitmask).✨ AI
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

Transfers contract ownership to newOwner; payable and callable by the current owner.✨ AI

dev: Allows the owner to transfer the ownership to `newOwner`.

Parameters

Name Type Description
newOwner address Address to receive ownership.✨ AI
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.