// docs

How the Launchpad works

A complete reference for the multichain bonding-curve launchpad. Built for people who want to read the actual contracts and understand the economics before they ape.

// what this is

Overview

This launchpad lets anyone create an ERC-20 token in one transaction. The token is priced by a bonding curve where price rises as supply sells. When 800M of the 1B supply has been bought, the curve graduates and real liquidity gets deployed across every supported chain's main DEX. From that moment on the token trades like any other token on Uniswap, Aerodrome, PancakeSwap, and Raydium.

The differentiator versus pump.fun, sun.pump, four.meme, and stonks is that the token is canonical across every chain from the moment it's created. Same contract address on Base, Ethereum, BSC. Same total supply globally. Same price at every moment. No bridges later, no fragmented liquidity.

All crypto features are in public testing on testnet. Do not use real funds. When mainnet launches we will announce.

// create then trade then graduate

Token lifecycle

  1. 01

    Create

    Anyone calls createToken(name, symbol) on the hub launchpad on Base. 1B supply is minted to the launchpad. The creator can also do an initial dev buy by passing ETH alongside the create call. There is no creation fee beyond gas.

  2. 02

    Trade on the curve

    Buyers send ETH, the curve gives back tokens. Sellers send tokens, the curve gives back ETH. Price follows x*y=k against virtual reserves of 45 ETH and 1.073B tokens. Every trade pays the platform 1% plus the creator's chosen 0-3% (so 1-4% total). Users on Eth or BSC trade via a Portal contract that forwards their intent through LayerZero to the hub. Solana users will trade via Wormhole once the spoke program ships.

  3. 03

    Graduate

    When tokensSold reaches 800M, graduation fires. 200M LP tokens plus the ~131 ETH collected on the curve are sent to the GraduationVault. The vault deploys real liquidity on every chain (Aerodrome on Base, Uniswap on Eth, PancakeSwap on BSC, Raydium on Solana) and burns the LP NFTs. Total LP value is around $400k split across chains.

  4. 04

    Trade on real DEXes

    From graduation onward the token trades natively on each chain's main DEX. Holders on Eth swap on Uniswap. Holders on BSC swap on PancakeSwap. Holders on Solana swap on Raydium. Arbitrage bots keep the price consistent across chains because the OFT token has a single global supply.

// x*y=k with virtual reserves

Bonding curve math

The curve is constant product with virtual reserves. It mirrors Uniswap V2 math, but the "reserves" are not actually held by the contract for the first 800M tokens. They are accounting only.

// constants

VIRTUAL_ETH_INIT = 45 ETH

VIRTUAL_TOKEN_INIT = 1.073B tokens

CURVE_SUPPLY = 800M tokens

LP_RESERVE = 200M tokens

// for a buy of ethIn:

tokensOut = (ethIn * virtualTokens) / (virtualEth + ethIn)

// then update state:

virtualEth += ethIn (after 1% fee)

virtualTokens -= tokensOut

The virtual reserves are calibrated so that buying all 800M tokens off the curve collects roughly 131 ETH. At today's prices that means graduation seeds about $400k in liquidity split across the supported chains.

Overshoot refund: if your buy would push past 800M tokens (would trigger graduation), the contract caps your purchase at exactly the remaining supply and refunds the excess ETH. You never "buy past" the curve.

// creator picks pricing + post-presale path

Presale mode (alternative launch)

A creator can opt for a presale instead of (or before) the bonding curve. Two orthogonal choices: how the per-token price is set, and what happens after the presale closes.

pricing mode

  • Fixed price. Creator picks tokensPerEth at launch. First-come-first-served until the hardcap is hit. Closes immediately on hardcap.
  • Pro-rata. Creator picks a token allocation. At close every contributor gets (theirEth / totalEth) * allocation. Encourages large early participation; no fixed rate.

post-presale path

  • Presale → Curve. After a successful close, the bonding curve opens for trading. The curve is seeded so its spot price matches the presale clearing price — secondary market starts seamlessly.
  • Presale → DEX direct. Skip the curve entirely. Raised ETH + LP reserve are sent straight to the GraduationVault, which seeds real DEX liquidity on every supported chain and burns LP. Cleaner UX for a single big launch event.

lifecycle

