Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
agiprolabs avatar

Pumpfun Mechanics

  • 196 installs
  • 257 repo stars
  • Updated June 24, 2026
  • agiprolabs/claude-trading-skills

pumpfun-mechanics is a Claude Code skill that computes PumpFun bonding-curve math, graduation, and instruction/event parsing for the Solana token launchpad.

About

pumpfun-mechanics is a Claude Code skill for the PumpFun Solana token launchpad. It documents the virtual constant-product bonding-curve math, computes buy/sell amounts and price impact, tracks the ~85 SOL graduation threshold, and parses PumpFun CreateEvent, TradeEvent, and CompleteEvent plus PumpSwap migration. A developer uses it to analyze new token launches and build strategies around graduation.

  • Virtual constant-product bonding-curve math with buy/sell and buy-cost functions matching on-chain rounding
  • Graduation mechanics at ~85 SOL and PumpSwap/Raydium migration targets
  • Program IDs and event discriminators for parsing PumpFun and PumpSwap transactions

Pumpfun Mechanics by the numbers

  • 196 all-time installs (skills.sh)
  • Ranked #477 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

pumpfun-mechanics capabilities & compatibility

Free skill; needs a Solana RPC endpoint to fetch live on-chain data, demo mode uses default parameters.

Capabilities
bonding curve math · onchain event parsing · graduation tracking · price impact analysis
Use cases
data analysis
Pricing
Bring your own API key
From the docs

What pumpfun-mechanics says it does

PumpFun is the dominant Solana token launchpad. Understanding its bonding curve math, graduation process, and instruction formats is essential
SKILL.md
Graduation occurs when `realSolReserves` reaches **~85 SOL** (~$12K-14K depending on SOL price). Only ~1.4% of PumpFun tokens ever graduate.
SKILL.md
npx skills add https://github.com/agiprolabs/claude-trading-skills --skill pumpfun-mechanics

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs196
repo stars257
Last updatedJune 24, 2026
Repositoryagiprolabs/claude-trading-skills

What it does

Compute PumpFun bonding curve prices, track graduation, and parse on-chain PumpFun instructions and events on Solana.

Who is it for?

Analyzing PumpFun token launches and parsing on-chain PumpFun/PumpSwap activity.

Skip if: General technical analysis or non-Solana markets.

When should I use this skill?

You need PumpFun price math, graduation status, or to decode PumpFun trade/create/complete events.

What you get

Accurate PumpFun prices, fill percentages, graduation estimates, and parsed on-chain events.

  • PumpFun price and price-impact calculations
  • Graduation fill percentage
  • Parsed PumpFun/PumpSwap events

By the numbers

  • 30 SOL initial virtual reserves
  • ~85 SOL graduation threshold
  • ~1.4% of tokens graduate

Files

SKILL.mdMarkdownGitHub ↗

PumpFun Mechanics — Bonding Curves, Graduation & Instruction Parsing

PumpFun is the dominant Solana token launchpad. Understanding its bonding curve math, graduation process, and instruction formats is essential for analyzing new token launches, building trading strategies around graduation events, and parsing on-chain PumpFun activity.

Bonding Curve Math

PumpFun uses a virtual constant-product (CPMM) bonding curve:

k = virtualSolReserves × virtualTokenReserves

Initial Parameters

ParameterValue
Initial Virtual SOL30 SOL (30,000,000,000 lamports)
Initial Virtual Tokens~1.073B tokens (1,073,000,000,000,000 raw, 6 decimals)
Token Total Supply1B tokens (1,000,000,000,000,000 raw)
Real Token Reserves~793M tokens (793,000,000,000,000 raw)
Real SOL Reserves0 (no real SOL at launch)
Fee1% (applied externally by the program)

Virtual vs Real: Virtual reserves define the curve shape. Real reserves track actual withdrawable funds. The difference (1.073B - 793M = 280M virtual tokens) shapes the initial price but can never be withdrawn.

Spot Price

