Skip to content

Commit

Permalink
Router: move raydium 'frozen vault' check to quote (avoid double load…
Browse files Browse the repository at this point in the history
…ing of the tokens accounts) (#4)
  • Loading branch information
farnyser authored Sep 30, 2024
1 parent ba138ed commit 31b4f35
Showing 1 changed file with 12 additions and 22 deletions.
34 changes: 12 additions & 22 deletions lib/dex-raydium/src/raydium_dex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,28 +55,6 @@ impl DexInterface for RaydiumDex {
})
.collect_vec();

let vaults = filtered_pools
.iter()
.flat_map(|x| [x.1.coin_vault, x.1.pc_vault])
.collect::<HashSet<_>>();
let vaults = rpc.get_multiple_accounts(&vaults).await?;
let banned_vaults = vaults
.iter()
.filter(|x| {
x.1.owner == Token::id()
&& spl_token::state::Account::unpack(x.1.data()).unwrap().state
== AccountState::Frozen
})
.map(|x| x.0)
.collect::<HashSet<_>>();

let filtered_pools = filtered_pools
.into_iter()
.filter(|(_, amm)| {
!banned_vaults.contains(&amm.coin_vault) && !banned_vaults.contains(&amm.pc_vault)
})
.collect_vec();

info!(
"Number of raydium AMM post filtering: {:?}",
filtered_pools.len()
Expand Down Expand Up @@ -178,6 +156,18 @@ impl DexInterface for RaydiumDex {
let coin_vault = &edge.coin_vault;
let pc_vault = &edge.pc_vault;

let coin_vault_is_frozen = coin_vault.state == AccountState::Frozen;
let pc_vault_is_frozen = pc_vault.state == AccountState::Frozen;

if coin_vault_is_frozen || pc_vault_is_frozen {
return Ok(Quote {
in_amount,
out_amount: 0,
fee_amount: 0,
fee_mint: Default::default(),
});
}

let swap_direction = if id.is_pc_to_coin {
SwapDirection::PC2Coin
} else {
Expand Down

0 comments on commit 31b4f35

Please sign in to comment.