Westend/Rococo Asset Hub: pay xcm fees with sufficient assets (#2978)

Set up the `TakeFirstAssetTrader` trader for Westend and Rococo Asset
Hubs to cover XCM fees with sufficient assets.

This PR reintroduces previously
[removed](https://github.com/paritytech/polkadot-sdk/pull/1845) trader
setups, as it was decided to keep both traders, `TakeFirstAssetTrader`
and `SwapFirstAssetTrader`, during the transition period.

---------

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>
This commit is contained in:
Muharem
2024-01-18 22:04:13 +08:00
committed by GitHub
parent 13f2342edd
commit dcc76525d9
8 changed files with 1071 additions and 32 deletions
@@ -585,6 +585,32 @@ impl xcm_executor::Config for XcmConfig {
ResolveAssetTo<StakingPot, crate::NativeAndAssets>,
AccountId,
>,
// This trader allows to pay with `is_sufficient=true` "Trust Backed" assets from dedicated
// `pallet_assets` instance - `Assets`.
cumulus_primitives_utility::TakeFirstAssetTrader<
AccountId,
AssetFeeAsExistentialDepositMultiplierFeeCharger,
TrustBackedAssetsConvertedConcreteId,
Assets,
cumulus_primitives_utility::XcmFeesTo32ByteAccount<
FungiblesTransactor,
AccountId,
XcmAssetFeesReceiver,
>,
>,
// This trader allows to pay with `is_sufficient=true` "Foreign" assets from dedicated
// `pallet_assets` instance - `ForeignAssets`.
cumulus_primitives_utility::TakeFirstAssetTrader<
AccountId,
ForeignAssetFeeAsExistentialDepositMultiplierFeeCharger,
ForeignAssetsConvertedConcreteId,
ForeignAssets,
cumulus_primitives_utility::XcmFeesTo32ByteAccount<
ForeignFungiblesTransactor,
AccountId,
XcmAssetFeesReceiver,
>,
>,
);
type ResponseHandler = PolkadotXcm;
type AssetTrap = PolkadotXcm;