A presale ends the moment EITHER the hardcap is reached OR the endTime passes. At close, if the softcap was met the presale is Successful and tokens become claimable. If softcap wasn't met (and one was set), the presale is Failed and contributors can reclaim their ETH via refund. Per-wallet caps are optional.

Cross-chain contribution is on the roadmap (Phase 2). Today, presale contributions are accepted on the hub chain only; the on-chain logic supports cross-chain via the same bridge pattern as buys, but the bridge wiring + Portal extensions land in a follow-up. Successful presale distribution still routes via the existing OFT bridge so users on any chain ultimately get their mirror tokens.

// canonical OFT, hub and spoke

Multichain architecture

The bonding curve state lives on exactly one chain: Base. Every other supported chain runs a Portal contract that forwards buy/sell intents through LayerZero v2 to the hub. The hub processes the trade and ships the result back.

The token itself is an OFT (Omnichain Fungible Token via LayerZero), which means the same contract address exists on every EVM chain and supply moves between them via burn-and-mint messages. On Solana the equivalent is Wormhole NTT (Native Token Transfers).

Alice on Ethereum             Hub on Base
-----------------             ------------
Portal.buy{0.1 ETH}
   |
   | sendBuy via LZ
   |--------------------------> relayBuy
                                   |
                                   | receiveRemoteBuy
                                   |    (curve runs here,
                                   |     tokens minted via OFT)
                                   |
                              <----+
                              BuyResult: tokens + refund
   |
   | LZ delivers, OFT mint
<--+
tokens land in Alice's wallet on Ethereum

Round-trip on testnet is 3 to 8 minutes (LZ DVN verification + executor delivery). Mainnet defaults are 30 seconds to 2 minutes with the standard DVN config.

// real LP on every chain, permanently burned

Graduation

When the curve fills (800M tokens sold), the graduation flow kicks in. It runs in two phases.

Phase 1, atomic with the graduating buy: 200M LP-reserve tokens and the entire ETH collected on the curve are transferred from the launchpad to the GraduationVault. A pending entry is recorded. The user's tx finishes here.

Phase 2, permissionless: anyone (typically a keeper bot) calls vault.deployLP(token). The vault iterates over every configured chain, splits the LP and ETH by the configured bps weights, and dispatches to each chain's DEX:

  • Base (hub, default 50%) seeds Aerodrome via addLiquidityETH, sends LP tokens to the burn address.
  • Ethereum spoke (default 16.6%) dispatches via LayerZero to a SpokeLPDeployer that seeds Uniswap V2 and burns LP.
  • BSC spoke (16.6%) same pattern, PancakeSwap V2.
  • Solana spoke (16.6%) Wormhole NTT delivery to a Solana program that seeds Raydium CPMM and burns LP.

Why burn the LP? Because the only way users trust that a token isn't going to rug is permanent locked liquidity. If the LP position can ever be unwound by the team, "rug pull" is on the table. Burning the LP NFT means no one (including the launchpad team) can ever pull the liquidity.

// 1% platform fee + creator-chosen 0-3% (creator picks the split)

Fees and economics

on the curve

Every trade pays a fee taken from the trade amount (not added on top). The fee has two parts, set when the token is launched and immutable for the token's entire life:

  • 1% platform fee on every trade. Goes to the platform treasury. Always 1%, no exceptions.
  • 0-3% creator fee, picked by the creator at launch from four presets: 0%, 1%, 2%, or 3%. This is on top of the platform's 1%, so the total trade fee a token can charge is 1-4%.

The creator also picks how their 0-3% slice splits between themselves and holders. Three preset splits: all to holders (0/100), 50/50, or all to creator (100/0). With 50/50 plus a 2% creator fee, a 1 ETH trade pays 0.01 to the platform, 0.01 to the creator, 0.01 to holders — 3% total.

Creators start earning from the very first trade on their token, not just post-graduation. If the creator address rejects ETH (e.g. a contract with no receive), their slice falls back to the platform treasury so the trade still settles.

Bridge fees (LayerZero relay for Eth/BSC, Wormhole for Solana) are a separate cost for cross-chain trades. On testnet these run around 0.0006 ETH per outbound LayerZero message.

post-graduation

