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 Polygonscan 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_addressand fromGET /prediction-markets/contract-infoif you prefer to fetch it dynamically.
Production
Real USDC. Real Polymarket CTF (Conditional Token Framework). Live positions.
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.
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.fi 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

