From caaafa9e463f5e3c69b785a4662493c8b3d7573b Mon Sep 17 00:00:00 2001 From: Timofey <5527315+epanchee@users.noreply.github.com> Date: Wed, 3 Jan 2024 14:36:46 +0400 Subject: [PATCH] add before_swap_check validation in reverse swap and swap_exact_amount_out --- contracts/pair_concentrated/src/queries.rs | 2 ++ contracts/pair_concentrated/src/sudo.rs | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/contracts/pair_concentrated/src/queries.rs b/contracts/pair_concentrated/src/queries.rs index 5acfa32..4b3cb8a 100644 --- a/contracts/pair_concentrated/src/queries.rs +++ b/contracts/pair_concentrated/src/queries.rs @@ -275,6 +275,8 @@ pub fn query_reverse_simulation( let pools = query_pools(deps.querier, &env.contract.address, &config, &precisions)?; + before_swap_check(&pools, ask_asset_dec.amount)?; + let (ask_ind, _) = pools .iter() .find_position(|asset| asset.info == ask_asset.info) diff --git a/contracts/pair_concentrated/src/sudo.rs b/contracts/pair_concentrated/src/sudo.rs index 320227d..26aca6e 100644 --- a/contracts/pair_concentrated/src/sudo.rs +++ b/contracts/pair_concentrated/src/sudo.rs @@ -95,6 +95,16 @@ fn swap_exact_amount_out( .pair_info .query_pools(&deps.querier, &env.contract.address)?; + // Before swap checks + ensure!( + !token_out.amount.is_zero(), + StdError::generic_err("Token out amount must not be zero") + ); + ensure!( + pools.iter().all(|a| !a.amount.is_zero()), + StdError::generic_err("One of the pools is empty") + ); + let ask_ind = pools .iter() .position(|asset| asset.info == ask_asset.info)