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