pumpPumpDocs

Get started

Introduction

What pump is, how the bonding curve and PumpSwap AMM fit together, and where to start integrating.


Pump lets anyone create coins, giving everyone equal access to buy and sell from the start. Every coin is instantly tradeable on a bonding curve, with no need to seed liquidity. Once the curve fills up, its liquidity migrates to PumpSwap, Pump's own constant-product AMM, and the LP tokens minted by that migration are burnt.

Everything below is on-chain and permissionless: the same instructions that power pump.fun and Terminal are available to your own program, bot, or indexer.

Coin lifecycle

  1. Createcreate_v2 mints a Token-2022 coin with decimals = 6 and initializes its bonding curve. The creator picks the quote mint (SOL by default, USDC supported).
  2. Trade on the curvebuy_v2 and sell_v2 price against the curve's virtual and real reserves, using a Uniswap V2 style constant product formula.
  3. Graduate — when real_token_reserves hits 0, the curve is marked complete.
  4. Migrate — anyone can call migrate, which moves the liquidity into a canonical PumpSwap pool (index 0) and burns the LP tokens.
  5. Trade on the AMM — the coin keeps trading on PumpSwap with LP, protocol and coin-creator fees.

The three programs

ProgramAddressWhat it does
Pump6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6PCoin creation, bonding curve trading, migration, cashback
PumpSwap (Pump AMM)pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEAConstant-product pools, liquidity, post-graduation swaps
Pump FeespfeecUb2rBoZQddahu8RPgtLKvmjSLKCJ3oWgDF347dDynamic fee tiers and creator fee sharing

All three are deployed at the same addresses on Mainnet and Devnet.

Key accounts

AccountAddress / seeds
Global (Pump)4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf, PDA of ["global"]
GlobalConfig (PumpSwap)ADyA8hdefvWN2dbGGWFotbzWxrAvLW83WG6QCVXvJKqw, PDA of ["global_config"]
BondingCurvePDA of ["bonding-curve", mint]
PoolPDA of ["pool", index, creator, base_mint, quote_mint]
UserVolumeAccumulatorPDA of ["user_volume_accumulator", user], per program

Use the unified v2 interface

buy_v2, sell_v2 and buy_exact_quote_in_v2 take no optional accounts — every account is mandatory and passed in the same order for every kind of coin. New integrations should use them exclusively; the legacy buy / sell instructions still work but cannot trade coins paired with a non-SOL quote mint such as USDC.

For SOL-paired coins, pass wrapped SOL (So11111111111111111111111111111111111111112) as the quote_mint. Transfers still settle in native SOL, and there is no extra cost compared to the legacy instructions.