Contract Addresses

Canonical list of Dimes Multiply contract and token addresses on Polygon mainnet. Use these to verify on Polygonscan before approving any spend.

Multiply's on-chain surface is a single vault contract per environment. All user funds flow through the vault — USDC in, position tokens in, USDC out. These addresses are published here so you can verify them on Polygonscanarrow-up-right before your frontend or backend approves any token spend against them.

How to use this page. Verify each address on Polygonscan before you ship, then hardcode them into the allowlist your client checks at runtime. The vault address also comes back on every quote response as polygon_vault_contract_address and from GET /prediction-markets/contract-info if you prefer to fetch it dynamically.


Production

Real USDC. Real Polymarket CTF (Conditional Token Framework). Live positions.

Contract
Address
Purpose

USDC

Bridged USDC.e (the token Polymarket uses)

Polymarket CTF

Polymarket Conditional Token Framework

Chain: Polygon mainnet (EVM chain ID 137).

The vault is the only contract you approve USDC against. It never holds user funds for longer than it takes to execute an open/close against Polymarket, and it cannot move your USDC for any purpose other than the position you authorize via signed quote parameters.


Sandbox

Fake USDC. Fake Polymarket CTF. No real funds at risk. See Sandbox for how to get access.

Contract
Address
Purpose

Fake USDC

Minted to your wallet on request

Fake CTF

Fake Conditional Token Framework

Chain: Polygon mainnet (EVM chain ID 137).

The sandbox vault runs the same LeveragedPredictionVaultV1 contract as production — same ABI, same signature scheme, same position lifecycle. The only differences are the addresses and that the tokens it pulls and settles against are worthless outside the sandbox.


Verifying a quote signature

Every quote returned by POST /prediction-markets/quotes is signed by a server-side authority key. Before you submit the quote on-chain, recover the signer from the signature and compare it to the authority address in GET /prediction-markets/contract-info. Any quote where the recovered signer does not match must be rejected — it has been tampered with in transit.

See API Reference — Verifying a quote signature for the exact message hash layout and a working ethers.js example.


Dynamic lookup


Getting help

Find us on the Telegram link at dimes.fiarrow-up-right if you spot an address discrepancy, need the current sandbox contracts, or want us to sign off on your contract allowlist before you ship.

Last updated