Long tail

Price stays near the start until late, then turns up hard.1% fee6× · 30 → 180 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.6×1×2×3×4×5×6×First trade25%50%75%GraduationQuote raised toward graduationPrice vs first trade45% raised · 1.87×Long tail curve: 45% raised · 1.87×

Try a buy

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

Price before you
1.68×
You pay, on average
1.78×
Price after you
1.87×
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 1.68× the first trade, and 1.87× after you. Across that slice you pay about 1.78× on average. If the whole supply were priced along this curve, market cap moves from about 50.34 SOL to 56.16 SOL. A flat 1% trading fee sits on the swap and does not change the shape.

Brief

The open is cheap and deep. The price only gets serious once most of the supply is gone.

More than half the raise happens before the price even doubles, so the early crowd is not fighting over scraps. Each later chunk of supply costs more than the last, and the final sliver is where scarcity gets priced. It suits game items or memberships where you want a wide, fair open and you are happy for latecomers to pay for being late.

Pick this if

  • You want the open to feel generous — cheap, deep supply for the first crowd.
  • Late buyers paying a real scarcity premium is a feature, not a complaint.

Leave it if

  • You need the last buyers to pay anywhere near the first buyers' price.
  • A 6× gap between the first trade and graduation feels too wide for this community.

How the money moves

  • If the whole supply were priced at the first trade, the market cap would be about 30 SOL.
  • At graduation it is about 180 SOL, which is 6× 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. The launchpad wallet can update the token name and image.
  • Mint authority is not left open. 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
30 SOL
Graduation market cap
180 SOL
Price by graduation
6× the first trade
Trading fee
1% fee
Volatility fee
Off
Creator trading fee
None
LP after graduation
100% locked · 0% withdrawable
Team vest
None
Migration fee preset
1%
Metadata
Launchpad can update

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

Deploy this recipe

create-config.ts· Long tail
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";

// Long tail — 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.PartnerUpdateAuthority,
    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: 0,
    numberOfVestingPeriod: 0,
    cliffUnlockAmount: 0,
    totalVestingDuration: 0,
    cliffDurationFromMigrationTime: 0,
  },
  activationType: ActivationType.Timestamp,
  initialMarketCap: 30,
  migrationMarketCap: 180,
  liquidityWeights: [16, 8, 4, 2, 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,
});