mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 15:41:02 +00:00
[pallet-xcm] fix transport fees for remote reserve transfers (#3792)
Currently `transfer_assets` from pallet-xcm covers 4 main different transfer types: - `localReserve` - `DestinationReserve` - `Teleport` - `RemoteReserve` For the first three, the local execution and the remote message sending are separated, and fees are deducted in pallet-xcm itself: https://github.com/paritytech/polkadot-sdk/blob/3410dfb3929462da88be2da813f121d8b1cf46b3/polkadot/xcm/pallet-xcm/src/lib.rs#L1758. For the 4th case `RemoteReserve`, pallet-xcm is still relying on the xcm-executor itself to send the message (through the `initiateReserveWithdraw` instruction). In this case, if delivery fees need to be charged, it is not possible to do so because the `jit_withdraw` mode has not being set. This PR proposes to still use the `initiateReserveWithdraw` but prepending a `setFeesMode { jit_withdraw: true }` to make sure delivery fees can be paid. A test-case is also added to present the aforementioned case --------- Co-authored-by: Adrian Catangiu <adrian@parity.io>
This commit is contained in:
@@ -115,7 +115,7 @@ macro_rules! test_parachain_is_trusted_teleporter {
|
||||
let para_receiver_balance_after =
|
||||
<$receiver_para as $crate::macros::Chain>::account_data_of(receiver.clone()).free;
|
||||
let delivery_fees = <$sender_para>::execute_with(|| {
|
||||
$crate::macros::asset_test_utils::xcm_helpers::transfer_assets_delivery_fees::<
|
||||
$crate::macros::asset_test_utils::xcm_helpers::teleport_assets_delivery_fees::<
|
||||
<$sender_xcm_config as xcm_executor::Config>::XcmSender,
|
||||
>($assets.clone(), fee_asset_item, weight_limit.clone(), beneficiary, para_destination)
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user