padlaunch

HoldPad Team

Raydium LaunchLab5Rp5…TWLN
Fee per trade
2%
To this pad
1.75%
Graduated LP fees kept
100%
Quote assets for launches
586

Launch a token on HoldPad Team

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.

Priced in
What the token is bought with and raises: SOL, a stablecoin, or a tokenized stock like TSLAx. Any of them works on this pad right away, with no request to Raydium; each comes with its own minimum raise.
0 of 32 bytes
Up to 10 characters
Image and description
An https link to a JSON file with name, symbol, description and image (the Metaplex token standard), up to 200 characters. IPFS, a raw Gist or your own site all work.
SOL
Bought by you in the same transaction, before anyone else can trade.
SOL
Loading this config's limits.
Supply and curve
6 decimals. Raydium's default is 1,000,000,000.
%
Mint and pool rentabout 0.02 SOL
Your first buynone
Network feeshown in your wallet
You become the token's creator. Your wallet shows the full transaction before you sign.
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("5Rp57pG59yQSbR2ZxQA9bVcH1Tr7QMk98aC9KDCsTWLN"),          // 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.

Reading this pad's launches and fee vaults

Economics

One trade, split

2% per trade
  • This pad 1.75%
  • Token creator 0%
  • Raydium 0.25%

Graduated liquidity, locked forever

100%of LP fees to this pad
  • Fees to this pad 100%
  • Burned 0%
Graduated pool fee
2.05% per trade, 2% pool + 0.05% creator
Vesting share
0%
Curve rules
off
Config allowlist
off

Wallets

Fee claim wallet
HurAwD…yvZAfv
LP NFT wallet
HurAwD…yvZAfv
Vesting wallet
HurAwD…yvZAfv
Creator fee recipient
token creator
Transfer-fee authority
HurAwD…yvZAfv
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.

About 450 words. Paste it as the first message.
Read the prompt
Build me a token launchpad website for "HoldPad Team", 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: 5Rp57pG59yQSbR2ZxQA9bVcH1Tr7QMk98aC9KDCsTWLN (admin the wallet that created it; fee claim wallet HurAwDG4KCLb8Y38JWcXUcU6ZvHYoND7XntiomyvZAfv)
- Economics: platform fee 1.75% per trade, creator fee 0%, Raydium protocol fee 0.25%. After graduation the pad keeps 100% of the LP fee key, 0% 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/5Rp57pG59yQSbR2ZxQA9bVcH1Tr7QMk98aC9KDCsTWLN

## 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 HurAwDG4KCLb8Y38JWcXUcU6ZvHYoND7XntiomyvZAfv): 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.