Add an adapter for configuring AssetExchanger (#5130)
Added a new adapter to xcm-builder, the `SingleAssetExchangeAdapter`.
This adapter makes it easy to use `pallet-asset-conversion` for
configuring the `AssetExchanger` XCM config item.
I also took the liberty of adding a new function to the `AssetExchange`
trait, with the following signature:
```rust
fn quote_exchange_price(give: &Assets, want: &Assets, maximal: bool) -> Option<Assets>;
```
The signature is meant to be fairly symmetric to that of
`exchange_asset`.
The way they interact can be seen in the doc comment for it in the
`AssetExchange` trait.
This is a breaking change but is needed for
https://github.com/paritytech/polkadot-sdk/pull/5131.
Another idea is to create a new trait for this but that would require
setting it in the XCM config which is also breaking.
Old PR: https://github.com/paritytech/polkadot-sdk/pull/4375.
---------
Co-authored-by:
Adrian Catangiu <adrian@parity.io>
parent
776e9574
Showing
- Cargo.lock 2 additions, 0 deletionsCargo.lock
- cumulus/primitives/utility/src/lib.rs 19 additions, 2 deletionscumulus/primitives/utility/src/lib.rs
- polkadot/xcm/xcm-builder/Cargo.toml 6 additions, 1 deletionpolkadot/xcm/xcm-builder/Cargo.toml
- polkadot/xcm/xcm-builder/src/asset_exchange/mod.rs 22 additions, 0 deletionspolkadot/xcm/xcm-builder/src/asset_exchange/mod.rs
- polkadot/xcm/xcm-builder/src/asset_exchange/single_asset_adapter/adapter.rs 210 additions, 0 deletions...uilder/src/asset_exchange/single_asset_adapter/adapter.rs
- polkadot/xcm/xcm-builder/src/asset_exchange/single_asset_adapter/mock.rs 370 additions, 0 deletions...m-builder/src/asset_exchange/single_asset_adapter/mock.rs
- polkadot/xcm/xcm-builder/src/asset_exchange/single_asset_adapter/mod.rs 25 additions, 0 deletions...cm-builder/src/asset_exchange/single_asset_adapter/mod.rs
- polkadot/xcm/xcm-builder/src/asset_exchange/single_asset_adapter/tests.rs 233 additions, 0 deletions...-builder/src/asset_exchange/single_asset_adapter/tests.rs
- polkadot/xcm/xcm-builder/src/lib.rs 3 additions, 0 deletionspolkadot/xcm/xcm-builder/src/lib.rs
- polkadot/xcm/xcm-builder/src/test_utils.rs 4 additions, 0 deletionspolkadot/xcm/xcm-builder/src/test_utils.rs
- polkadot/xcm/xcm-builder/src/tests/mock.rs 14 additions, 0 deletionspolkadot/xcm/xcm-builder/src/tests/mock.rs
- polkadot/xcm/xcm-executor/src/traits/asset_exchange.rs 31 additions, 0 deletionspolkadot/xcm/xcm-executor/src/traits/asset_exchange.rs
- prdoc/pr_5130.prdoc 40 additions, 0 deletionsprdoc/pr_5130.prdoc
- substrate/frame/asset-conversion/src/lib.rs 1 addition, 1 deletionsubstrate/frame/asset-conversion/src/lib.rs
Please register or sign in to comment