diff --git a/parachains/common/src/xcm_config.rs b/parachains/common/src/xcm_config.rs index 346e0f9cb61..b9ae5ef87ce 100644 --- a/parachains/common/src/xcm_config.rs +++ b/parachains/common/src/xcm_config.rs @@ -119,17 +119,3 @@ impl> FilterAssetLocation for ConcreteNativeAssetFr matches!(asset.id, Concrete(ref id) if id == origin && origin == &Location::get()) } } - -/// A generic function to use for MultiAssetFilter implementations, currently used to differentiate -/// between reserve operations and the rest of them. -pub fn weigh_multi_assets_generic( - filter: &MultiAssetFilter, - weight: Weight, - max_assets: u32, -) -> XCMWeight { - let multiplier = match filter { - MultiAssetFilter::Definite(assets) => assets.len() as u64, - MultiAssetFilter::Wild(_) => max_assets as u64, - }; - weight.saturating_mul(multiplier).ref_time() -} diff --git a/parachains/runtimes/assets/statemine/src/weights/xcm/mod.rs b/parachains/runtimes/assets/statemine/src/weights/xcm/mod.rs index 9dd4345ef73..79fbd0812bb 100644 --- a/parachains/runtimes/assets/statemine/src/weights/xcm/mod.rs +++ b/parachains/runtimes/assets/statemine/src/weights/xcm/mod.rs @@ -21,7 +21,7 @@ use crate::Runtime; use frame_support::weights::Weight; use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight; use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric; -use parachains_common::xcm_config::weigh_multi_assets_generic; +use sp_std::prelude::*; use xcm::{ latest::{prelude::*, Weight as XCMWeight}, DoubleEncoded, @@ -31,29 +31,22 @@ trait WeighMultiAssets { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight; } -trait WeighMultiAssetsReserve { - fn weigh_multi_assets_reserve(&self, weight: Weight) -> XCMWeight; -} - -const RESERVE_MAX_ASSETS: u32 = 100; -/// For teleports and deposits -const MAX_ASSETS: u32 = 1; +const MAX_ASSETS: u32 = 100; impl WeighMultiAssets for MultiAssetFilter { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { - weigh_multi_assets_generic(self, weight, MAX_ASSETS) - } -} - -impl WeighMultiAssetsReserve for MultiAssetFilter { - fn weigh_multi_assets_reserve(&self, weight: Weight) -> XCMWeight { - weigh_multi_assets_generic(self, weight, RESERVE_MAX_ASSETS) + let weight = match self { + Self::Definite(assets) => + weight.saturating_mul(assets.inner().into_iter().count() as u64), + Self::Wild(_) => weight.saturating_mul(MAX_ASSETS as u64), + }; + weight.ref_time() } } impl WeighMultiAssets for MultiAssets { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { - weight.saturating_mul(self.len() as u64).ref_time() + weight.saturating_mul(self.inner().into_iter().count() as u64).ref_time() } } @@ -132,7 +125,7 @@ impl XcmWeightInfo for StatemineXcmWeight { _dest: &MultiLocation, _xcm: &Xcm<()>, ) -> XCMWeight { - assets.weigh_multi_assets_reserve(XcmFungibleWeight::::deposit_reserve_asset()) + assets.weigh_multi_assets(XcmFungibleWeight::::deposit_reserve_asset()) } fn exchange_asset(_give: &MultiAssetFilter, _receive: &MultiAssets) -> XCMWeight { Weight::MAX.ref_time() @@ -142,7 +135,7 @@ impl XcmWeightInfo for StatemineXcmWeight { _reserve: &MultiLocation, _xcm: &Xcm<()>, ) -> XCMWeight { - assets.weigh_multi_assets_reserve(XcmGeneric::::initiate_reserve_withdraw()) + assets.weigh_multi_assets(XcmGeneric::::initiate_reserve_withdraw()) } fn initiate_teleport( assets: &MultiAssetFilter, diff --git a/parachains/runtimes/assets/statemint/src/weights/xcm/mod.rs b/parachains/runtimes/assets/statemint/src/weights/xcm/mod.rs index 2fbe469aab7..b51f8b207a5 100644 --- a/parachains/runtimes/assets/statemint/src/weights/xcm/mod.rs +++ b/parachains/runtimes/assets/statemint/src/weights/xcm/mod.rs @@ -21,7 +21,7 @@ use crate::Runtime; use frame_support::weights::Weight; use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight; use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric; -use parachains_common::xcm_config::weigh_multi_assets_generic; +use sp_std::prelude::*; use xcm::{ latest::{prelude::*, Weight as XCMWeight}, DoubleEncoded, @@ -31,29 +31,22 @@ trait WeighMultiAssets { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight; } -trait WeighMultiAssetsReserve { - fn weigh_multi_assets_reserve(&self, weight: Weight) -> XCMWeight; -} - -const RESERVE_MAX_ASSETS: u32 = 100; -/// For teleports and deposits -const MAX_ASSETS: u32 = 1; +const MAX_ASSETS: u32 = 100; impl WeighMultiAssets for MultiAssetFilter { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { - weigh_multi_assets_generic(self, weight, MAX_ASSETS) - } -} - -impl WeighMultiAssetsReserve for MultiAssetFilter { - fn weigh_multi_assets_reserve(&self, weight: Weight) -> XCMWeight { - weigh_multi_assets_generic(self, weight, RESERVE_MAX_ASSETS) + let weight = match self { + Self::Definite(assets) => + weight.saturating_mul(assets.inner().into_iter().count() as u64), + Self::Wild(_) => weight.saturating_mul(MAX_ASSETS as u64), + }; + weight.ref_time() } } impl WeighMultiAssets for MultiAssets { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { - weight.saturating_mul(self.len() as u64).ref_time() + weight.saturating_mul(self.inner().into_iter().count() as u64).ref_time() } } @@ -132,7 +125,7 @@ impl XcmWeightInfo for StatemintXcmWeight { _dest: &MultiLocation, _xcm: &Xcm<()>, ) -> XCMWeight { - assets.weigh_multi_assets_reserve(XcmFungibleWeight::::deposit_reserve_asset()) + assets.weigh_multi_assets(XcmFungibleWeight::::deposit_reserve_asset()) } fn exchange_asset(_give: &MultiAssetFilter, _receive: &MultiAssets) -> XCMWeight { Weight::MAX.ref_time() @@ -142,7 +135,7 @@ impl XcmWeightInfo for StatemintXcmWeight { _reserve: &MultiLocation, _xcm: &Xcm<()>, ) -> XCMWeight { - assets.weigh_multi_assets_reserve(XcmGeneric::::initiate_reserve_withdraw()) + assets.weigh_multi_assets(XcmGeneric::::initiate_reserve_withdraw()) } fn initiate_teleport( assets: &MultiAssetFilter, diff --git a/parachains/runtimes/assets/westmint/src/weights/xcm/mod.rs b/parachains/runtimes/assets/westmint/src/weights/xcm/mod.rs index 0c1f96ae7d7..018f8f7d9f7 100644 --- a/parachains/runtimes/assets/westmint/src/weights/xcm/mod.rs +++ b/parachains/runtimes/assets/westmint/src/weights/xcm/mod.rs @@ -21,7 +21,7 @@ use crate::Runtime; use frame_support::weights::Weight; use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight; use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric; -use parachains_common::xcm_config::weigh_multi_assets_generic; +use sp_std::prelude::*; use xcm::{ latest::{prelude::*, Weight as XCMWeight}, DoubleEncoded, @@ -31,29 +31,22 @@ trait WeighMultiAssets { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight; } -trait WeighMultiAssetsReserve { - fn weigh_multi_assets_reserve(&self, weight: Weight) -> XCMWeight; -} - -const RESERVE_MAX_ASSETS: u32 = 100; -/// For teleports and deposits -const MAX_ASSETS: u32 = 1; +const MAX_ASSETS: u32 = 100; impl WeighMultiAssets for MultiAssetFilter { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { - weigh_multi_assets_generic(self, weight, MAX_ASSETS) - } -} - -impl WeighMultiAssetsReserve for MultiAssetFilter { - fn weigh_multi_assets_reserve(&self, weight: Weight) -> XCMWeight { - weigh_multi_assets_generic(self, weight, RESERVE_MAX_ASSETS) + let weight = match self { + Self::Definite(assets) => + weight.saturating_mul(assets.inner().into_iter().count() as u64), + Self::Wild(_) => weight.saturating_mul(MAX_ASSETS as u64), + }; + weight.ref_time() } } impl WeighMultiAssets for MultiAssets { fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { - weight.saturating_mul(self.len() as u64).ref_time() + weight.saturating_mul(self.inner().into_iter().count() as u64).ref_time() } } @@ -132,7 +125,7 @@ impl XcmWeightInfo for WestmintXcmWeight { _dest: &MultiLocation, _xcm: &Xcm<()>, ) -> XCMWeight { - assets.weigh_multi_assets_reserve(XcmFungibleWeight::::deposit_reserve_asset()) + assets.weigh_multi_assets(XcmFungibleWeight::::deposit_reserve_asset()) } fn exchange_asset(_give: &MultiAssetFilter, _receive: &MultiAssets) -> XCMWeight { Weight::MAX.ref_time() @@ -142,7 +135,7 @@ impl XcmWeightInfo for WestmintXcmWeight { _reserve: &MultiLocation, _xcm: &Xcm<()>, ) -> XCMWeight { - assets.weigh_multi_assets_reserve(XcmGeneric::::initiate_reserve_withdraw()) + assets.weigh_multi_assets(XcmGeneric::::initiate_reserve_withdraw()) } fn initiate_teleport( assets: &MultiAssetFilter,