Skip to main content

Use Case

You want to track PumpFun activity on Solana - token launches, swaps on bonding curves, and graduation events. This data powers trading dashboards, token launch trackers, and bonding curve analytics.

Pipeline Configuration

1

Create a new pipeline

In the GoldRush Platform, navigate to Manage Pipelines and click Create Pipeline. Name it pumpfun-tracker.
2

Configure the Postgres destination

Select Postgres as the destination type and enter your connection details:
destination:
  type: "postgres"
  url: "postgresql://your-host:5432/solana_data"
  user: "${PG_USER}"
  password: "${PG_PASSWORD}"
  batch_size: 1000
3

Select your source

Choose Solana as the chain and Pump.fun Events as the data type. This streams all PumpFun lifecycle events: token creates, swaps, completions, and withdrawals.
4

Add a SQL transform (optional)

Filter swaps to only include specific columns:
transforms:
  sol_pf_swap: >
    SELECT user, mint, bonding_curve, sol_amount, token_amount, direction,
           virtual_sol_reserves, virtual_token_reserves
    FROM sol_pf_swap
5

Deploy

Review and deploy. PumpFun events begin flowing to your Postgres database.

Output Tables

The PumpFun normalizer routes events to 4 tables based on event type:
EventTableDescription
Token Createsol_pf_createNew token launches with bonding curve parameters
Swapsol_pf_swapBuy/sell swaps on the bonding curve
Completesol_pf_completeBonding curve graduation (migration to DEX)
Withdrawsol_pf_withdrawLiquidity withdrawals

Verify Data

-- Recent swaps
SELECT mint, direction, sol_amount, token_amount, virtual_sol_reserves
FROM pumpfun_tracker.sol_pf_swap
ORDER BY sol_amount DESC
LIMIT 20;

Sample Analytical Queries

Most traded tokens by swap count:
SELECT mint, count(*) AS swap_count,
       sum(CASE WHEN direction = 'buy' THEN 1 ELSE 0 END) AS buys,
       sum(CASE WHEN direction = 'sell' THEN 1 ELSE 0 END) AS sells
FROM pumpfun_tracker.sol_pf_swap
GROUP BY mint
ORDER BY swap_count DESC
LIMIT 20;
Tokens that graduated (completed bonding curve):
SELECT c.mint, c.bonding_curve, cr.name, cr.symbol
FROM pumpfun_tracker.sol_pf_complete c
JOIN pumpfun_tracker.sol_pf_create cr ON c.mint = cr.mint
ORDER BY cr.name;
Bonding curve progression for a specific token:
SELECT direction, sol_amount, token_amount,
       virtual_sol_reserves, virtual_token_reserves
FROM pumpfun_tracker.sol_pf_swap
WHERE mint = 'your-token-mint-address'
ORDER BY virtual_sol_reserves;

Production Tips

  • All 4 tables receive data from a single pipeline. You do not need separate pipelines for creates, swaps, and completions.
  • Bonding curve math: The virtual_sol_reserves and virtual_token_reserves fields track the bonding curve state after each swap. Use these to reconstruct price curves.
  • High volume: PumpFun generates significant swap volume. Consider using ClickHouse instead of Postgres if you need to run analytical queries over millions of swaps.