Contract Addresses
Deployed OddMaki contract addresses on Base mainnet and Base Sepolia, plus subgraph endpoints and verification guidance.
The OddMaki protocol is a single EIP-2535 Diamond deployment — one address fronts every facet. External dependencies (Gnosis CTF, USDC, UMA, Pyth) are separate onchain contracts.
Base Mainnet (Chain ID: 8453)
The canonical production deployment.
| Contract | Address |
|---|---|
| OddMaki Diamond | 0x025d086a62d93e24f3cb3f161612ca8e9530127d |
| Gnosis Conditional Tokens | 0x3e2ae408ca03f27849edff32d107c7b8ea5c87b4 |
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| UMA Optimistic Oracle V3 | 0x2aBf1Bd76655de80eDb3086114315Eec75AF500c |
The SDK defaults to Base mainnet when no chain is specified:
import { createOddMakiClient } from '@oddmaki-protocol/sdk';
import { base } from 'viem/chains';
const client = createOddMakiClient({
chain: base,
walletClient,
});Base Sepolia Testnet (Chain ID: 84532)
For integration work and pre-deployment testing.
| Contract | Address |
|---|---|
| OddMaki Diamond | 0x31a4126aec35b36d46dd371eb0f0d5b71e1c2292 |
| Gnosis Conditional Tokens | 0x7364747372Ac4a175B5326f5B2C9CB1C271d32e8 |
| USDC (Circle, official) | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
| UMA Optimistic Oracle V3 | 0x45375b8e995fa2811ec184e3b6a3158a770a01e8 |
Pass baseSepolia from viem/chains when constructing the client to target the testnet.
Testnet faucets: grab free Sepolia ETH from the Base faucets, and mint test USDC from the Circle USDC faucet (pick "Base Sepolia").
Subgraph
Subgraph endpoints, schema highlights, and query examples now live on the dedicated Subgraph page.
External Protocol Dependencies
The Diamond interacts with these external contracts; their addresses are set at deploy time and readable via ProtocolFacet:
| Contract | How It's Used |
|---|---|
| Gnosis CTF | ERC-1155 outcome tokens — split, merge, redeem |
| UMA Optimistic Oracle V3 | Discretionary market resolution |
| Pyth Network | Price feeds for auto-resolving price markets |
Read the current wiring at any time:
const pyth = await client.priceMarket.getPythContract();
// ProtocolFacet also exposes getUmaOracle(), getConditionalTokens(), etc.Verifying the Diamond
All facets are deployed as separate verified contracts. To inspect:
- Open the Diamond address on BaseScan (or Sepolia BaseScan for testnet).
- Use the Diamond loupe to list all facets:
const facets = await publicClient.readContract({
address: diamondAddress,
abi: DiamondLoupeFacetABI,
functionName: 'facets',
});Each entry returns (facetAddress, selectors[]). Click through to each facet address on BaseScan to view verified source.
What's Next
- Architecture → — the 21-facet layout in detail
- SDK Reference → — how the SDK wraps these addresses