pmcrypto.blogEssays on how on-chain prediction markets work

2026-11-11 / mechanisms / 8 min read

Polymarket Protocol V2 Explained: What Changes Under the Hood

Polymarket Protocol V2 replaces Gnosis's Conditional Tokens for new markets with one upgradeable ERC-1155 PositionManager, pUSD collateral, three market modules and an OracleAggregator. New markets move in phases on November 23, November 24 and December 1, 2026. Our view is that V2 lowers integration and capital costs while concentrating settlement trust in Polymarket's own keys.

The argument in brief

  1. Polymarket's docs schedule V2 trading for new markets on November 23 (8:30 AM ET), November 24 and December 1, 2026; existing CTF holdings are not converted.
  2. At 22:38 UTC on November 11, 2026, pUSD supply was $504.98 million against $508.29 million of bridged USDC.e and $313 of native USDC in its vault.
  3. PositionManager, OracleAggregator and pUSD share one owner address, and all three are upgradeable proxies; the Gnosis CTF contract has no owner.
  4. All 835 V2 resolution requests opened in a 10,000-block window used one reporter, and every one listed 0x...dEaD as its disputer and arbitrator.
  5. The V2 code is under BUSL-1.1 until March 27, 2030; Gnosis's CTF is LGPL-3.0.

Our thesis is that Protocol V2 makes Polymarket cheaper to integrate and more capital-efficient, and pays for it by moving final authority over positions, collateral and resolution from Gnosis's ownerless contract to upgradeable contracts that a single owner address can change, so the risk a trader carries on a V2 market is mostly operator risk.

What is Protocol V2?

Polymarket's protocol lead Rajath Alex announced V2 on October 5, 2026. The Block reported the design the next day: a single ERC-1155 positions contract in place of the 2019-era Gnosis Conditional Tokens Framework (CTF), pUSD collateral, a router, four initial market types (binary, atomic neg-risk, incremental neg-risk and combinatorial), and an OracleAggregator that "can plug into UMA, Chainlink, and other data sources." Six firms audited the code, and the bug bounty pays up to $5 million.

The dates moved. On October 6 the switch for new markets was tentatively November 2. Polymarket's migration guide, read on November 11, now lists three phases, all in Eastern Time:

The guide says later phases depend on "successful trading and settlement, correct reward scoring, and sufficient liquidity in the preceding phase." Thanksgiving-week football stays on CTF. Existing CTF markets keep their contracts, and "existing CTF holdings are not converted."

What changes, before and after?

Two upgrades are easy to conflate. The first, CLOB V2, went live on April 28, 2026: new exchange contracts, a rewritten matching backend, and pUSD in place of USDC.e as trading collateral, per Polymarket's CLOB V2 guide. Protocol V2 replaces the position layer underneath. The table compares the CTF system as it runs today with V2, from Polymarket's contracts page and the V2 repository.

Layer CTF markets (today) Protocol V2 markets
Position ledger Gnosis ConditionalTokens, no owner, not upgradeable PositionManager, UUPS proxy, owner can upgrade
Position ID Hash of collateral, oracle, question and index set Structured: module, event hash, neg-risk arity, resolution chain, condition and outcome bits
Market logic Standard CTF, plus a separate Neg Risk Adapter BinaryModule, NegRiskModule, CombinatorialModule behind one ledger
Exchange CTF Exchange and Neg Risk CTF Exchange (EIP-712 domain "2") ExchangeV3 for all V2 types (domain "3")
Collateral pUSD at the edge, moved into CTF by collateral adapters pUSD burned on split and minted on merge or redeem
Resolution UMA CTF Adapter; admin can flag, then resolve manually after one hour OracleAggregator with reporter, disputer and arbitrator modules; admin can force a result at any unresolved stage
Combos No combinatorial type in CTF CombinatorialModule, 2 to 50 legs, quoted through RFQ
Cross-chain None Chainlink CCIP bridge in code, Polygon as resolution hub, not deployed
License LGPL-3.0 BUSL-1.1 until March 27, 2030, then MIT

What backs pUSD?

Polymarket's pUSD page calls it an ERC-20 "backed by USDC" with "no algorithmic peg, no fractional reserve." The repository's collateral doc is more specific: pUSD wraps "USDC and USDCe 1:1 via an external vault," and the invariant is that the vault's combined balance is at least total supply.

