Developer docs
Everything you need to integrate the launchpad: contract addresses, functions, events and deployment.
Addresses
Loaded from js/launchpad.config.js, the same file the site uses.
Contracts
EchobaseLaunch
Echobase's own contract: a thin, permissionless wrapper around the pons v2 launch-and-buy router that fixes the creator tax to 2% and its recipient to the charity wallet, keeps the registry of coins launched through Echobase, and returns any ETH the curve refunds on an oversized opening buy.
struct LaunchInput { string name; string symbol; string logo; string description; string twitter; string telegram; string discord; string website; }
function launch(LaunchInput input, uint256 minTokensOut) payable returns (address token, address curve, uint256 tokensOut);
// msg.value = pons launchFee() + opening buy in ETH (required by the pons curve; filled for msg.sender, snipe-tax exempt)
function charity() view returns (address); // the only creator-fee recipient a launch here can have
function CHARITY_TAX_BPS() view returns (uint16); // 200
function launchFee() view returns (uint256); // read through from pons
function launchConfig() view returns (LaunchConfig); // supply, curveFeeBps, phantomQuote, graduationThreshold, …
function launchCount() view returns (uint256);
function getLaunches(uint256 offset, uint256 limit) view returns (Launch[]); // newest first: token, curve, creator, createdAt
function getLaunchByToken(address token) view returns (Launch);
function launchesByCreator(address creator) view returns (uint256[]);
function pendingDonations() view returns (uint256); // charity balance waiting in the pons fee escrow
function ponsRecord(address token) view returns (LaunchedToken); // pons' own record for the coin
pons v2 (the launch protocol)
Every coin is a pons v2 launch. Trading before graduation goes to the coin's own curve contract; after graduation to its Uniswap v4 pool. Full reference at docs.ponsfamily.com/v2.
// curve (one contract per coin, address in the registry) function buy(uint256 quoteIn, uint256 minTokensOut, address recipient) payable returns (uint256 tokensOut); // quoteIn == msg.value function sell(uint256 tokensIn, uint256 minQuoteOut, address recipient) returns (uint256 quoteOut); function getReserves() view returns (uint256 quoteReserve, uint256 tokenReserve); function realQuoteReserve() view returns (uint256); // ETH actually collected function sellableTokens() view returns (uint256); function currentSnipeTaxBps(address recipient) view returns (uint256); function feeBps() view returns (uint256); // 100 = pons protocol fee function creatorTaxBps() view returns (uint256); // 200 = to the charity wallet // factory function getLaunchedToken(address token) view returns (LaunchedToken); // phase, creatorFeeRecipient, threshold, … function createGraduatedPool(address token) returns (uint256 positionId); // permissionless: finish a swept graduation // fee escrow function balanceOf(address recipient) view returns (uint256); function claim() returns (uint256); // only the recipient's own wallet
Launched tokens
Standard ERC-20 minted by pons (name, symbol, 1,000,000,000 supply, plus on-chain logo, description and socials via getTokenInfo()). No transfer restrictions and no fee logic in the token itself: fees are taken on the curve and, after graduation, by the pons hook on the pool.
uint256 constant FEE_BPS = 200; // 2% on pool buys and sells // no creator share: charity() receives the whole fee function pair() view returns (address); function creator() view returns (address); function feeRecipient() view returns (address); function onCurve() view returns (bool); function setFeeRecipient(address) // only the current feeRecipient
Metadata format
{ "name": "…", "symbol": "…", "description": "…",
"image": "ipfs://… | data:image/webp;base64,…",
"website": "https://…", "twitter": "https://x.com/…", "telegram": "https://t.me/…" }
Trading integration
Coins created with launchDirect skip the curve entirely: they are graduated from birth, so buy / sell on the launchpad revert and all trading goes through the router. Before graduation, trade through buy / sell on the launchpad (quotes from quoteBuy / quoteSell already include the fee). After graduation the pool is a Uniswap V2 pair on the official Robinhood Chain deployment; because the token charges a fee on pool transfers, always use the …SupportingFeeOnTransferTokens router functions. Quotes from getAmountsOut are before the 2% fee.
Deploying your own instance
cd launchpad/contracts && npm install && cp .env.example .env npx hardhat test # official Uniswap V2 router on Robinhood Chain: 0x89e5db8b5aa49aa85ac63f691524311aeb649eba DEX_ROUTER=0x89e5db8b5aa49aa85ac63f691524311aeb649eba CHARITY=0x… OWNER=0x… npx hardhat run scripts/deploy.js --network robinhood # the script writes the address into js/launchpad.config.js cd ../web && npm install && node build.mjs # rebuilds js/launchpad.js
Source code, tests and scripts live in the launchpad/ folder of the repository.
The meme coin launchpad on Robinhood Chain. Every coin launches with locked liquidity and a fixed 2% fee that is donated in full to WWF.
Registry read live from Robinhood ChainEchobase is a launchpad, not a broker, exchange or investment adviser. Meme coins are highly speculative and can lose all of their value. Nothing on this site is financial advice. Echobase donates to WWF and is not affiliated with or endorsed by it.