Skip to content
  • Muharem Ismailov's avatar
    pallet-asset-conversion: Swap Credit (#1677) · 5ce04514
    Muharem Ismailov authored
    
    
    Introduces a swap implementation that allows the exchange of a credit
    (aka Negative Imbalance) of one asset for a credit of another asset.
    
    This is particularly useful when a credit swap is required but may not
    have sufficient value to meet the ED constraint, hence cannot be
    deposited to temp account before. An example use case is when XCM fees
    are paid using an asset held in the XCM executor registry and has to be
    swapped for native currency.
    
    Additional Updates:
    - encapsulates the existing `Swap` trait impl within a transactional
    context, since partial storage mutation is possible when an error
    occurs;
    - supplied `Currency` and `Assets` impls must be implemented over the
    same `Balance` type, the `AssetBalance` generic type is dropped. This
    helps to avoid numerous type conversion and overflow cases. If those
    types are different it should be handled outside of the pallet;
    - `Box` asset kind on a pallet level, unbox on a runtime level - here
    [why](https://substrate.stackexchange.com/questions/10039/boxed-argument-of-a-dispatchable/10103#10103);
    - `path` uses `Vec` now, instead of `BoundedVec` since it is never used
    in PoV;
    - removes the `Transfer` event due to it's redundancy with the events
    emitted by `fungible/s` implementations;
    - modifies the `SwapExecuted` event type;
    
    related issue: 
    - https://github.com/paritytech/polkadot-sdk/issues/105
    
    related PRs:
    - (required for) https://github.com/paritytech/polkadot-sdk/pull/1845
    - (caused) https://github.com/paritytech/polkadot-sdk/pull/1717
    
    // DONE make the pallet work only with `fungibles` trait and make it
    free from the concept of a `native` asset -
    https://github.com/paritytech/polkadot-sdk/issues/1842
    
    ---------
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    5ce04514