Getting started
This page gets you connected to the launchpad and explains the handful of concepts that show up everywhere else: the launchpad contract, the ABI, roles, and fees.
Connect to the launchpad
CheesePad is one contract per chain. Pools, microsales, and Melt Pools are all flows on that same
contract, not separate deployments, so there is a single address to configure. Grab the one for your
network from the overview, and instantiate it with the Launchpad ABI.
import { ethers } from "ethers";
// https://docs.cheesepad.ai/abi/Launchpad.json
import LaunchpadABI from "./abi/Launchpad.json";
const provider = new ethers.JsonRpcProvider(RPC_URL);
const LAUNCHPAD = "0x0AA21d47b600B04527c09BbD9A30aF32cb64f6cF"; // bnbTestnet
// Read-only
const launchpad = new ethers.Contract(LAUNCHPAD, LaunchpadABI, provider);
// Write (attach a signer)
const signer = await provider.getSigner();
const launchpadRW = launchpad.connect(signer);
Where the ABI comes from
Download it here: Launchpad.json.
The launchpad is a diamond, so its functions and events are spread across around 39 facet contracts behind a single address. That file is all of them flattened into one ABI: every function, event, and error described in these docs. Point your contract instance at the launchpad address and use it as-is.
Networks
| Network | Chain ID | RPC | Explorer |
|---|---|---|---|
| BNB Chain | 56 | any BSC RPC | bscscan.com |
| BNB testnet | 97 | any BSC testnet RPC | testnet.bscscan.com |
| Robinhood Chain | 4663 | https://rpc.mainnet.chain.robinhood.com/ | robinhoodchain.blockscout.com |
BNB testnet relaxes one rule: the minimum LP lock drops to 5 minutes so you can exercise unlocking during QA. On both mainnets the floor is 30 days for a pool and 365 days for a microsale. Note that Robinhood Chain is a mainnet, so it does not get the testnet relaxation. Everything else behaves the same across all three networks; see the constants table for the exact values.
Who can do what
Most calls are permissionless. The ones that manage a specific sale are gated to that sale's owner:
- Anyone. Creating a sale, contributing, trading a Melt Pool, claiming, refunding, and every view function are open to any address.
- Sale owner. The address that created a given sale. It can finalize, cancel, and edit that sale's details.
- Admin. The platform. A few steps happen on the platform side rather than yours: publishing the microsale templates and Melt Pool config you launch against, and computing a Subscription pool's allocation. These are called out where they come up; you never need admin rights to launch or participate.
Fees
Two fees matter to an integrator.
Creation fee. Creating a sale may cost a flat native fee, and the two launch styles read it from
different fields: pools use masterConfig.creationFee, microsales use
masterConfig.microSaleCreationFee. Send it as msg.value on the create call; it is forwarded to
the platform fee address. Pools require the exact amount, microsales require at least it. Read the
value before quoting a cost:
const cfg = await launchpad.getMasterConfig();
const poolFee = cfg.creationFee; // for pool launches
const microFee = cfg.microSaleCreationFee; // for microsale launches
Platform fee at finalize. When a sale finalizes, a cut of the raise is taken off the top and
sent to the platform fee address; the rest is paired with LP tokens and added to the DEX. Microsales
use a flat 5%. Pools use the platform's nativeFeePercent. Either way you do not pay it directly; it
comes out of the raise, which is why the listing math is applied to the post-fee amount.
Melt Pool trade fee. Every Melt Pool curve trade pays a flat 1% fee, taken off the top of each buy and sell. It applies during the curve phase and stops once the pool graduates to a DEX.
Tax-token platform fee. A tax token (CheeseTaxTokenV2) collects the creator's buy/sell tax, and
on top of it CheesePad takes an additional 10% platform fee on that creator tax — during a Melt
Pool's curve phase and after listing alike. The rate is stored on-chain; read it with
getPlatformCutBps() (returns preBps, postBps — the curve-phase and post-listing rates in BPS).
See the token fee model for the full picture.
One more fee to be aware of: an emergency withdrawal (leaving a live sale early) costs the contributor 10% of their contribution.
Reading the platform config
getMasterConfig() returns the platform-wide settings. The fields you are most likely to read:
| Field | Meaning |
|---|---|
feeTo | where platform fees and creation fees go |
locker | the LP locker used when a sale locks liquidity |
microSaleCreationFee | flat native fee to create a microsale (may be 0) |
platformRole | the vault emergency-rescue backstop address |
giftRelayerSigner | the signer that attests GiftVault identity binds |
The full struct is in events-and-data.md.
Next
Pick your launch style: pools.md, microsale.md, or melt-pool.md. If you care about where a tax token's revenue lands, see vaults.md.