price_sol_per_token = virtual_sol_reserves / virtual_token_reserves

# In human-readable units:
price = (virtual_sol / 1e9) / (virtual_token / 1e6)

# At genesis: 30 / 1,073,000,000 ≈ 2.796e-8 SOL/token
# At graduation: ~4.1e-7 SOL/token (~14.7x from launch)

Buy Tokens (SOL → Tokens)

def buy_tokens(v_sol: int, v_tok: int, real_tok: int, sol_in: int) -> int:
    """Calculate tokens received for a given SOL input.

    Args:
        v_sol: Virtual SOL reserves (lamports).
        v_tok: Virtual token reserves (raw).
        real_tok: Real token reserves (raw).
        sol_in: SOL to spend (lamports, BEFORE 1% fee).

    Returns:
        Tokens received (raw units).
    """
    k = v_sol * v_tok
    new_v_sol = v_sol + sol_in
    new_v_tok = k // new_v_sol + 1  # +1 matches on-chain rounding
    tokens_out = v_tok - new_v_tok
    return min(tokens_out, real_tok)

Sell Tokens (Tokens → SOL)

def sell_tokens(v_sol: int, v_tok: int, real_sol: int, tokens_in: int) -> int:
    """Calculate SOL received for selling tokens.

    Args:
        v_sol: Virtual SOL reserves (lamports).
        v_tok: Virtual token reserves (raw).
        real_sol: Real SOL reserves (lamports).
        tokens_in: Tokens to sell (raw units).

    Returns:
        SOL received (lamports, BEFORE 1% fee).
    """
    k = v_sol * v_tok
    new_v_tok = v_tok + tokens_in
    new_v_sol = k // new_v_tok
    sol_out = v_sol - new_v_sol - 1  # -1 matches on-chain floor rounding
    return min(sol_out, real_sol)

Buy Cost (Exact token amount → SOL needed)

def buy_cost(v_sol: int, v_tok: int, tokens_wanted: int) -> int:
    """Calculate SOL needed to buy exact token amount.

    Returns:
        SOL cost in lamports (before fee). Returns max int if impossible.
    """
    if tokens_wanted >= v_tok:
        return 2**64 - 1  # impossible
    k = v_sol * v_tok
    new_v_tok = v_tok - tokens_wanted
    new_v_sol = k // new_v_tok + 1
    return new_v_sol - v_sol

Fee Handling

The 1% fee is not part of the curve math. It's applied externally:

# Buying: fee deducted from SOL input before curve
actual_sol_to_curve = sol_input * 0.99

# Selling: fee deducted from SOL output after curve
actual_sol_received = sol_from_curve * 0.99

# Roundtrip minimum cost: ~2% from fees alone, plus price impact

Market Cap

market_cap_sol = (token_total_supply * virtual_sol_reserves) / virtual_token_reserves

Graduation

Graduation occurs when realSolReserves reaches ~85 SOL (~$12K-14K depending on SOL price). Only ~1.4% of PumpFun tokens ever graduate.

What Happens

1. complete flag set to true on bonding curve account 2. CompleteEvent emitted (discriminator 5f72619cd42e9808) 3. Bonding curve stops accepting trades 4. ~$12K liquidity deposited to the destination DEX 5. Token becomes tradeable on PumpSwap (or Raydium for older tokens)

Fill Percentage

GRADUATION_THRESHOLD = 85_000_000_000  # 85 SOL in lamports

fill_pct = (real_sol_reserves / GRADUATION_THRESHOLD) * 100.0

Migration Targets

  • March 2025+: PumpSwap (pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA) — native AMM, no migration fee
  • Before March 2025: Raydium V4 (675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8) — 6 SOL fee

PumpSwap Post-Graduation

PumpSwap is a constant-product AMM with 1% fee (same as bonding curve). Key differences:

  • Base asset is always WSOL, quote is token
  • Instruction semantics are inverted: "buy" instruction sells tokens, "sell" instruction buys tokens
  • Supports creator revenue sharing (0.05% of volume to original creator)

