Parsing Pump Swap transaction - deniyuda348/pump-fun-pump-swap-sniper-copy-bot GitHub Wiki

Buy

Sample Transaction

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

        368 => {
            // 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

Transaction

https://solscan.io/tx/4oSwjYTD8e7FGzMg6azJ4oiJ3m5juhCkTEyw1TtDaMDMfihz3oLbgFi9KaYB8LE18Wo1kntwFzLCGKtgdi7kbWgc