diff --git a/Cargo.lock b/Cargo.lock index e21b140f..ca98f3b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6138,6 +6138,7 @@ dependencies = [ "pallet-state-coprocessor", "pallet-sudo", "pallet-timestamp", + "pallet-token-gateway", "pallet-token-gateway-inspector", "pallet-token-governor", "pallet-transaction-payment", @@ -13012,6 +13013,7 @@ dependencies = [ "alloy-sol-macro", "alloy-sol-types", "anyhow", + "frame-benchmarking", "frame-support 37.0.0", "frame-system", "ismp", diff --git a/modules/pallets/token-gateway/Cargo.toml b/modules/pallets/token-gateway/Cargo.toml index d1cf7720..822739d2 100644 --- a/modules/pallets/token-gateway/Cargo.toml +++ b/modules/pallets/token-gateway/Cargo.toml @@ -14,6 +14,7 @@ readme = "README.md" [dependencies] frame-support = { workspace = true } frame-system = { workspace = true } +frame-benchmarking = { workspace = true } sp-runtime = { workspace = true } sp-core = { workspace = true } sp-io = { workspace = true } @@ -39,6 +40,7 @@ default = ["std"] std = [ "frame-support/std", "frame-system/std", + "frame-benchmarking/std", "sp-runtime/std", "sp-core/std", "sp-io/std", @@ -50,6 +52,12 @@ std = [ "anyhow/std", "alloy-primitives/std", "pallet-hyperbridge/std", - "token-gateway-primitives/std" + "token-gateway-primitives/std", +] +runtime-benchmarks = [ + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", ] try-runtime = [] diff --git a/modules/pallets/token-gateway/src/benchmarking.rs b/modules/pallets/token-gateway/src/benchmarking.rs new file mode 100644 index 00000000..7f9e623f --- /dev/null +++ b/modules/pallets/token-gateway/src/benchmarking.rs @@ -0,0 +1,155 @@ +#![cfg(feature = "runtime-benchmarks")] + +use crate::*; +use frame_benchmarking::v2::*; +use frame_support::{ + traits::{fungible, fungibles}, + BoundedVec, +}; +use frame_system::RawOrigin; +use ismp::host::StateMachine; +use scale_info::prelude::collections::BTreeMap; +use sp_runtime::AccountId32; +use token_gateway_primitives::{GatewayAssetRegistration, GatewayAssetUpdate}; + +fn dummy_teleport_asset( + asset_id: AssetId, +) -> TeleportParams, <::NativeCurrency as Currency>::Balance> +where + T: Config, + <::NativeCurrency as Currency>::Balance: From, +{ + TeleportParams { + asset_id, + destination: StateMachine::Evm(100), + recepient: H256::from([1u8; 32]), + amount: 1100000000u128.into(), + timeout: 10, + token_gateway: vec![1, 2, 3, 4, 5], + relayer_fee: 1000000002u128.into(), + call_data: None, + } +} + +fn create_dummy_asset( + asset_details: GatewayAssetRegistration, +) -> AssetRegistration> +where +{ + let local_id = T::AssetIdFactory::create_asset_id(asset_details.symbol.to_vec()).unwrap(); + AssetRegistration { local_id, reg: asset_details, native: true } +} + +#[benchmarks( + where + <::NativeCurrency as Currency>::Balance: From, + ::AccountId: From<[u8; 32]>, + u128: From<<::NativeCurrency as Currency>::Balance>, + T::Balance: From, + ::Balance: From<<::NativeCurrency as Currency>::Balance>, + <::Assets as fungibles::Inspect>::Balance: From<<::NativeCurrency as Currency>::Balance>, + <::Assets as fungibles::Inspect>::Balance: From, + [u8; 32]: From<::AccountId>, + ::RuntimeOrigin: From>, +)] +mod benches { + use super::*; + + #[benchmark] + fn create_erc6160_asset() -> Result<(), BenchmarkError> { + let account: T::AccountId = whitelisted_caller(); + + let asset_details = GatewayAssetRegistration { + name: BoundedVec::try_from(b"Spectre".to_vec()).unwrap(), + symbol: BoundedVec::try_from(b"SPC".to_vec()).unwrap(), + chains: vec![StateMachine::Evm(100)], + minimum_balance: Some(10), + }; + let asset = create_dummy_asset::(asset_details); + + >::set_balance(&account, u128::MAX.into()); + + #[extrinsic_call] + _(RawOrigin::Signed(account), asset); + + Ok(()) + } + + #[benchmark] + fn teleport() -> Result<(), BenchmarkError> { + let account: T::AccountId = whitelisted_caller(); + + let asset_details = GatewayAssetRegistration { + name: BoundedVec::try_from(b"Spectre".to_vec()).unwrap(), + symbol: BoundedVec::try_from(b"SPC".to_vec()).unwrap(), + chains: vec![StateMachine::Evm(100)], + minimum_balance: None, + }; + let asset = create_dummy_asset::(asset_details); + + Pallet::::create_erc6160_asset( + RawOrigin::Signed(account.clone()).into(), + asset.clone(), + )?; + + let dummy_teleport_params = dummy_teleport_asset::(asset.local_id); + + >::set_balance(&account, u128::MAX.into()); + + #[extrinsic_call] + teleport(RawOrigin::Signed(account), dummy_teleport_params); + Ok(()) + } + + #[benchmark] + fn set_token_gateway_addresses(x: Linear<5, 100>) -> Result<(), BenchmarkError> { + let mut addresses = BTreeMap::new(); + for i in 0..x { + let addr = i.to_string().as_bytes().to_vec(); + addresses.insert(StateMachine::Evm(100), addr); + } + + #[extrinsic_call] + _(RawOrigin::Root, addresses); + Ok(()) + } + + #[benchmark] + fn update_erc6160_asset() -> Result<(), BenchmarkError> { + let acc_origin: T::AccountId = whitelisted_caller(); + + let asset_details = GatewayAssetRegistration { + name: BoundedVec::try_from(b"Spectre".to_vec()).unwrap(), + symbol: BoundedVec::try_from(b"SPC".to_vec()).unwrap(), + chains: vec![StateMachine::Evm(100)], + minimum_balance: None, + }; + let asset = create_dummy_asset::(asset_details.clone()); + + // set balances + >::set_balance(&acc_origin, u128::MAX.into()); + let asset_id = T::AssetIdFactory::create_asset_id(asset_details.symbol.to_vec()).unwrap(); + >::create( + asset_id.into(), + acc_origin.clone(), + true, + 1000000000u128.into(), + )?; + + Pallet::::create_erc6160_asset( + RawOrigin::Signed(acc_origin.clone()).into(), + asset.clone(), + )?; + + let asset_update = GatewayAssetUpdate { + asset_id: H256::zero(), + add_chains: BoundedVec::try_from(vec![StateMachine::Evm(200)]).unwrap(), + remove_chains: BoundedVec::try_from(Vec::new()).unwrap(), + new_admins: BoundedVec::try_from(Vec::new()).unwrap(), + }; + + #[extrinsic_call] + _(RawOrigin::Signed(acc_origin), asset_update); + Ok(()) + } +} diff --git a/modules/pallets/token-gateway/src/lib.rs b/modules/pallets/token-gateway/src/lib.rs index 13814e1a..b5cb7d24 100644 --- a/modules/pallets/token-gateway/src/lib.rs +++ b/modules/pallets/token-gateway/src/lib.rs @@ -20,19 +20,22 @@ extern crate alloc; pub mod impls; pub mod types; + +mod benchmarking; +mod weights; use crate::impls::{convert_to_balance, convert_to_erc20}; use alloy_sol_types::SolValue; use anyhow::anyhow; use codec::{Decode, Encode}; use frame_support::{ ensure, - pallet_prelude::Weight, traits::{ fungibles::{self, Mutate}, tokens::{fungible::Mutate as FungibleMutate, Preservation}, Currency, ExistenceRequirement, }, }; +pub use weights::WeightInfo; use ismp::{ events::Meta, @@ -121,6 +124,9 @@ pub mod pallet { /// A trait that converts an evm address to a substrate account type EvmToSubstrate: EvmToSubstrate; + + /// Weight information for extrinsics in this pallet + type WeightInfo: WeightInfo; } /// Assets supported by this instance of token gateway @@ -231,7 +237,7 @@ pub mod pallet { /// Teleports a registered asset /// locks the asset and dispatches a request to token gateway on the destination #[pallet::call_index(0)] - #[pallet::weight(weight())] + #[pallet::weight(T::WeightInfo::teleport())] pub fn teleport( origin: OriginFor, params: TeleportParams< @@ -354,7 +360,7 @@ pub mod pallet { /// Set the token gateway address for specified chains #[pallet::call_index(1)] - #[pallet::weight(weight())] + #[pallet::weight(T::WeightInfo::set_token_gateway_addresses(addresses.len() as u32))] pub fn set_token_gateway_addresses( origin: OriginFor, addresses: BTreeMap>, @@ -372,11 +378,10 @@ pub mod pallet { /// to create the asset. /// `native` should be true if this asset originates from this chain #[pallet::call_index(2)] - #[pallet::weight(weight())] + #[pallet::weight(T::WeightInfo::create_erc6160_asset())] pub fn create_erc6160_asset( origin: OriginFor, asset: AssetRegistration>, - native: bool, ) -> DispatchResult { let who = ensure_signed(origin)?; @@ -398,7 +403,7 @@ pub mod pallet { // the mapping to its token gateway asset id SupportedAssets::::insert(asset.local_id.clone(), asset_id.clone()); - NativeAssets::::insert(asset.local_id.clone(), native); + NativeAssets::::insert(asset.local_id.clone(), asset.native); LocalAssets::::insert(asset_id, asset.local_id.clone()); // All ERC6160 assets use 18 decimals Decimals::::insert(asset.local_id, 18); @@ -427,7 +432,7 @@ pub mod pallet { /// This works by dispatching a request to the TokenGateway module on each requested chain /// to create the asset. #[pallet::call_index(3)] - #[pallet::weight(weight())] + #[pallet::weight(T::WeightInfo::update_erc6160_asset())] pub fn update_erc6160_asset( origin: OriginFor, asset: GatewayAssetUpdate, @@ -794,11 +799,6 @@ where } } -/// Static weights because benchmarks suck, and we'll be getting PolkaVM soon anyways -fn weight() -> Weight { - Weight::from_parts(300_000_000, 0) -} - impl Pallet { /// Ensure the signer is the asset admin pub fn ensure_admin(who: T::AccountId, asset_id: AssetId) -> Result<(), Error> { diff --git a/modules/pallets/token-gateway/src/types.rs b/modules/pallets/token-gateway/src/types.rs index cb7ef188..c660c15b 100644 --- a/modules/pallets/token-gateway/src/types.rs +++ b/modules/pallets/token-gateway/src/types.rs @@ -55,6 +55,8 @@ pub struct AssetRegistration { pub local_id: AssetId, /// MNT Asset registration details pub reg: token_gateway_primitives::GatewayAssetRegistration, + /// Flag for if this asset is native + pub native: bool, } alloy_sol_macro::sol! { diff --git a/modules/pallets/token-gateway/src/weights.rs b/modules/pallets/token-gateway/src/weights.rs new file mode 100644 index 00000000..f405a761 --- /dev/null +++ b/modules/pallets/token-gateway/src/weights.rs @@ -0,0 +1,28 @@ +use frame_support::weights::Weight; + +// ============================== INTERFACE ============================================ // +/// Weight functions needed for `pallet_token_gateway. +pub trait WeightInfo { + fn create_erc6160_asset() -> Weight; + fn teleport() -> Weight; + fn set_token_gateway_addresses(x: u32) -> Weight; + fn update_erc6160_asset() -> Weight; +} + +impl WeightInfo for () { + fn create_erc6160_asset() -> Weight { + Weight::zero() + } + + fn teleport() -> Weight { + Weight::zero() + } + + fn set_token_gateway_addresses(_x: u32) -> Weight { + Weight::zero() + } + + fn update_erc6160_asset() -> Weight { + Weight::zero() + } +} diff --git a/parachain/runtimes/gargantua/Cargo.toml b/parachain/runtimes/gargantua/Cargo.toml index 8439515f..68f6c6a5 100644 --- a/parachain/runtimes/gargantua/Cargo.toml +++ b/parachain/runtimes/gargantua/Cargo.toml @@ -12,12 +12,14 @@ substrate-wasm-builder = { workspace = true } [dependencies] # crates.io codec = { workspace = true, features = ["derive"] } -hex-literal = { workspace = true, optional = true } -log = { workspace = true } -scale-info = { version = "2.3.1", default-features = false, features = ["derive"] } +hex-literal = { workspace = true, optional = true } +log = { workspace = true } +scale-info = { version = "2.3.1", default-features = false, features = [ + "derive", +] } smallvec = "1.10.0" -orml-xcm-support = { workspace = true } -orml-traits = { workspace = true } +orml-xcm-support = { workspace = true } +orml-traits = { workspace = true } anyhow = { workspace = true, default-features = false } # Substrate @@ -39,9 +41,9 @@ pallet-timestamp = { workspace = true } pallet-transaction-payment = { workspace = true } pallet-transaction-payment-rpc-runtime-api = { workspace = true } pallet-message-queue = { workspace = true } -pallet-treasury = { workspace = true} -pallet-asset-rate = { workspace = true} -pallet-collective = { workspace = true} +pallet-treasury = { workspace = true } +pallet-asset-rate = { workspace = true } +pallet-collective = { workspace = true } sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } @@ -70,7 +72,7 @@ staging-xcm-executor = { workspace = true } cumulus-pallet-aura-ext = { workspace = true } cumulus-pallet-dmp-queue = { workspace = true } cumulus-pallet-parachain-system = { workspace = true } -cumulus-pallet-session-benchmarking = {workspace = true } +cumulus-pallet-session-benchmarking = { workspace = true } cumulus-pallet-xcm = { workspace = true } cumulus-pallet-xcmp-queue = { workspace = true } cumulus-primitives-core = { workspace = true } @@ -79,172 +81,171 @@ cumulus-primitives-aura = { workspace = true } cumulus-primitives-utility = { workspace = true } pallet-collator-selection = { workspace = true } parachain-info = { workspace = true } -parachains-common = { workspace = true } +parachains-common = { workspace = true } # local modules -ismp = { workspace = true } -pallet-ismp = { workspace = true, features = ["unsigned"] } -pallet-fishermen = { workspace = true } -pallet-ismp-demo = { workspace = true } -pallet-ismp-runtime-api = { workspace = true } -ismp-sync-committee = { workspace = true } -ismp-bsc = { workspace = true } -ismp-parachain = { workspace = true } +ismp = { workspace = true } +pallet-ismp = { workspace = true, features = ["unsigned"] } +pallet-fishermen = { workspace = true } +pallet-ismp-demo = { workspace = true } +pallet-ismp-runtime-api = { workspace = true } +ismp-sync-committee = { workspace = true } +ismp-bsc = { workspace = true } +ismp-parachain = { workspace = true } ismp-grandpa = { workspace = true } -ismp-parachain-runtime-api = { workspace = true } -pallet-ismp-relayer = { workspace = true } -pallet-ismp-host-executive = { workspace = true } +ismp-parachain-runtime-api = { workspace = true } +pallet-ismp-relayer = { workspace = true } +pallet-ismp-host-executive = { workspace = true } pallet-call-decompressor = { workspace = true } pallet-state-coprocessor = { workspace = true } -pallet-xcm-gateway = { workspace = true } +pallet-xcm-gateway = { workspace = true } pallet-token-governor = { workspace = true } pallet-mmr = { workspace = true } pallet-mmr-runtime-api = { workspace = true } sp-mmr-primitives = { workspace = true } simnode-runtime-api = { workspace = true } hyperbridge-client-machine = { workspace = true } -pallet-token-gateway-inspector = { workspace = true } +pallet-token-gateway-inspector = { workspace = true } +pallet-token-gateway = { workspace = true } [features] -default = [ - "std", -] +default = ["std"] std = [ - "codec/std", - "log/std", - "scale-info/std", - "ismp/std", - "cumulus-pallet-aura-ext/std", - "cumulus-pallet-dmp-queue/std", - "cumulus-pallet-parachain-system/std", - "cumulus-pallet-xcm/std", - "cumulus-pallet-xcmp-queue/std", - "cumulus-primitives-core/std", - "cumulus-primitives-aura/std", - "cumulus-primitives-timestamp/std", - "cumulus-primitives-utility/std", - "frame-executive/std", - "frame-support/std", - "frame-system-rpc-runtime-api/std", - "frame-system/std", - "pallet-aura/std", - "pallet-authorship/std", - "pallet-balances/std", - "pallet-collator-selection/std", - "pallet-session/std", - "pallet-sudo/std", - "pallet-utility/std", - "pallet-timestamp/std", - "pallet-transaction-payment-rpc-runtime-api/std", - "pallet-transaction-payment/std", - "pallet-xcm/std", - "pallet-treasury/std", - "pallet-fishermen/std", - "pallet-asset-rate/std", - "pallet-collective/std", - "pallet-ismp/std", - "pallet-ismp-runtime-api/std", - "pallet-ismp-demo/std", - "parachain-info/std", - "polkadot-parachain-primitives/std", - "polkadot-runtime-common/std", - "sp-api/std", - "sp-block-builder/std", - "sp-consensus-aura/std", - "sp-core/std", - "sp-inherents/std", - "sp-offchain/std", - "sp-runtime/std", - "sp-session/std", - "sp-std/std", - "sp-transaction-pool/std", - "sp-version/std", - "sp-storage/std", - "sp-io/std", - "staging-xcm-builder/std", - "staging-xcm-executor/std", - "staging-xcm/std", - "ismp-sync-committee/std", - "pallet-message-queue/std", - "parachains-common/std", - "sp-genesis-builder/std", - "ismp-bsc/std", - "ismp-grandpa/std", - "ismp-parachain/std", - "ismp-parachain-runtime-api/std", - "pallet-ismp-relayer/std", - "pallet-ismp-host-executive/std", - "pallet-call-decompressor/std", - "pallet-state-coprocessor/std", - "pallet-xcm-gateway/std", - "pallet-token-gateway-inspector/std", - "pallet-token-governor/std", - "pallet-assets/std", - "pallet-mmr/std", - "orml-xcm-support/std", - "orml-traits/std", - "pallet-mmr-runtime-api/std", - "sp-mmr-primitives/std", - "simnode-runtime-api/std", - "hyperbridge-client-machine/std", - "frame-metadata-hash-extension/std", - "anyhow/std" + "codec/std", + "log/std", + "scale-info/std", + "ismp/std", + "cumulus-pallet-aura-ext/std", + "cumulus-pallet-dmp-queue/std", + "cumulus-pallet-parachain-system/std", + "cumulus-pallet-xcm/std", + "cumulus-pallet-xcmp-queue/std", + "cumulus-primitives-core/std", + "cumulus-primitives-aura/std", + "cumulus-primitives-timestamp/std", + "cumulus-primitives-utility/std", + "frame-executive/std", + "frame-support/std", + "frame-system-rpc-runtime-api/std", + "frame-system/std", + "pallet-aura/std", + "pallet-authorship/std", + "pallet-balances/std", + "pallet-collator-selection/std", + "pallet-session/std", + "pallet-sudo/std", + "pallet-utility/std", + "pallet-timestamp/std", + "pallet-transaction-payment-rpc-runtime-api/std", + "pallet-transaction-payment/std", + "pallet-xcm/std", + "pallet-treasury/std", + "pallet-fishermen/std", + "pallet-asset-rate/std", + "pallet-collective/std", + "pallet-ismp/std", + "pallet-ismp-runtime-api/std", + "pallet-ismp-demo/std", + "parachain-info/std", + "polkadot-parachain-primitives/std", + "polkadot-runtime-common/std", + "sp-api/std", + "sp-block-builder/std", + "sp-consensus-aura/std", + "sp-core/std", + "sp-inherents/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-version/std", + "sp-storage/std", + "sp-io/std", + "staging-xcm-builder/std", + "staging-xcm-executor/std", + "staging-xcm/std", + "ismp-sync-committee/std", + "pallet-message-queue/std", + "parachains-common/std", + "sp-genesis-builder/std", + "ismp-bsc/std", + "ismp-grandpa/std", + "ismp-parachain/std", + "ismp-parachain-runtime-api/std", + "pallet-ismp-relayer/std", + "pallet-ismp-host-executive/std", + "pallet-call-decompressor/std", + "pallet-state-coprocessor/std", + "pallet-xcm-gateway/std", + "pallet-token-gateway-inspector/std", + "pallet-token-governor/std", + "pallet-assets/std", + "pallet-mmr/std", + "orml-xcm-support/std", + "orml-traits/std", + "pallet-mmr-runtime-api/std", + "sp-mmr-primitives/std", + "simnode-runtime-api/std", + "hyperbridge-client-machine/std", + "frame-metadata-hash-extension/std", + "anyhow/std", ] runtime-benchmarks = [ - "hex-literal", - "frame-benchmarking/runtime-benchmarks", - "frame-support/runtime-benchmarks", - "frame-system-benchmarking/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "cumulus-pallet-parachain-system/runtime-benchmarks", - "pallet-balances/runtime-benchmarks", - "pallet-collator-selection/runtime-benchmarks", - "pallet-timestamp/runtime-benchmarks", - "pallet-xcm/runtime-benchmarks", - "pallet-utility/runtime-benchmarks", - "pallet-treasury/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", - "pallet-asset-rate/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", - "staging-xcm-builder/runtime-benchmarks", - "pallet-xcm/runtime-benchmarks", - "cumulus-pallet-session-benchmarking/runtime-benchmarks", - "cumulus-pallet-xcmp-queue/runtime-benchmarks", - "pallet-message-queue/runtime-benchmarks", - "pallet-assets/runtime-benchmarks", - "pallet-sudo/runtime-benchmarks", - "parachains-common/runtime-benchmarks", - "ismp-grandpa/runtime-benchmarks", + "hex-literal", + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system-benchmarking/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "cumulus-pallet-parachain-system/runtime-benchmarks", + "pallet-balances/runtime-benchmarks", + "pallet-collator-selection/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks", + "pallet-xcm/runtime-benchmarks", + "pallet-utility/runtime-benchmarks", + "pallet-treasury/runtime-benchmarks", + "pallet-collective/runtime-benchmarks", + "pallet-asset-rate/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", + "staging-xcm-builder/runtime-benchmarks", + "pallet-xcm/runtime-benchmarks", + "cumulus-pallet-session-benchmarking/runtime-benchmarks", + "cumulus-pallet-xcmp-queue/runtime-benchmarks", + "pallet-message-queue/runtime-benchmarks", + "pallet-assets/runtime-benchmarks", + "pallet-sudo/runtime-benchmarks", + "parachains-common/runtime-benchmarks", + "ismp-grandpa/runtime-benchmarks", ] try-runtime = [ - "cumulus-pallet-aura-ext/try-runtime", - "cumulus-pallet-dmp-queue/try-runtime", - "cumulus-pallet-parachain-system/try-runtime", - "cumulus-pallet-xcm/try-runtime", - "cumulus-pallet-xcmp-queue/try-runtime", - "frame-executive/try-runtime", - "frame-system/try-runtime", - "frame-try-runtime/try-runtime", - "pallet-aura/try-runtime", - "pallet-authorship/try-runtime", - "pallet-balances/try-runtime", - "pallet-collator-selection/try-runtime", - "pallet-ismp/try-runtime", - "ismp-sync-committee/try-runtime", - "pallet-ismp-demo/try-runtime", - "pallet-ismp-relayer/try-runtime", - "pallet-ismp-host-executive/try-runtime", - "pallet-session/try-runtime", - "pallet-sudo/try-runtime", - "pallet-utility/try-runtime", - "pallet-timestamp/try-runtime", - "pallet-transaction-payment/try-runtime", - "pallet-xcm/try-runtime", - "pallet-mmr/try-runtime", - "parachain-info/try-runtime", - "pallet-assets/runtime-benchmarks" + "cumulus-pallet-aura-ext/try-runtime", + "cumulus-pallet-dmp-queue/try-runtime", + "cumulus-pallet-parachain-system/try-runtime", + "cumulus-pallet-xcm/try-runtime", + "cumulus-pallet-xcmp-queue/try-runtime", + "frame-executive/try-runtime", + "frame-system/try-runtime", + "frame-try-runtime/try-runtime", + "pallet-aura/try-runtime", + "pallet-authorship/try-runtime", + "pallet-balances/try-runtime", + "pallet-collator-selection/try-runtime", + "pallet-ismp/try-runtime", + "ismp-sync-committee/try-runtime", + "pallet-ismp-demo/try-runtime", + "pallet-ismp-relayer/try-runtime", + "pallet-ismp-host-executive/try-runtime", + "pallet-session/try-runtime", + "pallet-sudo/try-runtime", + "pallet-utility/try-runtime", + "pallet-timestamp/try-runtime", + "pallet-transaction-payment/try-runtime", + "pallet-xcm/try-runtime", + "pallet-mmr/try-runtime", + "parachain-info/try-runtime", + "pallet-assets/runtime-benchmarks", ]