Skip to content

Commit 1411de8

Browse files
committed
chore: recalculate relayer fee
1 parent 653c545 commit 1411de8

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

contracts/cw-ics20-latest/src/ibc.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -868,13 +868,13 @@ pub fn process_deduct_fee(
868868
let (deducted_amount, token_fee) =
869869
deduct_token_fee(storage, remote_token_denom, local_amount.amount())?;
870870
// simulate for relayer fee
871-
let offer_asset_info = denom_to_asset_info(querier, api, &local_amount.raw_denom())?;
872-
let simulate_amount = Uint128::from(10u64.pow((decimals + 1) as u32) as u64); // +1 to make sure the offer amount is large enough to swap successfully
871+
let ask_asset_info = denom_to_asset_info(querier, api, &local_amount.raw_denom())?;
872+
let simulate_amount = Uint128::from(10u64.pow((decimals) as u32) as u64); // simulate swap 1 Orai to local asset
873873
let exchange_rate_with_orai = get_token_price(
874874
querier,
875875
simulate_amount,
876876
swap_router_contract,
877-
offer_asset_info,
877+
ask_asset_info,
878878
);
879879
let relayer_fee = deduct_relayer_fee(
880880
storage,
@@ -929,7 +929,7 @@ pub fn deduct_relayer_fee(
929929
_api: &dyn Api,
930930
remote_address: &str,
931931
remote_token_denom: &str,
932-
simulate_amount: Uint128, // offer amount of token that swaps to ORAI
932+
simulate_amount: Uint128, // amount of orai that swaps to local asset token
933933
token_price: Uint128,
934934
) -> StdResult<Uint128> {
935935
// api.debug(format!("token price: {}", token_price).as_str());
@@ -960,9 +960,9 @@ pub fn deduct_relayer_fee(
960960
}
961961
let relayer_fee = relayer_fee.unwrap();
962962
let required_fee_needed = relayer_fee
963-
.checked_mul(simulate_amount)
963+
.checked_mul(token_price)
964964
.unwrap_or_default()
965-
.checked_div(token_price)
965+
.checked_div(simulate_amount)
966966
.unwrap_or_default();
967967
Ok(required_fee_needed)
968968
}
@@ -982,22 +982,22 @@ pub fn get_token_price(
982982
querier: &QuerierWrapper,
983983
simulate_amount: Uint128,
984984
swap_router_contract: &RouterController,
985-
offer_asset_info: AssetInfo,
985+
ask_asset_info: AssetInfo,
986986
) -> Uint128 {
987987
let orai_asset_info = AssetInfo::NativeToken {
988988
denom: "orai".to_string(),
989989
};
990-
if offer_asset_info.eq(&orai_asset_info) {
990+
if ask_asset_info.eq(&orai_asset_info) {
991991
return simulate_amount;
992992
}
993993
let token_price = swap_router_contract
994994
.simulate_swap(
995995
querier,
996996
simulate_amount,
997997
vec![SwapOperation::OraiSwap {
998-
offer_asset_info,
998+
offer_asset_info: orai_asset_info,
999999
// always swap with orai. If it does not share a pool with ORAI => ignore, no fee
1000-
ask_asset_info: orai_asset_info,
1000+
ask_asset_info,
10011001
}],
10021002
)
10031003
.map(|data| data.amount)

contracts/cw-ics20-latest/src/ibc_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,7 +1166,7 @@ mod test {
11661166
token_price,
11671167
)
11681168
.unwrap(),
1169-
Uint128::from(100u64)
1169+
Uint128::from(10000u64)
11701170
);
11711171

11721172
// normal case with remote address
@@ -1180,7 +1180,7 @@ mod test {
11801180
token_price,
11811181
)
11821182
.unwrap(),
1183-
Uint128::from(10u64)
1183+
Uint128::from(1000u64)
11841184
);
11851185
}
11861186

0 commit comments

Comments
 (0)