We read the contracts directly at Polygon block 97,154,154, at 22:38 UTC on November 11, 2026. pUSD's total supply was 504.98 million. Its vault held 508.29 million USDC.e and 313 native USDC. The invariant held with about $3.3 million to spare. The backing is almost entirely USDC.e, which Circle describes as the "Ethereum-bridged form of USDC" that arrives through the Polygon PoS Bridge. Polymarket and Circle said on February 5, 2026 that native USDC would replace USDC.e in "coming months." On our read, that has not happened at the vault yet.

The token's owner holds rescue, which can move any ERC-20 balance held by the token contract, and controls upgrades; the onramp and offramp can each be paused per asset by an admin.

How does the oracle aggregator resolve a market?

The aggregator separates "who reports, who disputes, and who arbitrates," per the repository's oracle doc. Reporter modules vote; a result reaches proposal when reporterThreshold distinct modules agree; a liveness window opens for disputer modules; enough disputes escalate to an arbitrator. Three reporter modules are live on Polygon: UMA's optimistic oracle (OOReporterModule), Chainlink (ChainlinkReporterModule), and an EOAReporterModule for "authorized EOA addresses." The doc also says an admin "can call resolveResult() at any non-Resolved stage to force-finalize a condition," and that the operator role is "a fully trusted role."

We decoded the aggregator's event logs for the 10,000 blocks from 18:28 to 22:38 UTC on November 11. That window held 835 new resolution requests, all from the canary period:

Across the wider window from 04:58 UTC on November 10 (10,873 requests), every request still used a threshold of 1. For UMA markets this changes less than it looks, since disputes still happen inside UMA's own process before its result reaches the aggregator, under the rules on Polymarket's resolution page: a bond of typically $750, a two-hour challenge period, and a token-holder vote on a second dispute. For Chainlink markets it matters more. The repository says the Chainlink module's offchain priceSource writer "is fully trusted," that the module does not verify Chainlink report signatures onchain, and recommends "reporterThreshold >= 2" in production. The canary configuration used one.

What about cross-chain positions?

The code ships a hub-and-spoke bridge on Chainlink CCIP that can move binary and neg-risk positions, pUSD and results. Polygon is the only chain that can resolve a condition; results flow outward one hop. Combinatorial positions cannot be bridged at all. Polymarket says it will activate the bridge when it expands beyond its current network, according to The Block, and neither the repository's deployed-address list nor the docs list a bridge contract as of November 11.

What does V2 mean for liquidity and market makers?

Each V2 market starts on a fresh book with new position IDs, and CTF markets keep trading until they resolve, so makers run two integrations for as long as CTF markets stay open, which for the 2028 presidential contracts means years. The contract and API guides list the work: new approvals on ExchangeV3 and PositionManager ("existing CTF approvals do not carry over"), a CONDITIONAL-V2 balance type, and choosing IDs by each market's version field. Collateral does not split, because pUSD serves both systems.

The starting point is thin. At 22:40 UTC on November 11, the 100 highest-volume open V2 markets in Polymarket's gamma API had traded $182.73 between them. The largest closed V2 market we found, a Central Park temperature contract for October 16, traded $1,158. The later phases carry the flow: sports events, split between Phase 2 (minor sports) and Phase 3, produced 48.7% of the 24-hour volume across the 1,000 open events we pulled. Our liquidity essay found that much of Polymarket's depth is paid for, which makes "correct reward scoring" the gate we would watch; the live liquidity page will show whether V2 books fill.

Combos are the clearest capital gain. Makers quote multi-leg positions through RFQ with a 400-millisecond quote window and an optional one-second last look, per the Combos docs, and a collateral-return flow merges offsetting legs back into pUSD before resolution. A leg that resolves 50/50 stays in the product, so a YES combo with one 50/50 leg pays $0.50.

What does it mean for composability?

Inside Polymarket, integration gets simpler. A position ID now encodes its module, so routing is one lookup, and split, merge and redeem go through one Router call. Neg-risk conversion moves from the Neg Risk Adapter to the Router and NegRiskModule, per the negative-risk page.

Outside Polymarket, three things narrow it. Contracts that hold positions must handle the warning that "protocol mints and unsafe transfers do not invoke ERC-1155 receiver callbacks." The owner() of PositionManager, OracleAggregator and pUSD returned the same contract address on November 11, so a protocol building on V2 positions inherits one upgrade key. And the license is BUSL-1.1 with "Additional Use Grant: None" until March 27, 2030, so no one else can run the code in production before then. Gnosis's CTF is LGPL-3.0 and has no owner.

What is the strongest case against our view?