At graduation, real liquidity gets seeded into a Uniswap V4 pool on every supported chain. Attached to that pool is a custom hook contract that takes the same fee structure as the curve: 1% platform + the creator's chosen 0-3% with the same split. Creator and holder economics stay constant across a token's entire lifecycle: pre and post-graduation.

The LP NFT is still burned for trust. The hook contract is immutable, so the fee parameters (chosen at the token'screateToken call) cannot be changed after deploy. Anyone can audit the hook source once and then trust the economics forever.

The V4 hook contract is written and tested but not yet deployed. Uniswap V4 hook addresses require CREATE2 salt mining at deploy time (the address must encode the hook's permission flags). Until that mining script is wired in, graduating tokens fall back to plain V2-style routers. The v4 hook is the next item.

// LP burn, audits, known limitations

Safety

what protects users

  • Bonding curve is mathematically deterministic. Same input always gives the same output. No oracles, no admin price manipulation.
  • Platform's 1% slice is hardcoded and cannot be changed post-deploy. The creator's additional 0-3% and how it splits between creator and holders are locked in per token atcreateToken — immutable for that token's entire lifecycle.
  • Graduation LP is burned permanently. No one can pull liquidity, including the launchpad team.
  • Curve parameters (virtual reserves, supply split, curve supply, graduation threshold) are immutable per deployment.

known limitations

  • Pre-audit. Contracts are tested and on testnet but have not yet been formally audited. Do not deploy real funds.
  • Owner centralization. The launchpad owner can change the bridge address and the fee recipient. For mainnet this will move to a 3/5 Safe multisig.
  • Hub bridge float. Cross-chain buys require the hub bridge to have ETH float to fund the curve trade. The operator needs to top this up periodically. A planned automation will use platform-fee revenue to refill.
  • Cross-chain sell supply. The current implementation does not perfectly preserve the OFT global supply invariant on sells. A planned patch in v0.2 fixes the burn-on-spoke + no-mint-on-hub pattern.

Full security review at SECURITY.md in the repo. It lists every known finding by severity with concrete recommendations.

// common questions

FAQ

What chains are supported?

Today: Base Sepolia (hub) and Eth Sepolia (spoke) on testnet. Mainnet plan: Base hub, Ethereum + BSC + Solana spokes.

Can I buy from a chain that's not deployed yet?

No, you can only buy from a configured spoke chain. New chains are added by deploying a Portal contract and registering it as a LayerZero peer. The token automatically becomes available there.

What happens if the LayerZero message fails?

LayerZero v2 messages that fail simulation can be manually retried by calling endpoint.lzReceive on the destination chain. If a message stays stuck for a long time, the user's source-chain ETH stays in the spoke bridge and can be retried. We do not have an automatic refund flow yet.

Why isn't the token on every DEX immediately?

It is canonical-address from launch, but liquidity only seeds on graduation. Before then, the only way to buy or sell is via the launchpad's bonding curve. After graduation, it's on every supported chain's main DEX.

Can the team mint more tokens later?

No. Total supply (1B) is fully minted at create time. There is no mint authority left over. The OFT bridgeMint hook is gated to the bridge contract and only used to move existing supply across chains (a corresponding bridgeBurn happens on the source chain).

Why bonding curve instead of fixed price?

Price discovery. A fixed price means the team picks who gets cheap tokens. A bonding curve lets the market price discovery happen organically: early buyers get cheaper tokens, later buyers pay more. By the time graduation hits, the market has collectively decided the token's value.

Where does the trade fee go?

The platform's fixed 1% goes to the platform treasury. The creator's chosen 0-3% slice is then split between the creator and the holder-rewards destination per the ratio the creator picked at createToken (0/100, 50/50, or 100/0). All of this happens in the same transaction. The same fee structure applies to curve trades AND post-graduation Uniswap V4 swaps via the FeeSplitHook. On mainnet the platform address will be a Safe multisig.

When does Solana go live?

Solana is on a different bridge stack (Wormhole NTT instead of LayerZero) so it ships later than Eth + BSC. As of right now the Anchor program compiles and the message format is locked in; what's left is the Wormhole CPI wiring, a Base-side WormholeAdapter contract, and per-token NTT configuration. Plan and progress live in solana/WORMHOLE_NTT_PLAN.md.

// next steps

Ready to launch a token or explore live ones?