To check whether a Polymarket trade used a new or legacy contract, inspect the Polygon transaction or fill record and identify the exchange contract that emitted the fill. Compare that address with the matching standard CTF or NegRisk exchange address below. This identifies the contract that handled a particular trade; it does not establish that an outcome token currently in your wallet has a v1 or v2 label.
What the check can—and cannot—tell you
The relevant distinction is the exchange contract that handled a fill. A wallet balance by itself may not show which exchange executed each purchase, especially when the same outcome shares can be acquired through multiple trades. Transaction provenance is the evidence to inspect.
Polymarket’s FAQ explains outcome shares and that they can be sold before an event resolves, but it does not give a procedure for identifying the exchange generation used for an individual trade. Polymarket’s maintained CTF Exchange v2 source repository describes the v2 exchange architecture; its NegRisk collateral adapter uses a legacy Conditional Tokens contract address. That distinction is a reason not to treat exchange generation and the underlying outcome token as the same thing. The code does not, by itself, establish a complete migration policy.
Compare the fill’s exchange address
The Substreams Registry’s polymarket-pnl package page lists these Polygon exchange addresses. It is third-party indexed data, not an official Polymarket migration guide.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
| Exchange category | Generation | Polygon address listed by the Substreams Registry |
|---|---|---|
| Standard CTF Exchange | Legacy v1 | 0x4bfb41d5b3570defd03c39a9a4d8de6bd8b8982e |
| Standard CTF Exchange | v2 | 0xE111180000d2663C0091e4f400237545B87B996B |
| NegRisk Exchange | Legacy v1 | 0xC5d563A36AE78145C45a50134d48A1215220f80a |
| NegRisk CTF Exchange | v2 | 0xe2222d279d744050d28e00520010520000310F59 |
First determine whether the fill used the standard CTF or NegRisk exchange, then compare its address within that category. Do not compare an address without accounting for the exchange type and Polygon network.
How to check a specific trade
- Find the relevant fill or transaction. Use the transaction record associated with the acquisition you want to check. If the position was built through multiple trades, inspect each relevant fill rather than assuming one transaction represents the entire current balance.
- Identify the emitting exchange contract. In the Polygon transaction or trade record, locate the contract address associated with the exchange that emitted or handled the fill. Make sure you are looking at the exchange, not merely the outcome token or Conditional Tokens contract.
- Classify the exchange type. Establish whether it was a standard CTF exchange or a NegRisk exchange before comparing addresses.
- Compare the address. Match the exchange address to the corresponding row in the table. A match with the listed legacy v1 address indicates that the indexed dataset classifies the fill as using that legacy exchange; a match with the listed v2 address indicates it classifies the fill as using v2.
The Substreams Registry reports that v2 contracts were deployed on 2026-03-31 and that production cutover occurred around 11:00 UTC on 2026-04-28; it describes v1 fills after that cutover as historical. Treat these as dates reported by that third-party page, not as an official migration announcement. Verify addresses and timeline against current official deployment information before relying on them for a consequential decision.
Quick Recap
Best Value
Rank #4
Rank #3
Rank #2
Important limits and common misreadings
- A token address is not proof of exchange generation. The sources support identifying the exchange that handled a fill; they do not establish a v1/v2 marker on the outcome token held in a wallet.
- A current balance does not provide full trade history. If you need to classify separate acquisitions, examine the transaction provenance for each one.
- Do not mistake protocol documentation for a position lookup workflow. A Polymarket Rust client README describes protocol generations, different hosts, collateral and EIP-712 versions. It says token-backed order protocol can be auto-detected through a version endpoint and position-backed orders use Exchange V3. That describes client implementation, not a validated method to check an already-held position.
- Official user-facing confirmation is not established here. The cited FAQ and v2 repository do not provide an official website-only procedure or confirm the third-party address list as a migration guide.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




