Integration
Launchpad Docs
Integrate Axon Fun on Robinhood Chain — launch tokens, trade on the bonding curve, and route post-graduation swaps through Uniswap V3.
Deployed contracts
AxonLaunchpad
0x800Ccd07F1BC035228d3e9B92625535482EB55E1Deploy tokens + bonding curves via CREATE2
AxonDexRouter
0xa06dF4dA811FC99AF37e52f16DBf14Dc6BDF1666Post-graduation Uniswap V3 buy/sell routing
AxonV3Migrator
0xe496287EcC5eCeC23926356E7721d55De1540601Migrates curve liquidity to Uniswap V3 on graduation
CurveBytecode (lib)
0x283639ab0cf61A7DABaC6850e93f77c6297086f0Linked library for curve deployment bytecode
Uniswap V3 Factory
0x1f7d7550B1b028f7571E69A784071F0205FD2EfAPool factory on Robinhood Chain
Uniswap V3 SwapRouter02
0xCaf681a66D020601342297493863E78C959E5cb2V3 swap router used by AxonDexRouter
Uniswap V3 Position Manager
0x73991a25c818bf1f1128deaab1492d45638de0d3LP NFT minting on graduation
Wrapped ETH pair token for V3 pools
Each launch also deploys a unique BondingCurve and AxonToken via CREATE2. Token addresses always end in …666.
Architecture
- Launch — call AxonLaunchpad.createLaunch to deploy curve + token.
- Bonding curve — users buy/sell on the curve until 4.2 ETH is raised (2% trade fee).
- Graduation — curve auto-graduates at 99% of target;80% of raised ETH → Uniswap V3 LP, 20% → platform.
- DEX trading — after graduation, use AxonDexRouter for V3 buys/sells.
1. Launch a token
Call createLaunch on the launchpad. Pay at least 0.0005 ETH launch fee; any extra ETH in the same tx is used as an optional creator dev-buy.
// AxonLaunchpad.createLaunch
function createLaunch(
string name,
string symbol,
string metadataURI, // ipfs:// or https:// JSON with name, symbol, image, socials
uint256 minTokensOut, // slippage guard for optional dev-buy (0 if no dev-buy)
bytes32 curveSalt, // CREATE2 salt — curve address must end in 666
bytes32 tokenSalt // CREATE2 salt — token address must end in 666
) external payable returns (address curve, address token);
// Example (viem / wagmi)
await writeContract({
address: LAUNCHPAD_ADDRESS,
abi: launchpadAbi,
functionName: "createLaunch",
args: [name, symbol, metadataURI, 0n, curveSalt, tokenSalt],
value: parseEther("0.0005"), // launch fee only
});Read launch metadata: launchpad.launches(launchId) or launchpad.curveToLaunchId(curve).
Resolve token → curve: AxonToken(token).curve().
2. Buy on bonding curve (pre-graduation)
Send ETH to the curve's buy function.2% fee is taken (1% platform ETH + 1% creator tokens accrued on curve).
// BondingCurve.buy — curve must not be graduated
function buy(uint256 minTokensOut) external payable;
await writeContract({
address: curveAddress,
abi: bondingCurveAbi,
functionName: "buy",
args: [minTokensOut],
value: parseEther("0.1"),
});
// Quote before sending
const [tokensOut] = await readContract({
address: curveAddress,
abi: bondingCurveAbi,
functionName: "quoteBuy",
args: [parseEther("0.1")],
});3. Sell on bonding curve (pre-graduation)
Approve the curve to spend tokens, then call sell.
// 1. Approve curve to spend tokens
await writeContract({
address: tokenAddress,
abi: erc20Abi,
functionName: "approve",
args: [curveAddress, tokenAmount],
});
// 2. Sell
function sell(uint256 tokenAmount, uint256 minEthOut) external;
await writeContract({
address: curveAddress,
abi: bondingCurveAbi,
functionName: "sell",
args: [tokenAmount, minEthOut],
});4. Trade after graduation (Uniswap V3)
Once curve.graduated() == true, use AxonDexRouter. The router executes the Uniswap V3 swap and records volume on the curve for the activity feed.
const DEX_ROUTER = "0xa06dF4dA811FC99AF37e52f16DBf14Dc6BDF1666";
// Buy with ETH
function uniBuy(address curve, uint256 minTokensOut) external payable;
await writeContract({
address: DEX_ROUTER,
abi: dexRouterAbi,
functionName: "uniBuy",
args: [curveAddress, minTokensOut],
value: parseEther("0.1"),
});
// Sell tokens
function uniSell(address curve, uint256 tokenAmount, uint256 minEthOut) external;
// Approve DEX_ROUTER first, then:
await writeContract({
address: DEX_ROUTER,
abi: dexRouterAbi,
functionName: "uniSell",
args: [curveAddress, tokenAmount, minEthOut],
});5. Read on-chain state
// BondingCurve views
curve.token() // AxonToken address
curve.creator() // launch creator
curve.graduated() // true after migration
curve.uniswapPool() // V3 pool (zero before grad)
curve.currentPrice() // spot price in wei per token
curve.tokensRemaining() // unsold sale inventory (800M cap)
curve.ethCollected() // net ETH in curve
curve.tokensSold()
curve.graduationTarget() // 4.2 ETH target
// AxonToken
token.curve() // bonding curve address
token.claimCreatorFees() // anyone can trigger 80% burn / 20% ETH swap6. Index trades (events)
Pre-graduation trades emit on the curve contract:
event Buy(address indexed buyer, uint256 ethIn, uint256 tokensOut, uint256 newPrice);
event Sell(address indexed seller, uint256 tokensIn, uint256 ethOut, uint256 newPrice);
event DevBuy(address indexed creator, uint256 ethIn, uint256 tokensOut, uint256 newPrice);
event Graduated(address pool, uint256 ethLiquidity, uint256 tokenLiquidity, uint256 ethToDev);
// Launchpad
event LaunchCreated(uint256 indexed launchId, address curve, address token, address creator, string name, string symbol);Fetch historical logs via Blockscout: GET /api/v2/addresses/{curve}/logs
7. Token supply & curve math
- Total supply: 1,000,000,000 tokens
- Bonding curve sale: 800,000,000 tokens
- Uniswap LP allocation: 200,000,000 tokens (minted to curve, migrated at graduation)
- Virtual reserves: 30 ETH + 1,073,000,000 virtual tokens (constant-product AMM)
- Graduation target: 4.2 ETH net collected