Skip to content

Commit 4bc4efb

Browse files
committed
Router: move raydium 'frozen vault' check to quote (avoid double loading of the tokens accounts)
1 parent ba138ed commit 4bc4efb

File tree

1 file changed

+12
-22
lines changed

1 file changed

+12
-22
lines changed

lib/dex-raydium/src/raydium_dex.rs

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,6 @@ impl DexInterface for RaydiumDex {
5555
})
5656
.collect_vec();
5757

58-
let vaults = filtered_pools
59-
.iter()
60-
.flat_map(|x| [x.1.coin_vault, x.1.pc_vault])
61-
.collect::<HashSet<_>>();
62-
let vaults = rpc.get_multiple_accounts(&vaults).await?;
63-
let banned_vaults = vaults
64-
.iter()
65-
.filter(|x| {
66-
x.1.owner == Token::id()
67-
&& spl_token::state::Account::unpack(x.1.data()).unwrap().state
68-
== AccountState::Frozen
69-
})
70-
.map(|x| x.0)
71-
.collect::<HashSet<_>>();
72-
73-
let filtered_pools = filtered_pools
74-
.into_iter()
75-
.filter(|(_, amm)| {
76-
!banned_vaults.contains(&amm.coin_vault) && !banned_vaults.contains(&amm.pc_vault)
77-
})
78-
.collect_vec();
79-
8058
info!(
8159
"Number of raydium AMM post filtering: {:?}",
8260
filtered_pools.len()
@@ -178,6 +156,18 @@ impl DexInterface for RaydiumDex {
178156
let coin_vault = &edge.coin_vault;
179157
let pc_vault = &edge.pc_vault;
180158

159+
let coin_vault_is_frozen = coin_vault.state == AccountState::Frozen;
160+
let pc_vault_is_frozen = pc_vault.state == AccountState::Frozen;
161+
162+
if coin_vault_is_frozen || pc_vault_is_frozen {
163+
return Ok(Quote {
164+
in_amount,
165+
out_amount: 0,
166+
fee_amount: 0,
167+
fee_mint: Default::default(),
168+
});
169+
}
170+
181171
let swap_direction = if id.is_pc_to_coin {
182172
SwapDirection::PC2Coin
183173
} else {

0 commit comments

Comments
 (0)