Unverified Commit c35a2e37 authored by Shawn Tabrizi's avatar Shawn Tabrizi Committed by GitHub
Browse files

Fix XCM Weights on Westend (#4066)

* found issue

* fix up

* remove printlns
parent 53cd9a61
Pipeline #161752 passed with stages
in 37 minutes and 51 seconds
......@@ -49,3 +49,21 @@ fn call_size() {
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;
}
// TODO wild case
// Westend only knows about one asset, the balances pallet.
const MAX_ASSETS: u32 = 1;
impl WeighMultiAssets for MultiAssetFilter {
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight {
match self {
......@@ -44,7 +46,7 @@ impl WeighMultiAssets for MultiAssetFilter {
AssetTypes::Unknown => Weight::MAX,
})
.fold(0, |acc, x| acc.saturating_add(x)),
_ => Weight::MAX,
Self::Wild(_) => (MAX_ASSETS as Weight).saturating_mul(balances_weight),
}
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment