Skip to content
  • girazoki's avatar
    [pallet-xcm] fix transport fees for remote reserve transfers (#3792) · 9a04ebbf
    girazoki authored
    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/3410dfb3
    
    /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: default avatarAdrian Catangiu <[email protected]>
    9a04ebbf