diff --git a/chains/orchestrator-relays/runtime/dancelight/src/weights/mod.rs b/chains/orchestrator-relays/runtime/dancelight/src/weights/mod.rs
index dfd483e1e..38edae750 100644
--- a/chains/orchestrator-relays/runtime/dancelight/src/weights/mod.rs
+++ b/chains/orchestrator-relays/runtime/dancelight/src/weights/mod.rs
@@ -60,3 +60,4 @@ pub mod snowbridge_pallet_ethereum_client;
pub mod snowbridge_pallet_inbound_queue;
pub mod snowbridge_pallet_outbound_queue;
pub mod snowbridge_pallet_system;
+pub mod xcm;
diff --git a/chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/mod.rs b/chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/mod.rs
new file mode 100644
index 000000000..52d0edce9
--- /dev/null
+++ b/chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/mod.rs
@@ -0,0 +1,235 @@
+// Copyright (C) Moondance Labs Ltd.
+// This file is part of Tanssi.
+
+// Tanssi 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.
+
+// Tanssi 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 Tanssi. If not, see
+
+pub mod pallet_xcm_benchmarks_generic;
+
+use {
+ crate::Runtime,
+ frame_support::weights::Weight,
+ pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric,
+ sp_std::prelude::*,
+ xcm::{
+ latest::{prelude::*, Weight as XCMWeight},
+ DoubleEncoded,
+ },
+};
+
+trait WeighAssets {
+ fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight;
+}
+
+impl WeighAssets for Assets {
+ fn weigh_multi_assets(&self, weight: Weight) -> XCMWeight {
+ weight.saturating_mul(self.inner().iter().count() as u64)
+ }
+}
+
+// Values copied from statemint benchmarks
+const ASSET_BURN_MAX_PROOF_SIZE: u64 = 7242;
+const ASSET_MINT_MAX_PROOF_SIZE: u64 = 7242;
+const ASSET_TRANSFER_MAX_PROOF_SIZE: u64 = 13412;
+
+// For now we are returning benchmarked weights only for generic XCM instructions.
+// Fungible XCM instructions will return a fixed weight value of
+// 200_000_000 ref_time and its proper PoV weight taken from statemint benchmarks.
+//
+// TODO: add the fungible benchmarked values once these are calculated.
+pub struct XcmWeight(core::marker::PhantomData);
+impl XcmWeightInfo for XcmWeight
+where
+ Runtime: frame_system::Config,
+{
+ fn withdraw_asset(assets: &Assets) -> XCMWeight {
+ assets.weigh_multi_assets(XCMWeight::from_parts(
+ 200_000_000u64,
+ ASSET_BURN_MAX_PROOF_SIZE,
+ ))
+ }
+ fn reserve_asset_deposited(assets: &Assets) -> XCMWeight {
+ assets.weigh_multi_assets(XCMWeight::from_parts(200_000_000u64, 0))
+ }
+ fn receive_teleported_asset(_assets: &Assets) -> XCMWeight {
+ XCMWeight::MAX
+ }
+ fn query_response(
+ _query_id: &u64,
+ _response: &Response,
+ _max_weight: &Weight,
+ _querier: &Option,
+ ) -> XCMWeight {
+ XcmGeneric::::query_response()
+ }
+ fn transfer_asset(assets: &Assets, _dest: &Location) -> XCMWeight {
+ assets.weigh_multi_assets(XCMWeight::from_parts(
+ 200_000_000u64,
+ ASSET_TRANSFER_MAX_PROOF_SIZE,
+ ))
+ }
+ fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> XCMWeight {
+ assets.weigh_multi_assets(XCMWeight::from_parts(
+ 200_000_000u64,
+ ASSET_TRANSFER_MAX_PROOF_SIZE,
+ ))
+ }
+ fn transact(
+ _origin_type: &OriginKind,
+ _require_weight_at_most: &Weight,
+ _call: &DoubleEncoded,
+ ) -> XCMWeight {
+ XcmGeneric::::transact()
+ }
+ 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
+ }
+ fn hrmp_channel_accepted(_recipient: &u32) -> XCMWeight {
+ // XCM Executor does not currently support HRMP channel operations
+ Weight::MAX
+ }
+ fn hrmp_channel_closing(_initiator: &u32, _sender: &u32, _recipient: &u32) -> XCMWeight {
+ // XCM Executor does not currently support HRMP channel operations
+ Weight::MAX
+ }
+ fn clear_origin() -> XCMWeight {
+ XcmGeneric::::clear_origin()
+ }
+ fn descend_origin(_who: &InteriorLocation) -> XCMWeight {
+ XcmGeneric::::descend_origin()
+ }
+ fn report_error(_query_response_info: &QueryResponseInfo) -> XCMWeight {
+ XcmGeneric::::report_error()
+ }
+ fn deposit_asset(_assets: &AssetFilter, _dest: &Location) -> XCMWeight {
+ Weight::from_parts(200_000_000u64, ASSET_MINT_MAX_PROOF_SIZE)
+ }
+ fn deposit_reserve_asset(_assets: &AssetFilter, _dest: &Location, _xcm: &Xcm<()>) -> XCMWeight {
+ Weight::from_parts(200_000_000u64, ASSET_MINT_MAX_PROOF_SIZE)
+ }
+ fn exchange_asset(_give: &AssetFilter, _receive: &Assets, _maximal: &bool) -> XCMWeight {
+ Weight::MAX
+ }
+ fn initiate_reserve_withdraw(
+ _assets: &AssetFilter,
+ _reserve: &Location,
+ _xcm: &Xcm<()>,
+ ) -> XCMWeight {
+ XCMWeight::from_parts(200_000_000u64, ASSET_TRANSFER_MAX_PROOF_SIZE)
+ }
+ fn initiate_teleport(_assets: &AssetFilter, _dest: &Location, _xcm: &Xcm<()>) -> XCMWeight {
+ XCMWeight::MAX
+ }
+ fn report_holding(_response_info: &QueryResponseInfo, _assets: &AssetFilter) -> Weight {
+ XcmGeneric::::report_holding()
+ }
+ fn buy_execution(_fees: &Asset, _weight_limit: &WeightLimit) -> XCMWeight {
+ XcmGeneric::::buy_execution()
+ }
+ fn refund_surplus() -> XCMWeight {
+ XcmGeneric::::refund_surplus()
+ }
+ fn set_error_handler(_xcm: &Xcm) -> XCMWeight {
+ XcmGeneric::::set_error_handler()
+ }
+ fn set_appendix(_xcm: &Xcm) -> XCMWeight {
+ XcmGeneric::::set_appendix()
+ }
+ fn clear_error() -> XCMWeight {
+ XcmGeneric::::clear_error()
+ }
+ fn claim_asset(assets: &Assets, _ticket: &Location) -> XCMWeight {
+ assets.weigh_multi_assets(XcmGeneric::::claim_asset())
+ }
+ fn trap(_code: &u64) -> XCMWeight {
+ XcmGeneric::::trap()
+ }
+ fn subscribe_version(_query_id: &QueryId, _max_response_weight: &Weight) -> XCMWeight {
+ XcmGeneric::::subscribe_version()
+ }
+ fn unsubscribe_version() -> XCMWeight {
+ XcmGeneric::::unsubscribe_version()
+ }
+ fn burn_asset(assets: &Assets) -> Weight {
+ assets.weigh_multi_assets(XcmGeneric::::burn_asset())
+ }
+ fn expect_asset(assets: &Assets) -> Weight {
+ assets.weigh_multi_assets(XcmGeneric::::expect_asset())
+ }
+ fn expect_origin(_origin: &Option) -> Weight {
+ XcmGeneric::::expect_origin()
+ }
+ fn expect_error(_error: &Option<(u32, XcmError)>) -> Weight {
+ XcmGeneric::::expect_error()
+ }
+ fn expect_transact_status(_transact_status: &MaybeErrorCode) -> Weight {
+ XcmGeneric::::expect_transact_status()
+ }
+ fn query_pallet(_module_name: &Vec, _response_info: &QueryResponseInfo) -> Weight {
+ XcmGeneric::::query_pallet()
+ }
+ fn expect_pallet(
+ _index: &u32,
+ _name: &Vec,
+ _module_name: &Vec,
+ _crate_major: &u32,
+ _min_crate_minor: &u32,
+ ) -> Weight {
+ XcmGeneric::::expect_pallet()
+ }
+ fn report_transact_status(_response_info: &QueryResponseInfo) -> Weight {
+ XcmGeneric::::report_transact_status()
+ }
+ fn clear_transact_status() -> Weight {
+ XcmGeneric::::clear_transact_status()
+ }
+ fn universal_origin(_: &Junction) -> Weight {
+ Weight::MAX
+ }
+ fn export_message(_: &NetworkId, _: &Junctions, _: &Xcm<()>) -> Weight {
+ Weight::MAX
+ }
+ fn lock_asset(_: &Asset, _: &Location) -> Weight {
+ Weight::MAX
+ }
+ fn unlock_asset(_: &Asset, _: &Location) -> Weight {
+ Weight::MAX
+ }
+ fn note_unlockable(_: &Asset, _: &Location) -> Weight {
+ Weight::MAX
+ }
+ fn request_unlock(_: &Asset, _: &Location) -> Weight {
+ Weight::MAX
+ }
+ fn set_fees_mode(_: &bool) -> Weight {
+ XcmGeneric::::set_fees_mode()
+ }
+ fn set_topic(_topic: &[u8; 32]) -> Weight {
+ XcmGeneric::::set_topic()
+ }
+ fn clear_topic() -> Weight {
+ XcmGeneric::::clear_topic()
+ }
+ fn alias_origin(_: &Location) -> Weight {
+ // XCM Executor does not currently support alias origin operations
+ Weight::MAX
+ }
+ fn unpaid_execution(_: &WeightLimit, _: &Option) -> Weight {
+ XcmGeneric::::unpaid_execution()
+ }
+}
diff --git a/chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
new file mode 100644
index 000000000..ffd6650b1
--- /dev/null
+++ b/chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -0,0 +1,323 @@
+// Copyright (C) Moondance Labs Ltd.
+// This file is part of Tanssi.
+
+// Tanssi 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.
+
+// Tanssi 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 Tanssi. If not, see
+
+
+//! Autogenerated weights for pallet_xcm_benchmarks::generic
+//!
+//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 43.0.0
+//! DATE: 2025-02-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! WORST CASE MAP SIZE: `1000000`
+//! HOSTNAME: `macbook`, CPU: ``
+//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+
+// Executed Command:
+// target/release/tanssi-relay
+// benchmark
+// pallet
+// --execution=wasm
+// --wasm-execution=compiled
+// --pallet
+// pallet_xcm_benchmarks::generic
+// --extrinsic
+// *
+// --chain=dev
+// --steps
+// 50
+// --repeat
+// 20
+// --template=./benchmarking/frame-weight-runtime-template-xcm.hbs
+// --json-file
+// raw.json
+// --output
+// chains/orchestrator-relays/runtime/dancelight/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+
+#![cfg_attr(rustfmt, rustfmt_skip)]
+#![allow(unused_parens)]
+#![allow(unused_imports)]
+
+use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
+use sp_std::marker::PhantomData;
+
+/// Weights for pallet_xcm_benchmarks::generic using the Substrate node and recommended hardware.
+pub struct WeightInfo(PhantomData);
+impl WeightInfo {
+ /// Storage: `Dmp::DeliveryFeeFactor` (r:1 w:0)
+ /// Proof: `Dmp::DeliveryFeeFactor` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `XcmPallet::SupportedVersion` (r:1 w:0)
+ /// Proof: `XcmPallet::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DownwardMessageQueues` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `System::Account` (r:1 w:1)
+ /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+ /// Storage: `Dmp::DownwardMessageQueueHeads` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn report_holding() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `177`
+ // Estimated: `3642`
+ // Minimum execution time: 59_000_000 picoseconds.
+ Weight::from_parts(59_000_000, 3642)
+ .saturating_add(T::DbWeight::get().reads(5_u64))
+ .saturating_add(T::DbWeight::get().writes(3_u64))
+ }
+ pub(crate) fn buy_execution() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ /// Storage: `XcmPallet::Queries` (r:1 w:0)
+ /// Proof: `XcmPallet::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn query_response() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `3465`
+ // Minimum execution time: 5_000_000 picoseconds.
+ Weight::from_parts(5_000_000, 3465)
+ .saturating_add(T::DbWeight::get().reads(1_u64))
+ }
+ pub(crate) fn transact() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 6_000_000 picoseconds.
+ Weight::from_parts(7_000_000, 0)
+ }
+ pub(crate) fn refund_surplus() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 1_000_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn set_error_handler() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn set_appendix() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn clear_error() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn descend_origin() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn clear_origin() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ /// Storage: `Dmp::DeliveryFeeFactor` (r:1 w:0)
+ /// Proof: `Dmp::DeliveryFeeFactor` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `XcmPallet::SupportedVersion` (r:1 w:0)
+ /// Proof: `XcmPallet::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DownwardMessageQueues` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `System::Account` (r:1 w:1)
+ /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+ /// Storage: `Dmp::DownwardMessageQueueHeads` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn report_error() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `177`
+ // Estimated: `3642`
+ // Minimum execution time: 56_000_000 picoseconds.
+ Weight::from_parts(57_000_000, 3642)
+ .saturating_add(T::DbWeight::get().reads(5_u64))
+ .saturating_add(T::DbWeight::get().writes(3_u64))
+ }
+ /// Storage: `XcmPallet::AssetTraps` (r:1 w:1)
+ /// Proof: `XcmPallet::AssetTraps` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn claim_asset() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `23`
+ // Estimated: `3488`
+ // Minimum execution time: 7_000_000 picoseconds.
+ Weight::from_parts(8_000_000, 3488)
+ .saturating_add(T::DbWeight::get().reads(1_u64))
+ .saturating_add(T::DbWeight::get().writes(1_u64))
+ }
+ pub(crate) fn trap() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ /// Storage: `XcmPallet::VersionNotifyTargets` (r:1 w:1)
+ /// Proof: `XcmPallet::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DeliveryFeeFactor` (r:1 w:0)
+ /// Proof: `Dmp::DeliveryFeeFactor` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `XcmPallet::SupportedVersion` (r:1 w:0)
+ /// Proof: `XcmPallet::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DownwardMessageQueues` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DownwardMessageQueueHeads` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn subscribe_version() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `76`
+ // Estimated: `3541`
+ // Minimum execution time: 25_000_000 picoseconds.
+ Weight::from_parts(26_000_000, 3541)
+ .saturating_add(T::DbWeight::get().reads(5_u64))
+ .saturating_add(T::DbWeight::get().writes(3_u64))
+ }
+ /// Storage: `XcmPallet::VersionNotifyTargets` (r:0 w:1)
+ /// Proof: `XcmPallet::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn unsubscribe_version() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 2_000_000 picoseconds.
+ Weight::from_parts(3_000_000, 0)
+ .saturating_add(T::DbWeight::get().writes(1_u64))
+ }
+ pub(crate) fn burn_asset() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 1_000_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn expect_asset() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn expect_origin() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn expect_error() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 2_000_000 picoseconds.
+ Weight::from_parts(3_000_000, 0)
+ }
+ pub(crate) fn expect_transact_status() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ /// Storage: `Dmp::DeliveryFeeFactor` (r:1 w:0)
+ /// Proof: `Dmp::DeliveryFeeFactor` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `XcmPallet::SupportedVersion` (r:1 w:0)
+ /// Proof: `XcmPallet::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DownwardMessageQueues` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `System::Account` (r:1 w:1)
+ /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+ /// Storage: `Dmp::DownwardMessageQueueHeads` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn query_pallet() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `177`
+ // Estimated: `3642`
+ // Minimum execution time: 66_000_000 picoseconds.
+ Weight::from_parts(68_000_000, 3642)
+ .saturating_add(T::DbWeight::get().reads(5_u64))
+ .saturating_add(T::DbWeight::get().writes(3_u64))
+ }
+ pub(crate) fn expect_pallet() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 8_000_000 picoseconds.
+ Weight::from_parts(8_000_000, 0)
+ }
+ /// Storage: `Dmp::DeliveryFeeFactor` (r:1 w:0)
+ /// Proof: `Dmp::DeliveryFeeFactor` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `XcmPallet::SupportedVersion` (r:1 w:0)
+ /// Proof: `XcmPallet::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `Dmp::DownwardMessageQueues` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ /// Storage: `System::Account` (r:1 w:1)
+ /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+ /// Storage: `Dmp::DownwardMessageQueueHeads` (r:1 w:1)
+ /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`)
+ pub(crate) fn report_transact_status() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `177`
+ // Estimated: `3642`
+ // Minimum execution time: 57_000_000 picoseconds.
+ Weight::from_parts(58_000_000, 3642)
+ .saturating_add(T::DbWeight::get().reads(5_u64))
+ .saturating_add(T::DbWeight::get().writes(3_u64))
+ }
+ pub(crate) fn clear_transact_status() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn set_topic() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn clear_topic() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn set_fees_mode() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+ pub(crate) fn unpaid_execution() -> Weight {
+ // Proof Size summary in bytes:
+ // Measured: `0`
+ // Estimated: `0`
+ // Minimum execution time: 0_000 picoseconds.
+ Weight::from_parts(1_000_000, 0)
+ }
+}
\ No newline at end of file
diff --git a/chains/orchestrator-relays/runtime/dancelight/src/xcm_config.rs b/chains/orchestrator-relays/runtime/dancelight/src/xcm_config.rs
index 49ceaeb71..866498adf 100644
--- a/chains/orchestrator-relays/runtime/dancelight/src/xcm_config.rs
+++ b/chains/orchestrator-relays/runtime/dancelight/src/xcm_config.rs
@@ -16,15 +16,13 @@
//! XCM configuration for Dancelight.
-use super::{
- parachains_origin, weights, AccountId, AllPalletsWithSystem, Balances, Dmp, Fellows, ParaId,
- Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, TransactionByteFee, Treasury, WeightToFee,
- XcmPallet,
-};
-use crate::governance::StakingAdmin;
-use tp_bridge::EthereumLocationsConverterFor;
-
use {
+ super::{
+ parachains_origin, weights, weights::xcm::XcmWeight as XcmGenericWeights, AccountId,
+ AllPalletsWithSystem, Balances, Dmp, Fellows, ParaId, Runtime, RuntimeCall, RuntimeEvent,
+ RuntimeOrigin, TransactionByteFee, Treasury, WeightToFee, XcmPallet,
+ },
+ crate::governance::StakingAdmin,
dancelight_runtime_constants::{currency::CENTS, system_parachain::*},
frame_support::{
parameter_types,
@@ -37,6 +35,7 @@ use {
ToAuthor,
},
sp_core::ConstU32,
+ tp_bridge::EthereumLocationsConverterFor,
tp_xcm_commons::NativeAssetReserve,
xcm::latest::prelude::*,
xcm_builder::{
@@ -46,8 +45,8 @@ use {
FrameTransactionalProcessor, FungibleAdapter, HashedDescription, IsChildSystemParachain,
IsConcrete, MintLocation, OriginToPluralityVoice, SendXcmFeeToAccount,
SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation,
- TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WithComputedOrigin,
- WithUniqueTopic, XcmFeeManagerFromComponents,
+ TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds,
+ WithComputedOrigin, WithUniqueTopic, XcmFeeManagerFromComponents,
},
xcm_executor::XcmExecutor,
};
@@ -188,7 +187,8 @@ pub type Barrier = TrailingSetTopicAsId<(
/// Locations that will not be charged fees in the executor, neither for execution nor delivery.
/// We only waive fees for system functions, which these locations represent.
pub type WaivedLocations = Equals;
-pub type XcmWeigher = FixedWeightBounds;
+pub type XcmWeigher =
+ WeightInfoBounds, RuntimeCall, MaxInstructions>;
pub struct XcmConfig;
impl xcm_executor::Config for XcmConfig {