The strongest objection is that Polymarket always held the override. The UMA CTF Adapter lets an admin flag a question and resolveManually after a one-hour safety period, and the exchange, fee and collateral layers were already Polymarket's own contracts after April. On that reading V2 makes existing trust explicit and adds structure (thresholds, per-event rules history, recorded changes) that can be tightened later without touching positions. Canary settings on markets with a few hundred dollars of volume say little about December.

We accept most of this. Our point is about where the residual guarantee sits. Under CTF, the token ledger and payout math were Gnosis code nobody could change, so even an admin-resolved market paid out under fixed rules, and the override came with a public one-hour flag. Under V2, the ledger, the payout logic, the collateral and the oracle are all upgradeable behind one owner, and the force-resolve has no delay. That is a reasonable design for a venue that wants to move fast and answer to regulators. It is a different product from a neutral settlement layer, and readers who price oracle risk should price this instead.

What would change our mind

Questions readers ask

What is Polymarket Protocol V2?
It is Polymarket's new smart-contract system for new markets. One ERC-1155 PositionManager holds every position, binary, negative-risk and combinatorial modules hold market logic, pUSD is the collateral, and an OracleAggregator routes results from UMA, Chainlink or authorized reporters.
When does Polymarket switch to Protocol V2?
Polymarket's migration docs schedule new markets in three phases: November 23, 2026 at 8:30 AM ET for some crypto Up/Down and weather markets, November 24 for BTC and ETH Up/Down and other categories, and December 1 for major sports. Later phases depend on the earlier ones trading and settling correctly.
Do I need to migrate my Polymarket positions to V2?
No. Polymarket's docs say existing CTF markets keep their contracts for trading, settlement and redemption, and CTF holdings are not converted. The V2 contracts include an opt-in migration path for conditions Polymarket has registered.
What is pUSD on Polymarket?
pUSD (Polymarket USD) is a six-decimal ERC-20 on Polygon that Polymarket uses as collateral, wrapped 1:1 from USDC or USDC.e held in a vault. On November 11, 2026, almost all of its backing was bridged USDC.e, by our onchain read.
Who resolves Polymarket V2 markets?
An OracleAggregator accepts results from reporter modules: UMA's optimistic oracle for most questions and a Chainlink module for Up/Down markets. An admin role can force a result on any unresolved condition, according to the V2 repository's documentation.

Notes and sources

  1. Polymarket rolls out V2 upgrade with single ERC-1155 positions contract, pUSD collateral, The Block, 2026-10-06
  2. Migrate to Polymarket Protocol V2 (rollout timeline; accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  3. Polymarket Protocol V2 Contract Migration (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  4. Polymarket Protocol V2 API Migration (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  5. Contracts: addresses, audits and security (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  6. Migrating to CLOB V2 (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  7. Polymarket USD (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  8. Resolution (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  9. Negative Risk Markets (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  10. Combinatorial Positions (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  11. How Combos Work (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  12. How Positions Work (accessed November 11, 2026), Polymarket Documentation, 2026-11-11
  13. polymarket-v2-external: README, architecture, collateral, oracle, bridge, modules and migration docs (commit 741f8bb), Polymarket on GitHub, 2026-09-17
  14. polymarket-v2-external LICENSE.md (Business Source License 1.1), Polymarket on GitHub, 2026-09-17
  15. uma-ctf-adapter: UmaCtfAdapter.sol (flag and resolveManually), Polymarket on GitHub, 2025-09-03
  16. conditional-tokens-contracts (LGPL-3.0), Gnosis on GitHub, 2018-11-21
  17. pUSD token: totalSupply, VAULT(), USDC(), USDCE() and owner() reads, plus vault USDC and USDC.e balances (block 97,154,154, November 11, 2026, 22:38 UTC), Polygon mainnet, via Polygonscan, 2026-11-11
  18. pUSD vault address holdings, Polygonscan, 2026-11-11
  19. OracleAggregator event logs: RequestInitialized, ReporterModuleAdded, DisputerModuleAdded (blocks 97,054,165 to 97,154,154, pulled November 11, 2026), Polygonscan, 2026-11-11
  20. Gamma API: markets with version=v2 and events by 24-hour volume (pulled November 11, 2026, 22:40 UTC), Polymarket, 2026-11-11
  21. What you need to know: native USDC on Polygon PoS, Circle, 2023-09-28
  22. Polymarket to swap bridged USDC.e on Polygon for native USDC via Circle partnership, The Block, 2026-02-05