Mon-Pad Documentation
Contracts, APIs, and integration details for developers and serious traders.
Deployed contracts
Addresses are env-driven and rendered live from the public build. Source on GitHub.
| Contract | Env var | Purpose |
|---|---|---|
| Factory V2 | NEXT_PUBLIC_FACTORY_V2 | Deploys new token + curve pairs |
| Curve template | NEXT_PUBLIC_CURVE_TEMPLATE | Bonding curve logic, cloned per token |
| Staking | NEXT_PUBLIC_STAKING | Lock-based reward distribution |
| Treasury wallet | NEXT_PUBLIC_TREASURY_WALLET | Receives platform fees and creation buffer |
| Buyback wallet | NEXT_PUBLIC_BUYBACK_WALLET | MONSHI buyback execution |
| Platform wallet | NEXT_PUBLIC_PLATFORM_WALLET | Operational expenses |
Tokenomics
Curve math
The bonding curve uses constant-product math with virtual reserves:
(virtualMON + realMON) * tokenReserve = k buyPrice(ΔMON) = tokenReserve - k / (virtualMON + realMON + ΔMON) sellPrice(ΔTOK) = (virtualMON + realMON) - k / (tokenReserve + ΔTOK) virtualMON = 117,000 MON (anti-snipe) tokenReserve_initial = 800,000,000 (curve allocation) graduationTarget = 425,000 MON net of fees
Virtual reserves mean the first buyer doesn't get the whole supply at near-zero cost. The curve starts at a realistic price and rises smoothly toward graduation.
API endpoints
Indexer base URL: NEXT_PUBLIC_API_BASE
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/tokens | List tokens (filter/sort/paginate) |
| GET | /api/tokens/:address | Token detail + curve state |
| GET | /api/tokens/:address/trades | Recent trades for a token |
| GET | /api/tokens/:address/holders | Holder list with balances |
| GET | /api/stats | Global platform stats (volume, count) |
| GET | /api/ticker | Live ticker payload (recent trades, top gainers) |
| GET | /api/health | Indexer health and chain head |
Frontend integration
Use the typed API client in lib/api.ts for safe, normalized access:
import { api } from '@/lib/api';
// List trending tokens
const tokens = await api.listTokens({ limit: 20, sort: 'trending' });
// Get one token + curve state
const detail = await api.getToken(tokenAddress);
// Stream recent trades
const trades = await api.getTrades(tokenAddress, { limit: 50 });For on-chain reads (curve state, balances), use wagmi hooks with the ABIs in lib/abis/.
Wallet setup
Add Monad Mainnet to your wallet using the params below, or click the button to do it via your installed Web3 provider.
Contract source & audit
Source
Solidity contracts, deployment scripts, and tests are on GitHub.
Repo link coming with public launchAudit
Reviewed by Claude Code across three rounds. Notes covered curve math, fee accounting, graduation atomicity, and stake-lock semantics.

