solana_tx_decoding/instruction/raydium/
is_raydium_cpmm_swap_instruction.rs1use solana_central::Instruction;
2use solana_central::constants::RAYDIUM_CONSTANTS;
3
4pub fn is_raydium_cpmm_swap_instruction(instruction: &Instruction) -> bool {
8 if instruction.data.len() < 24 {
9 return false;
10 }
11 if instruction.accounts.len() < 13 {
12 return false;
13 }
14 if instruction.tx_account_keys[instruction.program_id_index as usize]
15 != RAYDIUM_CONSTANTS.cpmm_program
16 {
17 return false;
18 }
19 if !(instruction.data[0..8] == RAYDIUM_CONSTANTS.cpmm_swap_discriminators[0]
21 || instruction.data[0..8] == RAYDIUM_CONSTANTS.cpmm_swap_discriminators[1])
22 {
23 return false;
24 }
25 true
26}