Program IDs & Addresses

Program/AccountAddress
PumpFun Program6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
PumpSwap ProgrampAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
Fee ProgrampfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
Global Account4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
Fee Recipient62qc2CNXwrYqQScmEdiZFFAnJR262PxWEuNQtxfafNgV
Event AuthorityCe6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1

Event Parsing

Events are Anchor-style: sha256("event:<EventName>")[0..8]

EventDiscriminator (hex)
CreateEvent1b72a94ddeeb6376
TradeEventbddb7fd34ee661ee
CompleteEvent5f72619cd42e9808

TradeEvent Layout (after 8-byte discriminator)

mint:                  pubkey   32 bytes
solAmount:             u64       8 bytes
tokenAmount:           u64       8 bytes
isBuy:                 bool      1 byte
user:                  pubkey   32 bytes
timestamp:             i64       8 bytes
virtualSolReserves:    u64       8 bytes
virtualTokenReserves:  u64       8 bytes
realSolReserves:       u64       8 bytes
realTokenReserves:     u64       8 bytes

Critical: Events are in CPI inner instructions. Search for discriminators anywhere in instruction data, not just at offset 0.

Bonding Curve Account Layout

Offset 0:   discriminator          8 bytes
Offset 8:   virtualTokenReserves   u64
Offset 16:  virtualSolReserves     u64
Offset 24:  realTokenReserves      u64
Offset 32:  realSolReserves        u64
Offset 40:  tokenTotalSupply       u64
Offset 48:  complete               bool (1 byte)
Offset 49:  creator                pubkey (32 bytes)

PDA Derivation

PDASeeds
Bonding Curve["bonding-curve", mint]
Bonding Curve V2["bonding-curve-v2", mint]
Creator Vault["creator-vault", creator]

Instruction Discriminators

InstructionHexNotes
buy_exact_sol_in (V2)38fc74089edfcd5fCurrent production buy
sell (V2)33e685a4017f83adCurrent production sell
buy (V1/legacy)66063d1201daebeaLegacy, still seen occasionally
create181ec828051c0777Token creation

Buy Instruction Data (24 bytes)

[0..8]:   discriminator
[8..16]:  spendable_sol_in    u64 LE (total SOL budget, fees deducted internally)
[16..24]: min_tokens_out      u64 LE (slippage floor)

Sell Instruction Data (24 bytes)

[0..8]:   discriminator
[8..16]:  amount_tokens       u64 LE (tokens to sell, raw)
[16..24]: min_sol_output      u64 LE (minimum SOL out, lamports)

Price Impact & Sizing

def price_impact(v_sol: int, v_tok: int, sol_in: int) -> float:
    """Calculate price impact for a buy as a percentage."""
    spot = v_sol / v_tok
    tokens = buy_tokens(v_sol, v_tok, v_tok, sol_in)
    if tokens == 0:
        return float('inf')
    exec_price = sol_in / tokens
    return (exec_price / spot - 1) * 100

# Example: 1 SOL buy at genesis
# impact = price_impact(30_000_000_000, 1_073_000_000_000_000, 1_000_000_000)
# ≈ 3.3% price impact

Files

References

  • references/bonding_curve_math.md — Complete mathematical derivations with worked examples
  • references/graduation_process.md — Graduation threshold, migration, PumpSwap mechanics
  • references/instruction_reference.md — Full instruction and event layouts for parsing

Scripts

  • scripts/curve_calculator.py — Interactive bonding curve calculator: price, impact, fill %
  • scripts/parse_events.py — Parse PumpFun events from transaction data

Related skills

FAQ

When does a token graduate?

Graduation occurs when realSolReserves reaches ~85 SOL; the skill notes only about 1.4% of PumpFun tokens ever graduate.

What curve does PumpFun use?

A virtual constant-product (CPMM) bonding curve where k = virtualSolReserves x virtualTokenReserves, with a 1% fee applied externally.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.