{
"badges": [],
"description": "Polymarket is a prediction market where users trade collateral-backed outcome shares through offchain order books. Market listing, order execution, resolution, and parts of the collateral and wallet systems depend on permissioned actors.",
"detailedDescription": "Polymarket is a prediction market where users trade shares in the possible outcomes of an event. Once the result is known, each share pays the fraction of one pUSD assigned to its outcome.\n\nA complete set contains one share of every possible outcome: one YES and one NO share in a binary market, or one share of each outcome in a multi-outcome market. Creating a complete set through the ordinary path consumes one pUSD. Before resolution, the set can be merged back into that unit; after resolution, its shares collectively redeem for the same unit.\n\nOrders are signed offchain and settled onchain by approved operators. The contracts enforce the signed trade terms and the accounting of outcome shares, but Polymarket's team chooses which markets appear in the product, operators choose which orders to fill, and permissioned actors remain involved in resolution and administration.\n\n### Collateral and positions\n\nTrading uses pUSD, an upgradeable token backed one-for-one by native USDC or USDC.e held in an upgradeable vault. Anyone can convert between pUSD and a supported backing asset while that direction is unpaused. Admins can pause either conversion per asset immediately; upgrades to the token or vault must wait 12 hours in the Timelock.\n\nPolymarket uses two connected position systems. Many binary and neg-risk markets are created first in the Conditional Token Framework (CTF), whose share ledger and exchange code cannot be upgraded. Polymarket registers many of the same markets in an upgradeable PositionManager, where they use separate share IDs. Holders can surrender registered CTF shares for the corresponding PositionManager shares, and combination positions are built from PositionManager shares.\n\nOrdinary splitting, merging and redemption preserve the one-for-one backing. In the upgradeable system, however, authorised actors can create outcome shares outside the ordinary split flow, and its outcome logic can mint pUSD when positions are merged or redeemed. A malicious authorised actor or upgrade could therefore create claims against the vault without a matching deposit.\n\n### Trading\n\nThe main CTF venues use a central limit order book: a user signs the assets and amounts they accept, then an operator selects and orders the fills. Combination positions use a request-for-quote venue with the same basic model. An operator cannot forge a user's signature or make the pre-fee exchange rate worse than the signed limit, but it can censor, delay or reorder valid orders.\n\nFees are an exception to the signed terms: the operator supplies them only when settling the trade. The current maximum fee-rate setting on both CTF exchanges is zero, which disables the percentage limit rather than fees themselves. A sell fee can consume all sale proceeds, while a buy fee can charge additional collateral up to the user's balance and allowance. The all-in price can therefore be worse than the signed limit. The combination-position venue currently caps this fee at 10%.\n\nCancellation is normally requested offchain. To stop all of their signed orders onchain, a user can start a pause that currently takes effect after 100 blocks; orders remain fillable during that window. Admins can change the delay for future pauses, from zero to 302,400 blocks, and can pause an entire venue immediately.\n\n### Market creation and resolution\n\nUsers can suggest markets, but Polymarket's markets team decides which ones are listed. Creating a raw oracle question onchain is a separate step: it does not put the market in the product or make an operator trade its shares.\n\nThe main binary and CTF neg-risk markets use a managed UMA optimistic oracle. Only approved Polymarket contracts can request an answer and only whitelisted proposers can submit one. Anyone who supplies the required bond and UMA final fee can dispute an active proposal. Both are paid in the question's collateral token, not in UMA voting power; if there is a dispute, UMA tokenholders vote with UMA voting power. The losing bonded side forfeits its stake after the oracle's fee, and the winner receives the remainder and any reward.\n\nAn answer normally has 2 hours to be challenged, and a custom window cannot be shorter than the current 5 minutes minimum. On the managed oracle, expiry alone is not final: the answer remains disputable until a permissioned resolver settles it. After settlement, anyone can pass the answer to an unpaused market.\n\nIn this integration, the first dispute also restarts the market's resolution. UMA's first vote settles the original bond contest, but the restarted answer must complete its own challenge process before it can decide the market. If that answer is disputed too, it also goes to UMA voting.\n\nPolymarket admins retain direct resolution powers. For the main binary path, they can pause or restart a question and, after 1 hour, choose YES, NO or an even split. A separate binary path permits any nonzero split after 2 days. For CTF neg-risk questions, admins can block the oracle path and force either outcome immediately after flagging the question, including in the same transaction. When a CTF market is registered in PositionManager, anyone can copy its settled CTF result into the corresponding PositionManager market unless an admin has paused it. Other PositionManager markets rely on permissioned reporters, which admins can replace, pause or block per market.\n\n### Hosted wallets\n\nRetail deposits are credited to a smart wallet for each user. Polymarket's relayer submits transactions, but it cannot spend by itself: each batch needs a signature from the wallet owner or an owner-authorised session key. A session key can spend the wallet's assets within the authority granted to it.\n\nAn owner can pause the wallet and, after the current 1h delay, withdraw assets or revoke approvals directly. Pausing does not invalidate otherwise valid signed batches. Admins can immediately change the delay to any positive value up to 7 days, including while an owner is already waiting.\n\nMost wallets follow a shared upgradeable implementation. After pausing and waiting, an owner can opt out and keep the current version instead. Other wallets can be upgraded individually only through an owner-signed action to an implementation approved by the factory.\n\n### Governance and upgrades\n\nA 3/6 Polymarket multisig holds most operational powers. Without the Timelock it can pause collateral conversion and trading, manage operators and fees, change user-pause delays, configure the managed oracle, and appoint resolution actors. The Timelock waits 12 hours before upgrades to the collateral, vault, wallet system or upgradeable position system.\n\nThe CTF share ledger and its two exchanges cannot be upgraded, but their existing operator, fee and pause controls remain immediate. The managed UMA oracle is upgraded outside the Polymarket Timelock by a joint 2/2 multisig requiring both Polymarket and the oracle operators. The immediate CTF neg-risk override is also held by an externally owned account and by OperationsAccount, whose contract code is unverified. The Timelock therefore delays many code changes, but it does not delay powers already granted to admins and operators.",
"links": {
"websites": [
"https://polymarket.com/"
],
"documentation": [
"https://docs.polymarket.com/"
],
"repositories": [
"https://github.com/Polymarket"
],
"socialMedia": [
"https://x.com/Polymarket"
]
},
"references": [
{
"title": "Contract addresses - Polymarket documentation",
"url": "https://docs.polymarket.com/resources/contracts"
},
{
"title": "Market resolution - Polymarket documentation",
"url": "https://docs.polymarket.com/concepts/resolution"
},
{
"title": "How markets are created - Polymarket Help Center",
"url": "https://help.polymarket.com/en/articles/13364541-how-are-markets-created"
}
]
}
[
{
"type": "not-tracked",
"name": "UMA",
"icon": "uma",
"description": "Supplies the optimistic oracle used by CTF-based market questions. Proposals and disputes are bonded and settlement is performed by permissioned resolvers, so a stalled or captured oracle leaves those markets unresolved or resolves them wrongly."
},
{
"type": "tracked",
"projectId": "polygon-pos",
"description": "Its bridge mints the stablecoin that backs essentially all of the collateral token. The bridge contract holding the depositor role can mint that stablecoin without a corresponding deposit, and the token’s proxy admin, also controlled from this chain’s governance, can replace its implementation, which would allow the freeze and pause powers that are currently unset to be reinstated."
},
{
"type": "not-tracked",
"name": "Circle",
"icon": "usdc",
"description": "Issues the reserves held on the token’s home chain that give the bridged stablecoin its value, so a depeg or an action against the escrow there devalues the collateral. Circle holds no role on the bridged token itself: its blacklister, pauser and rescuer roles are empty and there is no admin able to repopulate them."
}
]
tvsInfo+9-0
{
"associatedTokens": [],
"warnings": [
{
"sentiment": "warning",
"value": "The outcome-token ledger is shared infrastructure, so its balance can include markets run by other protocols."
}
]
}
{
"polygonpos": {
"roles": [],
"actors": [
{
"id": "AdminSafe",
"name": "AdminSafe",
"description": "A Multisig with 3/6 threshold. \nMember of SafeL2.\n* Can interact with AddressWhitelist\n * manage the addresses on the whitelist \n* Can interact with ManagedOptimisticOracleV2\n * set the requester and proposer whitelists, the default liveness, the minimum dispute window and the allowed bond ranges, and add or remove request managers \n* Can interact with WrappedCollateral\n * can deposit underlying and mint wrapper units to any recipient, mint units to itself without depositing underlying, burn its own units, and release underlying held by the contract to any recipient. This owner is immutable and cannot be changed [via: NegRiskAdapter]\n* Can interact with UmaCtfAdapterBinary\n * pause, unpause, reset and flag initialized questions, unflag them until the safety period has passed, and resolve a flagged question manually with either outcome or an even split after the 1h safety period \n* Can interact with NegRiskOperator\n * prepare markets and questions, flag or unflag questions to control public resolution, and force an outcome of their choosing on a flagged question after the 0s delay period \n* Can interact with UmaCtfAdapterNegRisk\n * pause, unpause, reset and flag initialized questions, unflag them until the safety period has passed, and resolve a flagged question manually with either outcome or an even split after the 1h safety period \n* Can interact with UmaCtfAdapterLegacy\n * pause, unpause, reset and flag initialized questions, and emergency-resolve a flagged question with any two-value payout array that is not all zeroes after the 2d emergency safety period \n* Can interact with NegRiskFeeVault\n * can transfer any ERC20 or ERC1155 balance out of the vault to any recipient with no delay, and add or remove admins \n* Can interact with CTFExchange\n * manage admins and operators, pause and unpause all trading, and set the fee receiver, the maximum fee rate and the user-pause interval \n* Can interact with NegRiskCtfExchange\n * manage admins and operators, pause and unpause all trading, and set the fee receiver, the maximum fee rate and the user-pause interval ",
"accounts": [
{
"address": "matic:0x3dcE0a29139A851Da1dFCa56Af8e8a6440b4D952",
"type": "Contract",
"isVerified": true,
"name": "0x3dcE…D952",
"url": "https://polygonscan.com/address/0x3dcE0a29139A851Da1dFCa56Af8e8a6440b4D952"
}
],
"chain": "polygonpos",
"references": [],
"participants": [
{
"address": "matic:0xdCCd5D77a0d15ba3c6A5904869a266181A8f3a33",
"type": "EOA",
"isVerified": true,
"name": "0xdCCd…3a33",
"url": "https://polygonscan.com/address/0xdCCd5D77a0d15ba3c6A5904869a266181A8f3a33"
},
{
"address": "matic:0x687c423646a4fAe6561908cFC28265f73f95B32F",
"type": "EOA",
"isVerified": true,
"name": "0x687c…B32F",
"url": "https://polygonscan.com/address/0x687c423646a4fAe6561908cFC28265f73f95B32F"
},
{
"address": "matic:0xdBa96793A909415b0748F48626Cf207B7E1a887F",
"type": "EOA",
"isVerified": true,
"name": "0xdBa9…887F",
"url": "https://polygonscan.com/address/0xdBa96793A909415b0748F48626Cf207B7E1a887F"
},
{
"address": "matic:0xd4848eFD79bD87B54f499bD087810E9F6Dab9FF1",
"type": "EOA",
"isVerified": true,
"name": "0xd484…9FF1",
"url": "https://polygonscan.com/address/0xd4848eFD79bD87B54f499bD087810E9F6Dab9FF1"
},
{
"address": "matic:0xD09b1E6F140fC3D602AD9984A4De5005D9F5279E",
"type": "EOA",
"isVerified": true,
"name": "0xD09b…279E",
"url": "https://polygonscan.com/address/0xD09b1E6F140fC3D602AD9984A4De5005D9F5279E"
},
{
"address": "matic:0x00447A08bf275b7FB3D5d832387a54Be1090d281",
"type": "EOA",
"isVerified": true,
"name": "0x0044…d281",
"url": "https://polygonscan.com/address/0x00447A08bf275b7FB3D5d832387a54Be1090d281"
}
],
"discoveryDrivenData": true
},
{
"id": "GovernorChildTunnel",
"name": "GovernorChildTunnel",
"accounts": [
{
"address": "matic:0xb4AeaD497FCbEAA3C37919032d42C29682f46376",
"type": "Contract",
"isVerified": true,
"name": "0xb4Ae…6376",
"url": "https://polygonscan.com/address/0xb4AeaD497FCbEAA3C37919032d42C29682f46376"
}
],
"chain": "polygonpos",
"description": "* Can interact with Finder\n * manage address mappings \n* Can interact with AddressWhitelist\n * manage the addresses on the whitelist \n* Can interact with IdentifierWhitelist\n * manage the whitelist \n* Can interact with Store\n * set fees for disputes and manage all roles in the contract ",
"discoveryDrivenData": true
},
{
"id": "GnosisSafeL2",
"name": "GnosisSafeL2",
"description": "A Multisig with 2/4 threshold. \nMember of SafeL2.\n* Can interact with ManagedOptimisticOracleV2\n * add and remove resolvers and resolver admins \n* Can interact with AddressWhitelist\n * manage the addresses on the whitelist ",
"accounts": [
{
"address": "matic:0x6ee4D971142afadEa1828445124D6137080B4146",
"type": "Contract",
"isVerified": true,
"name": "0x6ee4…4146",
"url": "https://polygonscan.com/address/0x6ee4D971142afadEa1828445124D6137080B4146"
}
],
"chain": "polygonpos",
"references": [],
"participants": [
{
"address": "matic:0x72b32C1a6A75CBAfAe36c0CA8e763946d370E766",
"type": "EOA",
"isVerified": true,
"name": "0x72b3…E766",
"url": "https://polygonscan.com/address/0x72b32C1a6A75CBAfAe36c0CA8e763946d370E766"
},
{
"address": "matic:0x837219D7a9C666F5542c4559Bf17D7B804E5c5fe",
"type": "EOA",
"isVerified": true,
"name": "0x8372…c5fe",
"url": "https://polygonscan.com/address/0x837219D7a9C666F5542c4559Bf17D7B804E5c5fe"
},
{
"address": "matic:0x363605C0bdE9F1F5053aDA30618d95dbFc109Bf5",
"type": "EOA",
"isVerified": true,
"name": "0x3636…9Bf5",
"url": "https://polygonscan.com/address/0x363605C0bdE9F1F5053aDA30618d95dbFc109Bf5"
},
{
"address": "matic:0xcc400c09ecBAC3e0033e4587BdFAABB26223e37d",
"type": "EOA",
"isVerified": true,
"name": "0xcc40…e37d",
"url": "https://polygonscan.com/address/0xcc400c09ecBAC3e0033e4587BdFAABB26223e37d"
}
],
"discoveryDrivenData": true
},
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 2/2 threshold. \n* Can upgrade **with no delay**\n * ManagedOptimisticOracleV2 ",
"accounts": [
{
"address": "matic:0x7FB4492Ff58E4326a99D7d4F66aE1f47c8286Fc6",
"type": "Contract",
"isVerified": true,
"name": "0x7FB4…6Fc6",
"url": "https://polygonscan.com/address/0x7FB4492Ff58E4326a99D7d4F66aE1f47c8286Fc6"
}
],
"chain": "polygonpos",
"references": [],
"participants": [
{
"address": "matic:0x3dcE0a29139A851Da1dFCa56Af8e8a6440b4D952",
"type": "Contract",
"isVerified": true,
"name": "AdminSafe",
"url": "#AdminSafe"
},
{
"address": "matic:0x6ee4D971142afadEa1828445124D6137080B4146",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafeL2",
"url": "#GnosisSafeL2"
}
],
"discoveryDrivenData": true
},
{
"id": "Timelock",
"name": "Timelock",
"accounts": [
{
"address": "matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C",
"type": "Contract",
"isVerified": true,
"name": "0x47Eb…629C",
"url": "https://polygonscan.com/address/0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
}
],
"chain": "polygonpos",
"description": "Timelock with enumerable roles: proposers queue batches with a delay of at least 12h and executors run them once it elapses. Role grants are not delayed, so an admin can install new proposers, executors or cancellers instantly.\n* Can upgrade **with no delay**\n * DepositWalletFactory \n * PositionManager \n * BinaryModule \n * NegRiskModule \n * CombinatorialModule \n * DepositWalletBeacon \n * AutoRedeemer \n * CollateralToken \n * CollateralVault \n * CombosExchange \n* Can interact with CollateralOfframp\n * can grant and revoke the admin role that can pause unwrapping of supported assets through this contract with no delay \n* Can interact with CollateralOnramp\n * can grant and revoke the admin role that pauses wrapping through this contract \n* Can interact with CtfCollateralAdapter\n * can grant and revoke the admin role that can pause splitting, merging and redeeming through this contract with no delay \n* Can interact with CtfCollateralAdapter2\n * can grant and revoke the admin role that can pause splitting, merging and redeeming through this contract with no delay \n* Can interact with NegRiskCtfCollateralAdapter\n * can grant and revoke the admin role that can pause splitting, merging, redeeming and converting through this contract with no delay \n* Can interact with NegRiskCtfCollateralAdapter2\n * can grant and revoke the admin role that can pause splitting, merging, redeeming and converting through this contract with no delay \n* Can interact with PermissionedRamp\n * can grant and revoke the admin and witness roles; admins can pause wrapping and unwrapping through this contract with no delay, witnesses co-sign every operation ",
"discoveryDrivenData": true
},
{
"id": "UmaCtfAdapterNegRisk",
"name": "UmaCtfAdapterNegRisk",
"accounts": [
{
"address": "matic:0x69c47De9D4D3Dad79590d61b9e05918E03775f24",
"type": "Contract",
"isVerified": true,
"name": "0x69c4…5f24",
"url": "https://polygonscan.com/address/0x69c47De9D4D3Dad79590d61b9e05918E03775f24"
}
],
"chain": "polygonpos",
"description": "Resolution adapter registering market questions with an UMA optimistic oracle and reporting settled answers to the outcome-token ledger. Anyone can call initialize, but the adapter is the requester seen by the oracle, and the oracle's own access controls determine who may propose and settle the answer. After the oracle has settled an answer, anyone can call resolve to copy it into the outcome-token ledger unless an admin has paused the question. Admins can pause, unpause, reset or flag initialized questions, unflag them until the safety period has passed, and after 1h manually resolve a flagged question with either outcome or an even split.\n* Can interact with NegRiskOperator\n * report the boolean outcome of any prepared question ",
"discoveryDrivenData": true
},
{
"id": "OperationsAccount",
"name": "OperationsAccount",
"accounts": [
{
"address": "matic:0xAC9930b2AE455a671b62dE86876A7e8587825294",
"type": "Contract",
"isVerified": false,
"name": "0xAC99…5294",
"url": "https://polygonscan.com/address/0xAC9930b2AE455a671b62dE86876A7e8587825294"
}
],
"chain": "polygonpos",
"description": "* Can interact with NegRiskOperator\n * prepare markets and questions, flag or unflag questions to control public resolution, and force an outcome of their choosing on a flagged question after the 0s delay period ",
"discoveryDrivenData": true
},
{
"id": "FeeReceiverSafe",
"name": "FeeReceiverSafe",
"description": "A Multisig with 3/6 threshold. ",
"accounts": [
{
"address": "matic:0x115F48DC2A731aA16251c6d6e1BEfC42f92Accc9",
"type": "Contract",
"isVerified": true,
"name": "0x115F…ccc9",
"url": "https://polygonscan.com/address/0x115F48DC2A731aA16251c6d6e1BEfC42f92Accc9"
}
],
"chain": "polygonpos",
"references": [],
"participants": [
{
"address": "matic:0xD09b1E6F140fC3D602AD9984A4De5005D9F5279E",
"type": "EOA",
"isVerified": true,
"name": "0xD09b…279E",
"url": "https://polygonscan.com/address/0xD09b1E6F140fC3D602AD9984A4De5005D9F5279E"
},
{
"address": "matic:0xdCCd5D77a0d15ba3c6A5904869a266181A8f3a33",
"type": "EOA",
"isVerified": true,
"name": "0xdCCd…3a33",
"url": "https://polygonscan.com/address/0xdCCd5D77a0d15ba3c6A5904869a266181A8f3a33"
},
{
"address": "matic:0x687c423646a4fAe6561908cFC28265f73f95B32F",
"type": "EOA",
"isVerified": true,
"name": "0x687c…B32F",
"url": "https://polygonscan.com/address/0x687c423646a4fAe6561908cFC28265f73f95B32F"
},
{
"address": "matic:0xdBa96793A909415b0748F48626Cf207B7E1a887F",
"type": "EOA",
"isVerified": true,
"name": "0xdBa9…887F",
"url": "https://polygonscan.com/address/0xdBa96793A909415b0748F48626Cf207B7E1a887F"
},
{
"address": "matic:0x80AbC332FD22e06B74eA1e248FD3D60fb94a855A",
"type": "EOA",
"isVerified": true,
"name": "0x80Ab…855A",
"url": "https://polygonscan.com/address/0x80AbC332FD22e06B74eA1e248FD3D60fb94a855A"
},
{
"address": "matic:0x00447A08bf275b7FB3D5d832387a54Be1090d281",
"type": "EOA",
"isVerified": true,
"name": "0x0044…d281",
"url": "https://polygonscan.com/address/0x00447A08bf275b7FB3D5d832387a54Be1090d281"
}
],
"discoveryDrivenData": true
},
{
"id": "GnosisSafeL2",
"name": "GnosisSafeL2",
"description": "A Multisig with 1/1 threshold. ",
"accounts": [
{
"address": "matic:0xC193b33ff5E8A68F422a5d36A2dEf1D196b15160",
"type": "Contract",
"isVerified": true,
"name": "0xC193…5160",
"url": "https://polygonscan.com/address/0xC193b33ff5E8A68F422a5d36A2dEf1D196b15160"
}
],
"chain": "polygonpos",
"references": [],
"participants": [
{
"address": "matic:0x21aF9d975CcebACcdA5c2E4d2fFB28b27679CC43",
"type": "EOA",
"isVerified": true,
"name": "0x21aF…CC43",
"url": "https://polygonscan.com/address/0x21aF9d975CcebACcdA5c2E4d2fFB28b27679CC43"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "matic:0x798048175D5Cfdc47abC72409789431191405e96",
"type": "EOA",
"isVerified": true,
"name": "0x7980…5e96",
"url": "https://polygonscan.com/address/0x798048175D5Cfdc47abC72409789431191405e96",
"displayName": "EOA 1"
}
],
"chain": "polygonpos",
"description": "* Can interact with ProxyWalletFactory\n * can replace the gas-relay module, whose code is executed via delegatecall in this contract's context when processing relayed calls, and transfer or renounce ownership ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "matic:0x2bAaA41d155ad8a4126184950B31F50A1513cE25",
"type": "EOA",
"isVerified": true,
"name": "0x2bAa…cE25",
"url": "https://polygonscan.com/address/0x2bAaA41d155ad8a4126184950B31F50A1513cE25",
"displayName": "EOA 2"
}
],
"chain": "polygonpos",
"description": "* Can interact with Store\n * withdraw fees ",
"discoveryDrivenData": true
},
{
"id": "EOA-3-and-EOA-4",
"name": "EOA 3 and EOA 4",
"accounts": [
{
"address": "matic:0x33965F7D08F61A62B86C1Ab9Be5d82C42F4c3081",
"type": "EOA",
"isVerified": true,
"name": "0x3396…3081",
"url": "https://polygonscan.com/address/0x33965F7D08F61A62B86C1Ab9Be5d82C42F4c3081",
"displayName": "EOA 3"
},
{
"address": "matic:0x9725e8172A108f2BaD87ef31eA4Ea729e939d869",
"type": "EOA",
"isVerified": true,
"name": "0x9725…d869",
"url": "https://polygonscan.com/address/0x9725e8172A108f2BaD87ef31eA4Ea729e939d869",
"displayName": "EOA 4"
}
],
"chain": "polygonpos",
"description": "* Can interact with ManagedOptimisticOracleV2\n * settle price requests. Settlement is restricted to this role, so no request becomes final without a resolver, and disputes stay possible until a resolver settles ",
"discoveryDrivenData": true
},
{
"id": "EOA-5",
"name": "EOA 5",
"accounts": [
{
"address": "matic:0xf4C89FCbeF0DBBa52bfe773BdAB56e8c2c9a7D41",
"type": "EOA",
"isVerified": true,
"name": "0xf4C8…7D41",
"url": "https://polygonscan.com/address/0xf4C89FCbeF0DBBa52bfe773BdAB56e8c2c9a7D41",
"displayName": "EOA 5"
}
],
"chain": "polygonpos",
"description": "* Can interact with ManagedOptimisticOracleV2\n * set per-request proposer whitelists, bond amounts (within the allowed range) and liveness values ",
"discoveryDrivenData": true
},
{
"id": "EOA-6",
"name": "EOA 6",
"accounts": [
{
"address": "matic:0x0000000000000000000000000000000000000000",
"type": "EOA",
"isVerified": true,
"name": "0x0000…0000",
"url": "https://polygonscan.com/address/0x0000000000000000000000000000000000000000",
"displayName": "EOA 6"
}
],
"chain": "polygonpos",
"description": "* Can upgrade **with no delay**\n * OperationsAccount \n * CollateralVault \n* Can interact with USD Coin Token\n * transfer any ERC-20 tokens out of the contract ",
"discoveryDrivenData": true
},
{
"id": "EOA-7",
"name": "EOA 7",
"accounts": [
{
"address": "matic:0x748b17c94c95B9264861cc86175306009921ef65",
"type": "EOA",
"isVerified": true,
"name": "0x748b…ef65",
"url": "https://polygonscan.com/address/0x748b17c94c95B9264861cc86175306009921ef65",
"displayName": "EOA 7"
}
],
"chain": "polygonpos",
"description": "* Can interact with UmaCtfAdapterLegacy\n * pause, unpause, reset and flag initialized questions, and emergency-resolve a flagged question with any two-value payout array that is not all zeroes after the 2d emergency safety period ",
"discoveryDrivenData": true
},
{
"id": "EOA-8",
"name": "EOA 8",
"accounts": [
{
"address": "matic:0xDa64c7886E71D1bA1E1be0bd1546A16a289fFdE0",
"type": "EOA",
"isVerified": true,
"name": "0xDa64…FdE0",
"url": "https://polygonscan.com/address/0xDa64c7886E71D1bA1E1be0bd1546A16a289fFdE0",
"displayName": "EOA 8"
}
],
"chain": "polygonpos",
"description": "* Can interact with NegRiskOperator\n * prepare markets and questions, flag or unflag questions to control public resolution, and force an outcome of their choosing on a flagged question after the 0s delay period ",
"discoveryDrivenData": true
}
]
}
}
contracts+904-0
{
"addresses": {
"polygonpos": [
{
"name": "WrappedCollateral",
"isVerified": true,
"address": "matic:0x3A3BD7bb9528E159577F7C2e685CC81A765002E2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "ERC20 wrapper around an immutable underlying token. Its immutable owner is the deployer. Anyone can burn their wrapper units to send an equal amount of underlying to any recipient; only the owner can wrap, mint without depositing underlying, burn its own units, and release underlying held by the contract.\n* Roles:\n * **owner**: NegRiskAdapter; ultimately AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x3A3BD7bb9528E159577F7C2e685CC81A765002E2#code"
},
{
"name": "ProxyWallet",
"isVerified": true,
"address": "matic:0x44e999d5c2F66Ef0861317f9A4805AC2e90aEB4f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Initializable wallet whose initialize() function assigns its caller as owner while the owner slot is still empty. The stored owner can execute batches of arbitrary calls or delegatecalls; delegatecalls run in the wallet's context and can modify its storage, including the owner slot.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x44e999d5c2F66Ef0861317f9A4805AC2e90aEB4f#code"
},
{
"name": "ConditionalTokens",
"isVerified": true,
"address": "matic:0x4D97DCd97eC945f40cF65F87097ACe5EA0476045",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Immutable, adminless ERC1155 ledger of conditional outcome tokens: anyone can split collateral into a complete outcome set, merge it back, or redeem after resolution. Only the oracle named at preparation can report payouts, and reports are write-once.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x4D97DCd97eC945f40cF65F87097ACe5EA0476045#code"
},
{
"name": "NegRiskFeeVault",
"isVerified": true,
"address": "matic:0x7f67327E88c258932D7d8f72950bE0d46975E11D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Vault that can hold arbitrary ERC20 and ERC1155 tokens. Admins can transfer any balance to any recipient at any time, with no delay.\n* Roles:\n * **admins**: AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x7f67327E88c258932D7d8f72950bE0d46975E11D#code"
},
{
"name": "SafeProxyFactory",
"isVerified": true,
"address": "matic:0xaacFeEa03eb1561C4e67d661e40682Bd20E3541b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Deterministic factory for single-owner Safe proxies. Anyone can submit an EIP-712 creation signature to deploy a wallet owned by the recovered signer at an address derived from that signer.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xaacFeEa03eb1561C4e67d661e40682Bd20E3541b#code"
},
{
"name": "ProxyWalletFactory",
"isVerified": true,
"address": "matic:0xaB45c5A4B0c941a2F231C04C3f49182e1A254052",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Deterministic factory that associates each effective caller with one minimal-proxy wallet and forwards batched calls to it. The constructor deploys and stores the wallet implementation, with no direct setter. The owner can replace the gas-relay module, whose code executes by delegatecall and can modify factory storage.\n* Roles:\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xaB45c5A4B0c941a2F231C04C3f49182e1A254052#code"
},
{
"name": "ProxyWallet",
"isVerified": true,
"address": "matic:0xB7B9D7c6627714523F2Bf612Ef8AE17Fc77A19D0",
"upgradeability": {
"proxyType": "EIP1167 proxy",
"admins": [],
"implementations": [
"matic:0x44e999d5c2F66Ef0861317f9A4805AC2e90aEB4f"
]
},
"chain": "polygonpos",
"description": "Initializable wallet whose initialize() function assigns its caller as owner while the owner slot is still empty. The stored owner can execute batches of arbitrary calls or delegatecalls; delegatecalls run in the wallet's context and can modify its storage, including the owner slot.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xB7B9D7c6627714523F2Bf612Ef8AE17Fc77A19D0#code"
},
{
"name": "NegRiskAdapter",
"isVerified": true,
"address": "matic:0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Immutable adapter composing binary conditions into multi-outcome (negative-risk) markets and acting as the on-ledger oracle for them. Split, merge, redeem and conversion functions have no caller restriction; conversions can charge a per-market fee that accrues to a fixed vault.\n* Roles:\n * **admins**: AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296#code"
},
{
"name": "CTFExchange",
"isVerified": true,
"address": "matic:0xE111180000d2663C0091e4f400237545B87B996B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Exchange settling EIP-712 signed limit orders that are matched off-chain by operator-role holders, who also choose the fee on each fill. The fee is not part of the signed order and is checked against an admin-configurable rate limit, currently 0 bps. A zero rate means fees have no percentage cap, not that fees are zero: an operator can charge up to all proceeds on a sell or collect an additional amount from a buyer, subject to the buyer's balance and allowance. Users can pause settlement of all their orders, effective after 100 blocks, an interval the admins can change.\n* Roles:\n * **admin**: AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xE111180000d2663C0091e4f400237545B87B996B#code"
},
{
"name": "NegRiskCtfExchange",
"isVerified": true,
"address": "matic:0xe2222d279d744050d28e00520010520000310F59",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Exchange settling EIP-712 signed limit orders that are matched off-chain by operator-role holders, who also choose the fee on each fill. The fee is not part of the signed order and is checked against an admin-configurable rate limit, currently 0 bps. A zero rate means fees have no percentage cap, not that fees are zero: an operator can charge up to all proceeds on a sell or collect an additional amount from a buyer, subject to the buyer's balance and allowance. Users can pause settlement of all their orders, effective after 100 blocks, an interval the admins can change.\n* Roles:\n * **admin**: AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xe2222d279d744050d28e00520010520000310F59#code"
},
{
"name": "Finder",
"isVerified": true,
"address": "matic:0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Maps interface names to contract addresses (UMA protocol contracts).\n* Roles:\n * **owner**: GovernorChildTunnel",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64#code"
},
{
"name": "AddressWhitelist",
"isVerified": true,
"address": "matic:0x0f79d0039956D58a7d5d006a6Dd64a35616Aa2c6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Owner-managed address whitelist. Other contracts can query whether an address is listed; the whitelist itself does not assign a meaning to the listed addresses.\n* Roles:\n * **owner**: AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x0f79d0039956D58a7d5d006a6Dd64a35616Aa2c6#code"
},
{
"name": "AddressWhitelist",
"isVerified": true,
"address": "matic:0x1020Ae36548ab28Bc0c41Fd2a08D24132C82cc55",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Owner-managed address whitelist. Other contracts can query whether an address is listed; the whitelist itself does not assign a meaning to the listed addresses.\n* Roles:\n * **owner**: GovernorChildTunnel",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x1020Ae36548ab28Bc0c41Fd2a08D24132C82cc55#code"
},
{
"name": "IdentifierWhitelist",
"isVerified": true,
"address": "matic:0x2271a5E74eA8A29764ab10523575b41AA52455f0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Keeps the list of identifiers that UMA oracle contracts accept for price requests.\n* Roles:\n * **owner**: GovernorChildTunnel",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x2271a5E74eA8A29764ab10523575b41AA52455f0#code"
},
{
"name": "ManagedOptimisticOracleV2",
"isVerified": true,
"address": "matic:0x2C0367a9DB231dDeBd88a94b4f6461a6e47C58B1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x7FB4492Ff58E4326a99D7d4F66aE1f47c8286Fc6"
],
"implementations": [
"matic:0x7d660195eD02AC61A42408780233F06dDd6A2E42"
]
},
"chain": "polygonpos",
"pastUpgrades": [
{
"timestamp": 1754072848,
"transactionHash": "0xf0aae9bf015ea6e7a9bb2c7060b54d6f3d33fcab53058d938181899f46fc548e",
"implementations": [
"matic:0x3555e39A1264f5f8Febc129eBBb909F3Ea299936"
]
},
{
"timestamp": 1771942276,
"transactionHash": "0x1d8bd576695577355474e05fc6b7676e4c9f9f310c682e70f2464afeea1fc235",
"implementations": [
"matic:0x7d660195eD02AC61A42408780233F06dDd6A2E42"
]
}
],
"description": "Managed variant of the UMA Optimistic Oracle V2 that acts as an escalation layer before UMA's DVM. Only whitelisted requesters can create price requests. Both the proposal submitter and credited proposer must pass the effective proposer whitelist, which can be overridden per request. Anyone can dispute an active proposal by posting the required bond, but only a resolver-role holder can settle the request. The proposal liveness defaults to 2h, with a minimum dispute window of 5m. Because settlement is permissioned, a proposal that outlives its liveness window does not become final on its own and can still be disputed until a resolver settles it. Roles (OpenZeppelin AccessControl): the default admin can upgrade the contract and manage the config admin role; the config admin sets the requester and default proposer whitelists, the default liveness, the minimum dispute window and the allowed bond ranges, and manages request managers; request managers set per-request proposer whitelists, bonds and liveness; the self-governing resolver admin manages resolvers.\n* Roles:\n * **configAdmins**: AdminSafe\n * **defaultAdmin**: SafeL2\n * **requestManagers**: EOA 5\n * **resolverAdmins**: GnosisSafeL2\n * **resolvers**: EOA 3, EOA 4",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x2C0367a9DB231dDeBd88a94b4f6461a6e47C58B1#code"
},
{
"name": "AddressWhitelist",
"isVerified": true,
"address": "matic:0x9F35885CE8f67a942D7B2f4Fbf937987DA08c463",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Owner-managed address whitelist. Other contracts can query whether an address is listed; the whitelist itself does not assign a meaning to the listed addresses.\n* Roles:\n * **owner**: GnosisSafeL2",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x9F35885CE8f67a942D7B2f4Fbf937987DA08c463#code"
},
{
"name": "Store",
"isVerified": true,
"address": "matic:0xE58480CA74f1A819faFd777BEDED4E2D5629943d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "UMA protocol contract responsible for calculating and collecting regular and final fees for using the DVM.\n* Roles:\n * **owner**: GovernorChildTunnel\n * **withdrawer**: EOA 2",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xE58480CA74f1A819faFd777BEDED4E2D5629943d#code"
},
{
"name": "OptimisticOracleV2",
"isVerified": true,
"address": "matic:0xeE3Afe347D5C74317041E2618C49534dAf887c24",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Standard UMA Optimistic Oracle V2 with no caller allowlist. Anyone can request a price using a supported identifier and collateral, propose an answer by posting a bond, or dispute a proposal within its liveness window (2h by default, customizable per request). Undisputed proposals become final and settleable once the liveness window has passed, while disputes are escalated to UMA's DVM, where UMA token holders vote on the outcome and the loser's bond is partly awarded to the winner.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xeE3Afe347D5C74317041E2618C49534dAf887c24#code"
},
{
"name": "DepositWalletFactory",
"isVerified": true,
"address": "matic:0x00000000000Fb5C9ADea0298D729A0CB3823Cc07",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x528CC05EFac2B0d255e423272187efD41248aBd7"
]
},
"chain": "polygonpos",
"pastUpgrades": [
{
"timestamp": 1782735592,
"transactionHash": "0x48443fe1047ebf8c2d3a41897ac925bd35ddb8a6cce82d751e66537f8aaf9c68",
"implementations": [
"matic:0x848EEB1a79A8D0FD964e3386db6DA400c22D278d"
]
},
{
"timestamp": 1783366135,
"transactionHash": "0x1a8ee92e3414e30962ea1db95100048ed0f028247e0991c4fd9149edc179fd28",
"implementations": [
"matic:0x528CC05EFac2B0d255e423272187efD41248aBd7"
]
}
],
"description": "Upgradeable CREATE2 wallet factory. Operator-role holders deploy deterministic beacon-proxy wallets and relay signed call batches; legacy-deployer-role holders can separately deploy deterministic legacy UUPS wallets. Admins manage both roles and set the 1h delay that wallet owners must wait after pausing before withdrawals unlock.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x00000000000Fb5C9ADea0298D729A0CB3823Cc07#code"
},
{
"name": "PositionManager",
"isVerified": true,
"address": "matic:0x006F54F7f9A22e0000CC2AB60031000000ae9fEF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x30c038F0Dae8dcC3E6AD51D016F50821D32Cb87e"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "Upgradeable ERC1155 ledger of combination-outcome positions, mintable and burnable only by the outcome module registered for each position or a cross-authorised module. Admins can register or remove modules and grant registered modules cross-module mint and burn power.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x006F54F7f9A22e0000CC2AB60031000000ae9fEF#code"
},
{
"name": "BinaryModule",
"isVerified": true,
"address": "matic:0x1000008dD9001B968442c1000017eaE6E0dA00Ba",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x492FEc596eC347459E1Ebe30b9245EB3B49B1BBa"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "Upgradeable outcome module for two-sided markets. Split, merge and redemption functions have no caller restriction. Bridge-role holders can mint positions without collateral backing, while resolver-role holders can report results directly, bypassing the oracle path; admins can pause reporting by a resolver or for a condition.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x1000008dD9001B968442c1000017eaE6E0dA00Ba#code"
},
{
"name": "NegRiskModule",
"isVerified": true,
"address": "matic:0x200000900045e3B6259600682756002200028933",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0xA61e7ca374F721D5b9FD5b0FEe6Fb90f27d448d7"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "Upgradeable outcome module for multi-outcome (negative-risk) markets. Split, merge, redemption and event-level conversion functions have no caller restriction. Bridge-role holders can mint positions without collateral backing, while resolver-role holders can report results directly, bypassing the oracle path; admins can pause reporting by a resolver or for a condition.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x200000900045e3B6259600682756002200028933#code"
},
{
"name": "USD Coin (PoS) Token",
"isVerified": true,
"address": "matic:0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"matic:0x355b8E02e7F5301E6fac9b7cAc1D6D9c86C0343f"
],
"implementations": [
"matic:0xDD9185DB084f5C4fFf3b4f70E7bA62123b812226"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174#code"
},
{
"name": "CollateralOfframp",
"isVerified": true,
"address": "matic:0x2957922Eb93258b93368531d39fAcCA3B4dC5854",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Lets anyone burn collateral tokens and release an equal amount of a supported asset from the configured collateral token's vault while that asset is not paused. Admins can pause or unpause unwrapping per asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x2957922Eb93258b93368531d39fAcCA3B4dC5854#code"
},
{
"name": "CombinatorialModule",
"isVerified": true,
"address": "matic:0x30000034706C7d8e12009DAB006Be20000c031A8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x03CC063e6F9552E3842136538092134EdC8962DE"
]
},
"chain": "polygonpos",
"pastUpgrades": [
{
"timestamp": 1784559717,
"transactionHash": "0xcae78c765d0f7b811bcc6434d9079a1b8aedb749c39fb9c87c49ce58b68b70d9",
"implementations": [
"matic:0x03CC063e6F9552E3842136538092134EdC8962DE"
]
}
],
"description": "Upgradeable outcome module for combinatorial positions built from legs of other modules; payouts derive from the legs' resolved payouts. Position preparation, transformation and redemption functions have no caller restriction. Bridge-role holders can mint positions without collateral backing.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x30000034706C7d8e12009DAB006Be20000c031A8#code"
},
{
"name": "USD Coin Token",
"isVerified": true,
"address": "matic:0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"upgradeability": {
"proxyType": "ZeppelinOS proxy",
"admins": [
"matic:0x9238E612387eBBA4D4Fa0d76DbFbA99b453417b3"
],
"implementations": [
"matic:0x235AE97b28466Db30469b89A9fe4cFf0659f82Cb"
],
"immutable": false
},
"chain": "polygonpos",
"pastUpgrades": [
{
"timestamp": 1702577308,
"transactionHash": "0x31b67b0b97abd94f532654a8e750eb82f29bd2aec6399e680ad1a55daa402a52",
"implementations": [
"matic:0x235AE97b28466Db30469b89A9fe4cFf0659f82Cb"
]
}
],
"description": "* Roles:\n * **rescuer**: EOA 6",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359#code"
},
{
"name": "DepositWallet",
"isVerified": true,
"address": "matic:0x58CA52ebe0DadfdF531Cde7062e76746de4Db1eB",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Smart-wallet implementation for factory-deployed proxies. Only the configured factory can submit call batches, which require an EIP-712 signature from the owner or an unexpired session signer. The owner can pause the wallet and, after the factory-configured delay, withdraw assets and revoke token approvals.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x58CA52ebe0DadfdF531Cde7062e76746de4Db1eB#code"
},
{
"name": "UmaCtfAdapterBinary",
"isVerified": true,
"address": "matic:0x65070BE91477460D8A7AeEb94ef92fe056C2f2A7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Resolution adapter registering market questions with an UMA optimistic oracle and reporting settled answers to the outcome-token ledger. Anyone can call initialize, but the adapter is the requester seen by the oracle, and the oracle's own access controls determine who may propose and settle the answer. After the oracle has settled an answer, anyone can call resolve to copy it into the outcome-token ledger unless an admin has paused the question. Admins can pause, unpause, reset or flag initialized questions, unflag them until the safety period has passed, and after 1h manually resolve a flagged question with either outcome or an even split.\n* Roles:\n * **admins**: AdminSafe",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x65070BE91477460D8A7AeEb94ef92fe056C2f2A7#code"
},
{
"name": "NegRiskOperator",
"isVerified": true,
"address": "matic:0x661992aebf6BecF7BA5abB66f6b0Bf62Aa7a2E93",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Permissioned operator between the resolution adapter and the multi-outcome adapter. Anyone can finalize an unflagged reported question after 0s; admins can flag or unflag a question and force an outcome of their choosing after the same delay. This implementation hardcodes the delay to zero, so it enforces no waiting time after reporting or flagging.\n* Roles:\n * **admins**: AdminSafe, EOA 8, OperationsAccount\n * **oracle**: UmaCtfAdapterNegRisk",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x661992aebf6BecF7BA5abB66f6b0Bf62Aa7a2E93#code"
},
{
"name": "UmaCtfAdapterLegacy",
"isVerified": true,
"address": "matic:0x6A9D222616C90FcA5754cd1333cFD9b7fb6a4F74",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Resolution adapter registering binary questions with an UMA optimistic oracle and reporting settled answers to an outcome-token ledger. Anyone can initialize a question and resolve it when an oracle price is available unless an admin has paused it. Admins can pause, unpause, reset or flag initialized questions. A flagged question cannot be unflagged and, after 2d, can be resolved by an admin with any two-value payout array that is not all zeroes.\n* Roles:\n * **admins**: AdminSafe, EOA 7",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x6A9D222616C90FcA5754cd1333cFD9b7fb6a4F74#code"
},
{
"name": "DepositWalletBeacon",
"isVerified": true,
"address": "matic:0x7A18EDfe055488A3128f01F563e5B479D92ffc3a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Beacon with an owner-controlled default wallet implementation and per-caller implementation pins. Its owner can replace the default implementation in one transaction; callers can pin themselves to the current default and later rejoin default upgrades.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x7A18EDfe055488A3128f01F563e5B479D92ffc3a#code"
},
{
"name": "FxChild",
"isVerified": true,
"address": "matic:0x8397259c983751DAf40400790063935a11afa28a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x8397259c983751DAf40400790063935a11afa28a#code"
},
{
"name": "CollateralOnramp",
"isVerified": true,
"address": "matic:0x93070a847efEf7F70739046A929D47a521F5B8ee",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Lets anyone deposit an asset supported by the configured collateral token and mint an equal amount of collateral tokens while that asset is not paused. Admins can pause or unpause wrapping per asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0x93070a847efEf7F70739046A929D47a521F5B8ee#code"
},
{
"name": "AutoRedeemer",
"isVerified": true,
"address": "matic:0xa1200000d0002264C9a1698e001292D00E1b00af",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x64860bFD14fCcaAc09cd36f347784a9616AfB66C"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "Upgradeable helper that batch-redeems resolved positions for users who approved it on the relevant ERC1155 ledger. Operator-role holders choose which approved positions to redeem and when, but the current implementation always sends proceeds to the position owner.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xa1200000d0002264C9a1698e001292D00E1b00af#code"
},
{
"name": "OracleChildTunnel",
"isVerified": true,
"address": "matic:0xac60353a54873c446101216829a6A98cDbbC3f3D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xac60353a54873c446101216829a6A98cDbbC3f3D#code"
},
{
"name": "CtfCollateralAdapter",
"isVerified": true,
"address": "matic:0xADa100874d00e3331D00F2007a9c336a65009718",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Adapter letting anyone split wrapped collateral into outcome positions, merge, or redeem on the conditional-token ledger while the underlying asset is not paused. It unwraps and re-wraps in the same call and cannot redirect funds to third parties. Admins can pause or unpause all operations, including redemptions, per asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xADa100874d00e3331D00F2007a9c336a65009718#code"
},
{
"name": "CtfCollateralAdapter2",
"isVerified": true,
"address": "matic:0xAdA100Db00Ca00073811820692005400218FcE1f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Adapter letting anyone split wrapped collateral into outcome positions, merge, or redeem on the conditional-token ledger while the underlying asset is not paused. It unwraps and re-wraps in the same call and cannot redirect funds to third parties. Admins can pause or unpause all operations, including redemptions, per asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xAdA100Db00Ca00073811820692005400218FcE1f#code"
},
{
"name": "NegRiskCtfCollateralAdapter",
"isVerified": true,
"address": "matic:0xAdA200001000ef00D07553cEE7006808F895c6F1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Adapter letting anyone split, merge, redeem or convert wrapped collateral into multi-outcome positions while the underlying asset is not paused. It unwraps and re-wraps in the same call and cannot redirect funds to third parties. Admins can pause or unpause all operations, including redemptions, per asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xAdA200001000ef00D07553cEE7006808F895c6F1#code"
},
{
"name": "NegRiskCtfCollateralAdapter2",
"isVerified": true,
"address": "matic:0xadA2005600Dec949baf300f4C6120000bDB6eAab",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Adapter letting anyone split, merge, redeem or convert wrapped collateral into multi-outcome positions while the underlying asset is not paused. It unwraps and re-wraps in the same call and cannot redirect funds to third parties. Admins can pause or unpause all operations, including redemptions, per asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xadA2005600Dec949baf300f4C6120000bDB6eAab#code"
},
{
"name": "CollateralToken",
"isVerified": true,
"address": "matic:0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x6bBCef9f7ef3B6C592c99e0f206a0DE94Ad0925f"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "Upgradeable ERC20 (pUSD) that wraps either of two immutable supported assets one-for-one, transferring deposits to an immutable vault. Wrapper-role holders can wrap and unwrap; minter-role holders can mint without depositing an asset and burn their own balance.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB#code"
},
{
"name": "CollateralVault",
"isVerified": true,
"address": "matic:0xC417fD8E9661c0d2120B64a04Bb3278C17E99DB1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x0000000000000000000000000000000000000000"
],
"implementations": [
"matic:0xD206aC7fEf53d83ED4563E770b28Dba90D0D9eC8"
]
},
"chain": "polygonpos",
"pastUpgrades": [
{
"timestamp": 1771462560,
"transactionHash": "0x8c96f3739d5266f2267af9d9bec9c1ce9af3f415d6eaabc2b36b7a97664be0f8",
"implementations": [
"matic:0xD206aC7fEf53d83ED4563E770b28Dba90D0D9eC8"
]
}
],
"description": "Upgradeable ERC-4337 single-owner smart account. Its owner can execute arbitrary calls, install or uninstall plugins, and upgrade the implementation, giving it full control over any assets held by the account.\n* Roles:\n * **admin**: EOA 6\n * **getNativeOwner**: Timelock",
"upgradableBy": [
{
"id": "EOA-6",
"name": "EOA 6",
"delay": "no"
},
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xC417fD8E9661c0d2120B64a04Bb3278C17E99DB1#code"
},
{
"name": "CompatibilityFallbackHandler",
"isVerified": true,
"address": "matic:0xe16bA5bF81E5BB113e4752E4fdC20351d796fB24",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xe16bA5bF81E5BB113e4752E4fdC20351d796fB24#code"
},
{
"name": "CombosExchange",
"isVerified": true,
"address": "matic:0xe3333700cA9d93003F00f0F71f8515005F6c00Aa",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"matic:0x47EbFAC3353314C788B96CDCbf41daadfE03629C"
],
"implementations": [
"matic:0x7345C6842b244926125ed4054905cAc49620B5dc"
]
},
"chain": "polygonpos",
"pastUpgrades": [],
"description": "Upgradeable request-for-quote exchange where operator-role holders settle EIP-712 signed orders for combination positions. Operators supply the fee on each fill; it is not part of the signed order and is checked only against a global limit of 1000 bps fixed at deployment. A zero limit means fees have no percentage cap, not that fees are zero: an operator can charge up to all proceeds on a sell or collect an additional amount from a buyer, subject to the buyer's balance and allowance.\n* Roles:\n * **owner**: Timelock",
"upgradableBy": [
{
"name": "Timelock",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xe3333700cA9d93003F00f0F71f8515005F6c00Aa#code"
},
{
"name": "GnosisSafeL2",
"isVerified": true,
"address": "matic:0xE51abdf814f8854941b9Fe8e3A4F65CAB4e7A4a8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xE51abdf814f8854941b9Fe8e3A4F65CAB4e7A4a8#code"
},
{
"name": "PermissionedRamp",
"isVerified": true,
"address": "matic:0xebC2459Ec962869ca4c0bd1E06368272732BCb08",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Wrap/unwrap entrypoint for the collateral token that additionally requires an EIP-712 signature from a witness-role holder. Admins can pause or unpause both directions for an asset with no delay.\n* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xebC2459Ec962869ca4c0bd1E06368272732BCb08#code"
},
{
"name": "DepositWallet",
"isVerified": true,
"address": "matic:0xf7f27C29e60fe6325beF8dA7F93250353d2e3294",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "polygonpos",
"description": "Smart-wallet implementation for factory-deployed proxies. Only the configured factory can submit call batches, which require an EIP-712 signature from the owner or an unexpired session signer. The owner can pause the wallet and, after the factory-configured delay, withdraw assets and revoke token approvals.\n",
"discoveryDrivenData": true,
"url": "https://polygonscan.com/address/0xf7f27C29e60fe6325beF8dA7F93250353d2e3294#code"
}
]
},
"risks": [
{
"category": "Funds can be stolen if",
"text": "the 3/6 multisig upgrades the collateral token or its vault after the 12 hours timelock and moves the stablecoin backing every balance.",
"isCritical": true
},
{
"category": "Funds can be stolen if",
"text": "a PositionManager bridge-role holder mints outcome shares without burning pUSD, or an upgraded outcome module mints unbacked pUSD, and the resulting claims are redeemed against the vault."
},
{
"category": "Funds can be frozen if",
"text": "the admins pause either collateral ramp with no delay, blocking redemption of the collateral token into the underlying stablecoin."
},
{
"category": "Funds can lose value if",
"text": "a resolution admin overrides the UMA result after 1 hour on a CTF binary question, a CTF neg-risk admin forces a result immediately after flagging the question, including in the same transaction, or a PositionManager resolver reports a false result.",
"isCritical": true
},
{
"category": "Funds can lose value if",
"text": "a permissioned UMA or PositionManager resolver stalls, leaving the affected outcome shares unredeemable."
},
{
"category": "Funds can lose value if",
"text": "the operator charges an unsigned fee that pushes the all-in price past the signed limit: on the CTF exchanges their current zero setting disables the percentage check, while the combination-position venue currently permits up to 10%."
},
{
"category": "Funds can be stolen if",
"text": "the source code of unverified contracts contains malicious code.",
"isCritical": true
}
]
}