mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 17:31:03 +00:00
Fix XCM Weights on Westend (#4066)
* found issue * fix up * remove printlns
This commit is contained in:
@@ -49,3 +49,21 @@ fn call_size() {
|
|||||||
If the limit is too strong, maybe consider increase the limit to 300.",
|
If the limit is too strong, maybe consider increase the limit to 300.",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sanity_check_teleport_assets_weight() {
|
||||||
|
// This test sanity checks that at least 50 teleports can exist in a block.
|
||||||
|
// Usually when XCM runs into an issue, it will return a weight of `Weight::MAX`,
|
||||||
|
// so this test will certainly ensure that this problem does not occur.
|
||||||
|
use frame_support::dispatch::GetDispatchInfo;
|
||||||
|
let weight = pallet_xcm::Call::<Runtime>::teleport_assets {
|
||||||
|
dest: Box::new(xcm::VersionedMultiLocation::V1(MultiLocation::here())),
|
||||||
|
beneficiary: Box::new(xcm::VersionedMultiLocation::V1(MultiLocation::here())),
|
||||||
|
assets: Box::new((Concrete(MultiLocation::here()), Fungible(200_000)).into()),
|
||||||
|
fee_asset_item: 0,
|
||||||
|
}
|
||||||
|
.get_dispatch_info()
|
||||||
|
.weight;
|
||||||
|
|
||||||
|
assert!(weight * 50 < BlockWeights::get().max_block);
|
||||||
|
}
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ trait WeighMultiAssets {
|
|||||||
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight;
|
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO wild case
|
// Westend only knows about one asset, the balances pallet.
|
||||||
|
const MAX_ASSETS: u32 = 1;
|
||||||
|
|
||||||
impl WeighMultiAssets for MultiAssetFilter {
|
impl WeighMultiAssets for MultiAssetFilter {
|
||||||
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight {
|
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight {
|
||||||
match self {
|
match self {
|
||||||
@@ -44,7 +46,7 @@ impl WeighMultiAssets for MultiAssetFilter {
|
|||||||
AssetTypes::Unknown => Weight::MAX,
|
AssetTypes::Unknown => Weight::MAX,
|
||||||
})
|
})
|
||||||
.fold(0, |acc, x| acc.saturating_add(x)),
|
.fold(0, |acc, x| acc.saturating_add(x)),
|
||||||
_ => Weight::MAX,
|
Self::Wild(_) => (MAX_ASSETS as Weight).saturating_mul(balances_weight),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user