Testnet (open)
Testnet is the default environment for all examples in this documentation. Access is open — no partner agreement required.Testnet contract addresses
These are the current deployments on ADI testnet. Orders are signed under the domain{ name: "PredictStreet", version: "1", chainId: 99999, verifyingContract }.
Use NegRiskCtfExchange when the market’s negRiskEligible is true,
and CTFExchange (binary) otherwise. An order signed against the wrong
exchange is rejected with bad_signature.
Vault operations (withdrawals, split / merge / convert) are not signed
against any address in this table. They use your own vault’s domain
(name: "PredictStreetVault", verifyingContract = your vault address
from VaultFactory.vaultOf(yourWallet)), never the VaultFactory
address.
Read-at-runtime — GET /api/platform/contracts
The address table above is the human-readable form of the canonical
contract registry. For SDK code prefer the runtime endpoint:
usdcEip712is thename/versionof the USDC contract’s EIP-712 domain. Use exactly these values when you build thePermitfor a gasless deposit; any other values recover a different signer and the relay answerspermit_signer_mismatch.ccipBridgecarries{ destChainSelector }for cross-chain withdrawals over Chainlink CCIP, ornullwhen the environment has no bridge configured (cross-chain withdrawals are then unavailable).generatedAtis the time the response was generated, not a deploy timestamp — diff the addresses to detect a redeploy.
fetch() this at
boot rather than hardcoding constants — eliminates the entire class
of bugs from a stale prose-page after a redeploy.
wrappedCollateral is null on both testnet and mainnet — the field
is reserved for future deployments and is not used by today’s NegRisk
markets.
Getting testnet USDC
MockCollateral (0x979696A1B62d4c0F0390124447c065798ee4c70c) exposes
a public mint(address to, uint256 amount) on testnet — anyone can mint
themselves mUSDC. After minting, you still need to deposit into your
vault: see Vaults.
Testnet caveats
Testnet relaxes some off-chain compliance checks for integration
testing (see the capability matrix),
so AML and sanctions outcomes there are not representative. The
on-chain controls still apply: each wallet’s tier, deposit caps and withdrawal
restriction are set in
DepositLimitRegistry from its KYC level, so a
wallet whose tier is not set cannot deposit and a Basic-level wallet
cannot withdraw. Testnet cap figures can differ from production — read
them from GET /api/me/deposit-limits.Production enforces the full compliance chain. Don’t rely on testnet
outcomes to validate your prod compliance flow — sanity-check against
the staging / production controls before going live.- Resting orders survive a matcher restart: on start the matcher
reloads every open and partially filled order before it resumes
matching. Don’t re-place your book after a restart; reconcile against
GET /api/orders/openinstead. - Oracle on testnet resolves against mock data. Do not use testnet resolution for real backtesting.
- Faucet, admin
pause/resume/cancel, and platform kill-switch can be triggered at any time during partner testing windows — expect occasional disruptions.
Testnet redeploys: what to expect
Testnet contracts get redeployed periodically (chain upgrades, schema changes, security patches). When that happens every contract address on this page changes —VaultFactory, MockCollateral,
ConditionalTokens, CTFExchange, NegRiskAdapter, NegRiskCtfExchange,
DepositLimitRegistry, Oracle, NegRiskOracle, MulticallExecutor
are re-deployed as a single set.
Mainnet redeploys are not done in-place. Any contract change on
mainnet ships as a new deployment with a coexistence period and
explicit migration instructions delivered via the partner channel.
Staging (on request)
Production-like environment with real AML provider, real data-source adapters, real on-chain deployments on a production-ready chain. Used for the pre-launch dry-run before a new market opens to real users. Access requires:- A signed partner agreement (NDA + API access terms).
- A whitelisted source IP for the internal network (staging surfaces are gated behind VPN).
- A dedicated partner account provisioned by ops.
Mainnet (partner onboarding)
Production environment. Base URL, chain ID, and contract addresses are delivered to partners at onboarding as part of the live-rollout runbook. Do not hardcode mainnet values from this documentation — always read them from the onboarding package so configuration remains auditable.Partner onboarding
Request mainnet access and onboarding runbook.
Mainnet web app
The public retail site. The testnet equivalent is
WEB_APP in the
testnet endpoints above.