chainui
- Fee per trade
- 3.25%
- To this pad
- 3%
- Graduated LP fees kept
- 10%
- Quote assets for launches
- 586
Launch a token on chainui
Name it, add an image, pick what it is priced in, sign once. The token trades on Raydium's curve and this pad collects its fee on every trade.
Launch from a script instead
Any script or front-end that passes this pad's id as platformId launches tokens whose fees flow here.
import { Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2";
import { Connection, Keypair, PublicKey } from "@solana/web3.js";
import BN from "bn.js";
const raydium = await Raydium.load({ connection: new Connection(RPC_URL), owner: creatorKeypair, cluster: "mainnet" });
const mintA = Keypair.generate();
const { execute } = await raydium.launchpad.createLaunchpad({
platformId: new PublicKey("9xr4SxGPXnkvRRv6TnQDsc1dyHxpMrseSG3aA1YmhDeD"), // this pad
configId: new PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"), // WSOL constant-product config
mintA: mintA.publicKey,
name: "My Token",
symbol: "MYT", // max 10 chars
uri: "https://…/metadata.json",
migrateType: "cpmm",
buyAmount: new BN(100_000_000), // optional first buy, lamports
slippage: new BN(100), // 1%
extraSigners: [mintA],
txVersion: TxVersion.V0,
});
await execute({ sequentially: true });Tokens and fees
Every trade on a token launched here sends the platform fee to a vault per quote asset, owned by this pad.
Economics
One trade, split
- This pad 3%
- Token creator 0%
- Raydium 0.25%
Graduated liquidity, locked forever
- Fees to this pad 10%
- Burned 90%
- Graduated pool fee
- 1.25% per trade, 0.5% pool + 0.75% creator
- Vesting share
- 0%
- Curve rules
- off
- Config allowlist
- off
Wallets
- Fee claim wallet
- 5ahm7H…ovJTAw
- LP NFT wallet
- 5ahm7H…ovJTAw
- Vesting wallet
- 5ahm7H…ovJTAw
- Creator fee recipient
- token creator
- Transfer-fee authority
- 5ahm7H…ovJTAw
- Curve rule manager
- unset
- Program
- LanMV9…duJ3uj
The platform fee only applies while a token is on the curve. After graduation the pad earns through the locked LP's fee key and, if set, the pool's creator fee. How claiming works.
Build your own front-end
Paste this into Claude, Cursor or any coding assistant. It carries this pad's addresses, the SDK calls, the economics and the pitfalls we hit building this site.
Read the prompt
Build me a token launchpad website for "chainui", my launchpad ("pad") on Raydium LaunchLab on Solana mainnet.
## What exists on chain already (do not create a platform; use this one)
- Solana cluster: mainnet
- LaunchLab program: LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj
- My pad = PlatformConfig account: 9xr4SxGPXnkvRRv6TnQDsc1dyHxpMrseSG3aA1YmhDeD (admin the wallet that created it; fee claim wallet 5ahm7HawmsbxU2b3qeFuJwS1LQUUxTnC545MeGovJTAw)
- Economics: platform fee 3% per trade, creator fee 0%, Raydium protocol fee 0.25%. After graduation the pad keeps 10% of the LP fee key, 90% is burned.
- Quote configs: any LaunchLab GlobalConfig may be used. The SOL config is 6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX; the full list with tokenized-stock quotes is at https://padlaunch.app/api/quotes?protocol=raydium .
- Pad page on padlaunch for reference: https://padlaunch.app/pad/9xr4SxGPXnkvRRv6TnQDsc1dyHxpMrseSG3aA1YmhDeD
## What the site must do
1. Home: list every token launched on my pad (getProgramAccounts on the program, dataSize 429, memcmp platformId at offset 173 of the LaunchpadPool layout; decode with `LaunchpadPool.decode`), with raise progress (realB / totalFundRaisingB), status and links.
2. Launch page: name, symbol, description, image, optional initial buy. Upload image + Metaplex-style JSON to IPFS server-side, then `raydium.launchpad.createLaunchpad({ programId, platformId, configId, configInfo, platformFeeRate, mintA, name, symbol, uri, migrateType: "cpmm", supply, totalSellA, totalFundRaisingB, buyAmount, createOnly, slippage, extraSigners: [mintA], txVersion })`. Standard shape: 1B supply (6 decimals), 79.31% sold on the curve, 85 SOL raise. The SDK calls `api.fetchLaunchConfigs()` for defaults before it reads the explicit fields; stub that method with `[{ key: { pubKey: configId }, defaultParams: { supplyInit, totalSellA, totalFundRaisingB } }]` when the API is unreachable, and pass `configInfo` decoded from chain with `LaunchpadConfig.decode`.
3. Token page: buy and sell on the curve with `raydium.launchpad.buyToken` / `sellToken` (quotes via `Curve.buyExactIn` / `sellExactIn` with the config's tradeFeeRate and my platform fee). After graduation link to the CPMM pool.
4. My dashboard (only when the connected wallet is 5ahm7HawmsbxU2b3qeFuJwS1LQUUxTnC545MeGovJTAw): balance of the fee vault per quote mint (PDA getPdaPlatformVault(programId, platformId, mintB)) and a one-click sweep with `claimPlatformFeeFromVault` (unwrap WSOL in the same transaction).
## Stack and rules
- Next.js (App Router) + TypeScript on Vercel. Wallets via @solana/wallet-adapter-react with wallet-standard auto-detection.
- SDK: @raydium-io/raydium-sdk-v2 (`Raydium.load({ connection, owner, cluster, disableLoadToken: true, disableFeatureCheck: true })`). Docs: https://docs.raydium.io/products/launchlab . Demo repo: https://github.com/raydium-io/raydium-sdk-V2-demo .
- Keep the RPC key server-side: build and simulate every transaction in a route handler, return it base64, sign in the browser, confirm by polling getSignatureStatuses. Retry a simulation once on BlockhashNotFound. Pin rpc-websockets' uuid to 10.x (Vercel's runtime has require(esm) disabled).
- Never render on-chain names, websites or logo URLs as-is: only load https URLs to public hostnames.
- Devnet first (program DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6, use DEV_LAUNCHPAD_PROGRAM from the SDK), then mainnet (LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj).
Manage this pad
Only the wallet that created the pad can change it. Each save is one transaction.
Connect the wallet that created this pad to change its name, fees, wallets or graduation settings.