MonPad splash

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.

ContractEnv varPurpose
Factory V2NEXT_PUBLIC_FACTORY_V2Deploys new token + curve pairs
Curve templateNEXT_PUBLIC_CURVE_TEMPLATEBonding curve logic, cloned per token
StakingNEXT_PUBLIC_STAKINGLock-based reward distribution
Treasury walletNEXT_PUBLIC_TREASURY_WALLETReceives platform fees and creation buffer
Buyback walletNEXT_PUBLIC_BUYBACK_WALLETMONSHI buyback execution
Platform walletNEXT_PUBLIC_PLATFORM_WALLETOperational expenses

Tokenomics

Total supply
1,000,000,000
Fixed at mint, no further issuance
Curve allocation
800,000,000
80% sold via bonding curve
Graduation LP
200,000,000
20% reserved for Uniswap V3 LP, locked permanently
Decimals
18
ERC-20 standard

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

MethodEndpointPurpose
GET/api/tokensList tokens (filter/sort/paginate)
GET/api/tokens/:addressToken detail + curve state
GET/api/tokens/:address/tradesRecent trades for a token
GET/api/tokens/:address/holdersHolder list with balances
GET/api/statsGlobal platform stats (volume, count)
GET/api/tickerLive ticker payload (recent trades, top gainers)
GET/api/healthIndexer 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.

Chain ID143 (0x8f)
Network nameMonad Mainnet
RPC URLhttps://rpc.monad.xyz
Block explorerhttps://monadscan.com
CurrencyMON (18 decimals)

Contract source & audit

Source

Solidity contracts, deployment scripts, and tests are on GitHub.

Repo link coming with public launch

Audit

Reviewed by Claude Code across three rounds. Notes covered curve math, fee accounting, graduation atomicity, and stake-lock semantics.

Support & community