This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 379
[Feature] Add XCM benchmark weights to Statemint and Statemine #1454
Merged
Merged
Changes from all commits
Commits
Show all changes
66 commits
Select commit
Hold shift + click to select a range
999e8f7
[Feature] Add XCM benchmarark weights to Statemint and Statemine
ruseinov 26457ca
add xcm-bench-template
ruseinov f07deed
add polkadot xcm bench pallet to statemint
ruseinov 9a179aa
Sample benchmarking that compiles
ruseinov 009a3c5
add benches to the module
ruseinov dc1b3ef
Remove batches assertion and whitelist ActiveConfig
ruseinov 6e06b34
Merge branch 'master' of https://github.com/paritytech/cumulus into HEAD
c19763d
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
4435ac6
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
0fe8134
fix benchmarks
ruseinov c996d6e
fix get_multi_asset
ruseinov 9845cdf
fmt and more bench fixes
ruseinov bfa6b5b
reformat
ruseinov 0a8abce
move Xcm type definitions
ruseinov 4086364
define types twice
ruseinov 09b9f02
remove commented out lines
ruseinov 4d28efa
define Xcm bench types globally
ruseinov bf182cc
test use
ruseinov af88575
fix semi
ruseinov 84bd7c7
make sure the type definittion is properly documented
ruseinov 1434df7
tweak TrustedTeleporter/Reserve
ruseinov b1e472c
use dots as asset
ruseinov 7574607
Merge branch 'master' into ruseinov/feature/statemint-xcm-benchmarks
ruseinov 063fabc
copy benchmarks over, fix the ci script
ruseinov 0972d9d
remove extra asset
ruseinov 19a991e
Merge branch 'master' of https://github.com/paritytech/cumulus into HEAD
dc64b57
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
6c94d5c
benchmarks setup for statemint/e and westmint
ruseinov 5dddc60
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
3481ffa
".git/.scripts/bench-bot.sh" xcm statemine assets pallet_xcm_benchmar…
3eeeea2
".git/.scripts/bench-bot.sh" xcm statemine assets pallet_xcm_benchmar…
33e808e
remove a check
ruseinov 2ff069f
".git/.scripts/bench-bot.sh" xcm westmint assets pallet_xcm_benchmark…
2ebc26d
Merge branch 'master' of https://github.com/paritytech/cumulus into HEAD
bebc96b
".git/.scripts/bench-bot.sh" xcm westmint assets pallet_xcm_benchmark…
08cc6e9
implement WeightInfoBounds for all the asset runtimes
ruseinov a2475db
Merge branch 'master' into ruseinov/feature/statemint-xcm-benchmarks
ruseinov b901025
update Cargo.lock
ruseinov 2f8655b
Merge branch 'master' into ruseinov/feature/statemint-xcm-benchmarks
ruseinov aec4b36
fix Muharem's comments
ruseinov 0a8a994
Merge branch 'master' of https://github.com/paritytech/cumulus into HEAD
de97475
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
80faa1d
Update parachains/runtimes/assets/statemint/src/lib.rs
ruseinov 5dabe9e
fix some review comments
ruseinov 274a576
fix file headers
ruseinov c50d468
more fixes to licenses and such
ruseinov 0fc3bf0
fix another inconsistency
ruseinov e6859c0
Extend weights template
ggwpez 10b07ee
remove a placeholder
ruseinov d239b60
remove redundant overrides
ruseinov 2161326
Merge branch 'master' of https://github.com/paritytech/cumulus into HEAD
3b869fe
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
168f0b3
Update benchmarking.rs
ruseinov 59ab737
remove redundant bench
ruseinov 898b8bf
fix
ruseinov 8cf49f1
".git/.scripts/bench-bot.sh" xcm statemint assets pallet_xcm_benchmar…
3b4133f
Update pallets/xcm-benchmarks/src/fungible/mock.rs
ruseinov 571ca78
remove TODO's
ruseinov 5499ef2
remove local xcm-benchmark-pallet impl
ruseinov a09960e
disable CheckedAccount in benches
ruseinov 247a9d9
Merge branch 'master' into ruseinov/feature/statemint-xcm-benchmarks
ruseinov 49a3b1d
Merge branch 'master' into ruseinov/feature/statemint-xcm-benchmarks
ruseinov b8d6186
update template
ruseinov a12e37d
fix up imports
ruseinov 1cb21e6
fix xcm
ruseinov 0eab441
fix the template
ruseinov File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
182 changes: 182 additions & 0 deletions
182
parachains/runtimes/assets/statemine/src/weights/xcm/mod.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
// Copyright 2022 Parity Technologies (UK) Ltd. | ||
// This file is part of Cumulus. | ||
|
||
// Cumulus is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
|
||
// Cumulus is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
|
||
// You should have received a copy of the GNU General Public License | ||
// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
mod pallet_xcm_benchmarks_fungible; | ||
mod pallet_xcm_benchmarks_generic; | ||
|
||
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 sp_std::prelude::*; | ||
use xcm::{ | ||
latest::{prelude::*, Weight as XCMWeight}, | ||
DoubleEncoded, | ||
}; | ||
|
||
trait WeighMultiAssets { | ||
fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight; | ||
} | ||
|
||
const MAX_ASSETS: u32 = 100; | ||
|
||
impl WeighMultiAssets for MultiAssetFilter { | ||
fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { | ||
let weight = match self { | ||
Self::Definite(assets) => | ||
weight.scalar_saturating_mul(assets.inner().into_iter().count() as u64), | ||
Self::Wild(_) => weight.scalar_saturating_mul(MAX_ASSETS as u64), | ||
}; | ||
weight.ref_time() | ||
} | ||
} | ||
|
||
impl WeighMultiAssets for MultiAssets { | ||
fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight { | ||
weight.scalar_saturating_mul(self.inner().into_iter().count() as u64).ref_time() | ||
} | ||
} | ||
|
||
pub struct StatemineXcmWeight<Call>(core::marker::PhantomData<Call>); | ||
impl<Call> XcmWeightInfo<Call> for StatemineXcmWeight<Call> { | ||
fn withdraw_asset(assets: &MultiAssets) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::withdraw_asset()) | ||
} | ||
// Currently there is no trusted reserve | ||
fn reserve_asset_deposited(_assets: &MultiAssets) -> XCMWeight { | ||
unimplemented!() | ||
} | ||
fn receive_teleported_asset(assets: &MultiAssets) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::receive_teleported_asset()) | ||
} | ||
fn query_response(_query_id: &u64, _response: &Response, _max_weight: &u64) -> XCMWeight { | ||
XcmGeneric::<Runtime>::query_response().ref_time() | ||
} | ||
fn transfer_asset(assets: &MultiAssets, _dest: &MultiLocation) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::transfer_asset()) | ||
} | ||
fn transfer_reserve_asset( | ||
assets: &MultiAssets, | ||
_dest: &MultiLocation, | ||
_xcm: &Xcm<()>, | ||
) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::transfer_reserve_asset()) | ||
} | ||
fn transact( | ||
_origin_type: &OriginKind, | ||
_require_weight_at_most: &u64, | ||
_call: &DoubleEncoded<Call>, | ||
) -> XCMWeight { | ||
XcmGeneric::<Runtime>::transact().ref_time() | ||
} | ||
fn hrmp_new_channel_open_request( | ||
_sender: &u32, | ||
_max_message_size: &u32, | ||
_max_capacity: &u32, | ||
) -> XCMWeight { | ||
// XCM Executor does not currently support HRMP channel operations | ||
Weight::MAX.ref_time() | ||
} | ||
fn hrmp_channel_accepted(_recipient: &u32) -> XCMWeight { | ||
// XCM Executor does not currently support HRMP channel operations | ||
Weight::MAX.ref_time() | ||
} | ||
fn hrmp_channel_closing(_initiator: &u32, _sender: &u32, _recipient: &u32) -> XCMWeight { | ||
// XCM Executor does not currently support HRMP channel operations | ||
Weight::MAX.ref_time() | ||
} | ||
fn clear_origin() -> XCMWeight { | ||
XcmGeneric::<Runtime>::clear_origin().ref_time() | ||
} | ||
fn descend_origin(_who: &InteriorMultiLocation) -> XCMWeight { | ||
XcmGeneric::<Runtime>::descend_origin().ref_time() | ||
} | ||
fn report_error( | ||
_query_id: &QueryId, | ||
_dest: &MultiLocation, | ||
_max_response_weight: &u64, | ||
) -> XCMWeight { | ||
XcmGeneric::<Runtime>::report_error().ref_time() | ||
} | ||
|
||
fn deposit_asset( | ||
assets: &MultiAssetFilter, | ||
_max_assets: &u32, | ||
_dest: &MultiLocation, | ||
) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::deposit_asset()) | ||
} | ||
fn deposit_reserve_asset( | ||
assets: &MultiAssetFilter, | ||
_max_assets: &u32, | ||
_dest: &MultiLocation, | ||
_xcm: &Xcm<()>, | ||
) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::deposit_reserve_asset()) | ||
} | ||
fn exchange_asset(_give: &MultiAssetFilter, _receive: &MultiAssets) -> XCMWeight { | ||
Weight::MAX.ref_time() | ||
} | ||
fn initiate_reserve_withdraw( | ||
assets: &MultiAssetFilter, | ||
_reserve: &MultiLocation, | ||
_xcm: &Xcm<()>, | ||
) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmGeneric::<Runtime>::initiate_reserve_withdraw()) | ||
} | ||
fn initiate_teleport( | ||
assets: &MultiAssetFilter, | ||
_dest: &MultiLocation, | ||
_xcm: &Xcm<()>, | ||
) -> XCMWeight { | ||
assets.weigh_multi_assets(XcmFungibleWeight::<Runtime>::initiate_teleport()) | ||
} | ||
fn query_holding( | ||
_query_id: &u64, | ||
_dest: &MultiLocation, | ||
_assets: &MultiAssetFilter, | ||
_max_response_weight: &u64, | ||
) -> XCMWeight { | ||
XcmGeneric::<Runtime>::query_holding().ref_time() | ||
} | ||
fn buy_execution(_fees: &MultiAsset, _weight_limit: &WeightLimit) -> XCMWeight { | ||
XcmGeneric::<Runtime>::buy_execution().ref_time() | ||
} | ||
fn refund_surplus() -> XCMWeight { | ||
XcmGeneric::<Runtime>::refund_surplus().ref_time() | ||
} | ||
fn set_error_handler(_xcm: &Xcm<Call>) -> XCMWeight { | ||
XcmGeneric::<Runtime>::set_error_handler().ref_time() | ||
} | ||
fn set_appendix(_xcm: &Xcm<Call>) -> XCMWeight { | ||
XcmGeneric::<Runtime>::set_appendix().ref_time() | ||
} | ||
fn clear_error() -> XCMWeight { | ||
XcmGeneric::<Runtime>::clear_error().ref_time() | ||
} | ||
fn claim_asset(_assets: &MultiAssets, _ticket: &MultiLocation) -> XCMWeight { | ||
XcmGeneric::<Runtime>::claim_asset().ref_time() | ||
} | ||
fn trap(_code: &u64) -> XCMWeight { | ||
XcmGeneric::<Runtime>::trap().ref_time() | ||
} | ||
fn subscribe_version(_query_id: &QueryId, _max_response_weight: &u64) -> XCMWeight { | ||
XcmGeneric::<Runtime>::subscribe_version().ref_time() | ||
} | ||
fn unsubscribe_version() -> XCMWeight { | ||
XcmGeneric::<Runtime>::unsubscribe_version().ref_time() | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI you can not define these and do
type TrustedReserve = ()
etc.