@@ -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 )
0 commit comments