parsing pumpfun transaciton - deniyuda348/pump-fun-pump-swap-sniper-copy-bot GitHub Wiki

MintTo

Sample Transaction

CPI logs

Parsed transaction

Buy

Sample Transaction

https://solscan.io/tx/2a4jp61oxBEXEWrF4DRinseFdxjgkTnCW77cdsnBQ5dNSQk4SoGzrYQGZLkhaPdDVjLfpqkrL88EJ653p5krXXCz

CPI logs

{16 items
mint:
"3Macznfowud7EiaPsr3cpecgxrsRmry7Z2g1mFKspump"
solAmount:
"10794395"
tokenAmount:
"88805500508"
isBuy:
true
user:
"AuB889jZ2Jhit4KEUVqy8mjDt4fgAXPVZDbe62xutpfs"
timestamp:
"1747423548"
virtualSolReserves:
"62557182483"
virtualTokenReserves:
"514569213457871"
realSolReserves:
"32557182483"
realTokenReserves:
"234669213457871"
feeRecipient:
"62qc2CNXwrYqQScmEdiZFFAnJR262PxWEuNQtxfafNgV"
feeBasisPoints:
"95"
fee:
"102547"
creator:
"CpPkarc9V2HqbvdfCiof7nwiH5g97PqTEqMEgp7NGBpA"
creatorFeeBasisPoints:
"5"
creatorFee:
"5398"
}

Parsed transaction

        320 => {
            // Parse PumpSwapData fields
            let timestamp = parse_u64(buffer, 16)?;
            let base_amount_in = parse_u64(buffer, 24)?;
            let min_quote_amount_out = parse_u64(buffer, 32)?;
            let user_base_token_reserves = parse_u64(buffer, 40)?;
            let user_quote_token_reserves = parse_u64(buffer, 48)?;
            let pool_base_token_reserves = parse_u64(buffer, 56)?;
            let pool_quote_token_reserves = parse_u64(buffer, 64)?;
            let quote_amount_out = parse_u64(buffer, 72)?;
            let lp_fee_basis_points = parse_u64(buffer, 80)?;
            let lp_fee = parse_u64(buffer, 88)?;
            let protocol_fee_basis_points = parse_u64(buffer, 96)?;
            let protocol_fee = parse_u64(buffer, 104)?;
            let quote_amount_out_without_lp_fee = parse_u64(buffer, 112)?;
            let user_quote_amount_out = parse_u64(buffer, 120)?;
            let pool = parse_public_key(buffer, 128)?;
            let user = parse_public_key(buffer, 160)?;
            let user_base_token_account = parse_public_key(buffer, 192)?;
            let user_quote_token_account = parse_public_key(buffer, 224)?;
            let protocol_fee_recipient = parse_public_key(buffer, 256)?;
            let protocol_fee_recipient_token_account = parse_public_key(buffer, 288)?;

            let is_buy = quote_amount_out_without_lp_fee > quote_amount_out;

            Some(TradeInfoFromToken {
                instruction_type: InstructionType::PumpSwap,
                slot: 0, // Will be set from transaction data
                recent_blockhash: Hash::default(), // Will be set from transaction data
                signature: String::new(), // Will be set from transaction data
                target: String::new(), // Will be set from transaction data
                mint: String::new(), // Will be set from pool data
                user,
                timestamp,
                is_buy,
                
                // PumpSwapData fields
                base_amount_in: Some(base_amount_in),
                min_quote_amount_out: Some(min_quote_amount_out),
                user_base_token_reserves: Some(user_base_token_reserves),
                user_quote_token_reserves: Some(user_quote_token_reserves),
                pool_base_token_reserves: Some(pool_base_token_reserves),
                pool_quote_token_reserves: Some(pool_quote_token_reserves),
                quote_amount_out: Some(quote_amount_out),
                lp_fee_basis_points: Some(lp_fee_basis_points),
                lp_fee: Some(lp_fee),
                protocol_fee_basis_points: Some(protocol_fee_basis_points),
                protocol_fee: Some(protocol_fee),
                quote_amount_out_without_lp_fee: Some(quote_amount_out_without_lp_fee),
                user_quote_amount_out: Some(user_quote_amount_out),
                pool: Some(pool),
                user_base_token_account: Some(user_base_token_account),
                user_quote_token_account: Some(user_quote_token_account),
                protocol_fee_recipient: Some(protocol_fee_recipient),
                protocol_fee_recipient_token_account: Some(protocol_fee_recipient_token_account),
                
                // PumpFunData fields - None
                sol_amount: None,
                token_amount: None,
                virtual_sol_reserves: None,
                virtual_token_reserves: None,
                real_sol_reserves: None,
                real_token_reserves: None,
                
                // Additional fields
                bonding_curve: String::new(),
                volume_change: 0,
                bonding_curve_info: None,
                pool_info: None,
                token_amount_f64: base_amount_in as f64,
                amount: None,
                max_sol_cost: None,
                min_sol_output: None,
                base_amount_out: None,
                max_quote_amount_in: None,
            })
        },

Sell

Sample Transaction

https://solscan.io/tx/5nKwkb8RK5ERArnyRrJQgD2nwEydpGjpt6ZUauDYEaHzuJmzJUKa9G9b6dhyiv4EGvx6QsVfx3ALfmFwXNuzAG6L

CPI logs

{16 items
mint:
"5aQiK8xyQSxSWfQQ3sUFBYwdUSkt4tdsQRFKbf35pump"
solAmount:
"626662726"
tokenAmount:
"19506615151751"
isBuy:
false
user:
"p1g4ZJUiMLSpzVPLtqwaDF8ik8GwzQSSN3j998LHLZ4"
timestamp:
"1747423548"
virtualSolReserves:
"31846004927"
virtualTokenReserves:
"1010801830581940"
realSolReserves:
"1846004927"
realTokenReserves:
"730901830581940"
feeRecipient:
"62qc2CNXwrYqQScmEdiZFFAnJR262PxWEuNQtxfafNgV"
feeBasisPoints:
"95"
fee:
"5953296"
creator:
"Fi8Bo3EDjhazdtAqVnapUPfoFDrmXsL9Q8hznKx2G162"
creatorFeeBasisPoints:
"5"
creatorFee:
"313332"
}

Parsed transaction