Team vest

A steady climb — each buyer pays a little more than the last.1% fee4× · 50 → 200 SOL mcap

← All configs

Drag across the chart, or focus it and use the arrow keys, to read the price at any point of the raise.4×1×2×3×4×First trade25%50%75%GraduationQuote raised toward graduationPrice vs first trade45% raised · 2.35×Team vest curve: 45% raised · 2.35×

Try a buy

Already raised Your buyLeft is the first trade. Right is graduation.

Price before you
2.05×
You pay, on average
2.2×
Price after you
2.35×
Left to graduation
55%

The raise is 35% full. You take the next 10%, leaving it 45% of the way to graduation. The price before you is 2.05× the first trade, and 2.35× after you. Across that slice you pay about 2.2× on average. If the whole supply were priced along this curve, market cap moves from about 102 SOL to 117 SOL. A flat 1% trading fee sits on the swap and does not change the shape.

Brief

A straight climb, plus tokens that stay locked after graduation and unlock on a schedule.

The chart is a straight climb. The extra rule is time. 150 million tokens are locked at graduation and do not unlock for 14 days, then they vest over about six months. That pile is not for sale on the curve and it is not dropped into the pool on day one. Use it when a team allocation would otherwise hit the market the moment the pool exists.

Pick this if

  • There is a team or treasury allocation that should not be liquid at graduation.
  • You can tell holders the cliff and the vest in one sentence.

Leave it if

  • You want the entire supply either sold on the curve or paired into the pool.
  • A 14-day cliff is too short, or too long, for this team. Change the days before you deploy.

How the money moves

  • If the whole supply were priced at the first trade, the market cap would be about 50 SOL.
  • At graduation it is about 200 SOL, which is 4× the starting price. The trading fee stays at 1% for the whole curve. The fee does not add a volatility bump.
  • Trading fees this config assigns go to the launchpad fee-claimer, not the coin creator.
  • After graduation, 100% of the LP is permanently locked to the launchpad fee-claimer.
  • It cannot be pulled. 150,000,000 tokens stay locked at graduation.
  • Nothing from that pile unlocks for 14 days, then it vests across 6 periods over 180 days. The token name and image cannot be changed after launch.
  • Graduation uses Meteora's 1% migration-fee preset.
  • That slice comes out of the quote before it is paired into DAMM v2.
  • Launching a pool on this config does not charge an extra creation fee.

Numbers

Quote
SOL
Token
SPL · 1,000,000,000 supply · 6 decimals
Starting market cap
50 SOL
Graduation market cap
200 SOL
Price by graduation
4× the first trade
Trading fee
1% fee
Volatility fee
Off
Creator trading fee
None
LP after graduation
100% locked · 0% withdrawable
Team vest
150,000,000 tokens · 14d cliff · 180d
Migration fee preset
1%
Metadata
Frozen

A recipe is numbers you deploy as your own PoolConfig. It is not another pad's address.

Deploy this recipe

create-config.ts· Team vest
import { NATIVE_MINT } from "@solana/spl-token";
import { Keypair, PublicKey } from "@solana/web3.js";
import {
  ActivationType,
  BaseFeeMode,
  buildCurveWithLiquidityWeights,
  CollectFeeMode,
  DynamicBondingCurveClient,
  MigrationFeeOption,
  MigrationOption,
  TokenDecimal,
  TokenType,
  TokenAuthorityOption,
} from "@meteora-ag/dynamic-bonding-curve-sdk";

// Team vest — deploy a new PoolConfig. Fee claimer is your wallet.
// This does not point launches at another pad's config address.
const curveConfig = buildCurveWithLiquidityWeights({
  token: {
    tokenType: TokenType.SPLToken,
    tokenBaseDecimal: TokenDecimal.SIX,
    tokenQuoteDecimal: TokenDecimal.NINE,
    tokenAuthorityOption: TokenAuthorityOption.Immutable,
    totalTokenSupply: 1_000_000_000,
    leftover: 0,
  },
  fee: {
    baseFeeParams: {
      baseFeeMode: BaseFeeMode.FeeSchedulerLinear,
      feeSchedulerParam: {
        startingFeeBps: 100,
        endingFeeBps: 100,
        numberOfPeriod: 0,
        totalDuration: 0,
      },
    },
    dynamicFeeEnabled: false,
    collectFeeMode: CollectFeeMode.QuoteToken,
    creatorTradingFeePercentage: 0,
    poolCreationFee: 0,
    enableFirstSwapWithMinFee: false,
  },
  migration: {
    migrationOption: MigrationOption.MET_DAMM_V2,
    migrationFeeOption: MigrationFeeOption.FixedBps100,
    migrationFee: { feePercentage: 0, creatorFeePercentage: 0 },
  },
  liquidityDistribution: {
    partnerLiquidityPercentage: 0,
    partnerPermanentLockedLiquidityPercentage: 100,
    creatorLiquidityPercentage: 0,
    creatorPermanentLockedLiquidityPercentage: 0,
  },
  lockedVesting: {
    totalLockedVestingAmount: 150000000,
    numberOfVestingPeriod: 6,
    cliffUnlockAmount: 0,
    totalVestingDuration: 15552000,
    cliffDurationFromMigrationTime: 1209600,
  },
  activationType: ActivationType.Timestamp,
  initialMarketCap: 50,
  migrationMarketCap: 200,
  liquidityWeights: [1, 1, 1, 1],
});

const config = Keypair.generate();
const partner = /* your launchpad wallet */ new PublicKey("YOUR_FEE_CLAIMER");

const createConfigTx = await client.partner.createConfig({
  config: config.publicKey,
  feeClaimer: partner,
  leftoverReceiver: partner,
  payer: partner,
  quoteMint: NATIVE_MINT,
  ...curveConfig,
});