diff --git a/polkadot/node/service/src/chain_spec.rs b/polkadot/node/service/src/chain_spec.rs index 62ba1c0d66..bbacf9aa17 100644 --- a/polkadot/node/service/src/chain_spec.rs +++ b/polkadot/node/service/src/chain_spec.rs @@ -462,47 +462,6 @@ fn westend_staging_testnet_config_genesis(wasm_binary: &[u8]) -> westend::Genesi pallet_sudo: westend::SudoConfig { key: endowed_accounts[0].clone(), }, - parachains_configuration: westend_runtime::ParachainsConfigurationConfig { - config: polkadot_runtime_parachains::configuration::HostConfiguration { - validation_upgrade_frequency: 600u32, - validation_upgrade_delay: 300, - acceptance_period: 1200, - max_code_size: 5 * 1024 * 1024, - max_pov_size: 50 * 1024 * 1024, - max_head_data_size: 32 * 1024, - group_rotation_frequency: 20, - chain_availability_period: 4, - thread_availability_period: 4, - max_upward_queue_count: 8, - max_upward_queue_size: 8 * 1024, - max_downward_message_size: 1024, - // this is approximatelly 4ms. - // - // Same as `4 * frame_support::weights::WEIGHT_PER_MILLIS`. We don't bother with - // an import since that's a made up number and should be replaced with a constant - // obtained by benchmarking anyway. - preferred_dispatchable_upward_messages_step_weight: 4 * 1_000_000_000, - max_upward_message_size: 1024, - max_upward_message_num_per_candidate: 5, - hrmp_open_request_ttl: 5, - hrmp_sender_deposit: 0, - hrmp_recipient_deposit: 0, - hrmp_channel_max_capacity: 8, - hrmp_channel_max_total_size: 8 * 1024, - hrmp_max_parachain_inbound_channels: 4, - hrmp_max_parathread_inbound_channels: 4, - hrmp_channel_max_message_size: 1024, - hrmp_max_parachain_outbound_channels: 4, - hrmp_max_parathread_outbound_channels: 4, - hrmp_max_message_num_per_candidate: 5, - no_show_slots: 2, - n_delay_tranches: 25, - needed_approvals: 2, - relay_vrf_modulo_samples: 10, - zeroth_delay_tranche_width: 0, - ..Default::default() - }, - }, } } @@ -1377,47 +1336,6 @@ pub fn westend_testnet_genesis( pallet_authority_discovery: westend::AuthorityDiscoveryConfig { keys: vec![] }, pallet_vesting: westend::VestingConfig { vesting: vec![] }, pallet_sudo: westend::SudoConfig { key: root_key }, - parachains_configuration: westend_runtime::ParachainsConfigurationConfig { - config: polkadot_runtime_parachains::configuration::HostConfiguration { - validation_upgrade_frequency: 600u32, - validation_upgrade_delay: 300, - acceptance_period: 1200, - max_code_size: 5 * 1024 * 1024, - max_pov_size: 50 * 1024 * 1024, - max_head_data_size: 32 * 1024, - group_rotation_frequency: 20, - chain_availability_period: 4, - thread_availability_period: 4, - max_upward_queue_count: 8, - max_upward_queue_size: 8 * 1024, - max_downward_message_size: 1024, - // this is approximatelly 4ms. - // - // Same as `4 * frame_support::weights::WEIGHT_PER_MILLIS`. We don't bother with - // an import since that's a made up number and should be replaced with a constant - // obtained by benchmarking anyway. - preferred_dispatchable_upward_messages_step_weight: 4 * 1_000_000_000, - max_upward_message_size: 1024, - max_upward_message_num_per_candidate: 5, - hrmp_open_request_ttl: 5, - hrmp_sender_deposit: 0, - hrmp_recipient_deposit: 0, - hrmp_channel_max_capacity: 8, - hrmp_channel_max_total_size: 8 * 1024, - hrmp_max_parachain_inbound_channels: 4, - hrmp_max_parathread_inbound_channels: 4, - hrmp_channel_max_message_size: 1024, - hrmp_max_parachain_outbound_channels: 4, - hrmp_max_parathread_outbound_channels: 4, - hrmp_max_message_num_per_candidate: 5, - no_show_slots: 2, - n_delay_tranches: 25, - needed_approvals: 2, - relay_vrf_modulo_samples: 10, - zeroth_delay_tranche_width: 0, - ..Default::default() - }, - }, } } diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs index 0d187d0be2..21f2d4e1dd 100644 --- a/polkadot/runtime/westend/src/lib.rs +++ b/polkadot/runtime/westend/src/lib.rs @@ -31,14 +31,14 @@ use primitives::v1::{ InboundDownwardMessage, InboundHrmpMessage, SessionInfo, }; use runtime_common::{ - paras_sudo_wrapper, paras_registrar, auctions, crowdloan, slots, SlowAdjustingFeeUpdate, CurrencyToVote, impls::ToAuthor, BlockHashCount, BlockWeights, BlockLength, RocksDbWeight, OffchainSolutionWeightLimit, + ParachainSessionKeyPlaceholder, AssignmentSessionKeyPlaceholder, }; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, - ApplyExtrinsicResult, KeyTypeId, Perbill, curve::PiecewiseLinear, ModuleId, + ApplyExtrinsicResult, KeyTypeId, Perbill, curve::PiecewiseLinear, transaction_validity::{TransactionValidity, TransactionSource, TransactionPriority}, traits::{ BlakeTwo256, Block as BlockT, OpaqueKeys, ConvertInto, AccountIdLookup, @@ -71,19 +71,6 @@ pub use sp_runtime::BuildStorage; pub use pallet_timestamp::Call as TimestampCall; pub use pallet_balances::Call as BalancesCall; -use runtime_parachains::origin as parachains_origin; -use runtime_parachains::configuration as parachains_configuration; -use runtime_parachains::shared as parachains_shared; -use runtime_parachains::inclusion as parachains_inclusion; -use runtime_parachains::inclusion_inherent as parachains_inclusion_inherent; -use runtime_parachains::initializer as parachains_initializer; -use runtime_parachains::session_info as parachains_session_info; -use runtime_parachains::paras as parachains_paras; -use runtime_parachains::dmp as parachains_dmp; -use runtime_parachains::ump as parachains_ump; -use runtime_parachains::hrmp as parachains_hrmp; -use runtime_parachains::scheduler as parachains_scheduler; - /// Constant values used within the runtime. pub mod constants; use constants::{time::*, currency::*, fee::*}; @@ -281,8 +268,8 @@ impl_opaque_keys! { pub grandpa: Grandpa, pub babe: Babe, pub im_online: ImOnline, - pub para_validator: Initializer, - pub para_assignment: ParachainsSessionInfo, + pub para_validator: ParachainSessionKeyPlaceholder, + pub para_assignment: AssignmentSessionKeyPlaceholder, pub authority_discovery: AuthorityDiscovery, } } @@ -688,120 +675,6 @@ impl pallet_proxy::Config for Runtime { type AnnouncementDepositFactor = AnnouncementDepositFactor; } -impl parachains_session_info::Config for Runtime {} - -impl parachains_ump::Config for Runtime { - type UmpSink = (); -} - -impl parachains_dmp::Config for Runtime {} - -impl parachains_hrmp::Config for Runtime { - type Origin = Origin; - type Event = Event; - type Currency = Balances; -} - -impl parachains_inclusion_inherent::Config for Runtime {} - -impl parachains_scheduler::Config for Runtime {} - -impl parachains_initializer::Config for Runtime { - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; -} - -impl paras_sudo_wrapper::Config for Runtime {} - -impl parachains_origin::Config for Runtime {} - -impl parachains_configuration::Config for Runtime {} - -impl parachains_shared::Config for Runtime {} - -/// Special `RewardValidators` that does nothing ;) -pub struct RewardValidators; -impl runtime_parachains::inclusion::RewardValidators for RewardValidators { - fn reward_backing(_: impl IntoIterator) {} - fn reward_bitfields(_: impl IntoIterator) {} -} - -impl parachains_inclusion::Config for Runtime { - type Event = Event; - type RewardValidators = RewardValidators; -} - -impl parachains_paras::Config for Runtime { - type Origin = Origin; -} - -parameter_types! { - pub const ParaDeposit: Balance = 5 * DOLLARS; - pub const DataDepositPerByte: Balance = deposit(0, 1); - pub const MaxCodeSize: u32 = 10 * 1024 * 1024; // 10 MB - pub const MaxHeadSize: u32 = 20 * 1024; // 20 KB -} - -impl paras_registrar::Config for Runtime { - type Event = Event; - type Origin = Origin; - type Currency = Balances; - type OnSwap = (Crowdloan, Slots); - type ParaDeposit = ParaDeposit; - type DataDepositPerByte = DataDepositPerByte; - type MaxCodeSize = MaxCodeSize; - type MaxHeadSize = MaxHeadSize; - type WeightInfo = paras_registrar::TestWeightInfo; -} - -parameter_types! { - pub const EndingPeriod: BlockNumber = 1 * HOURS; - pub const SampleLength: BlockNumber = 1 * MINUTES; -} - -impl auctions::Config for Runtime { - type Event = Event; - type Leaser = Slots; - type EndingPeriod = EndingPeriod; - type SampleLength = SampleLength; - type Randomness = pallet_babe::RandomnessFromOneEpochAgo; - type InitiateOrigin = EnsureRoot; - type WeightInfo = auctions::TestWeightInfo; -} - -parameter_types! { - pub const LeasePeriod: BlockNumber = 365 * DAYS; -} - -impl slots::Config for Runtime { - type Event = Event; - type Currency = Balances; - type Registrar = Registrar; - type LeasePeriod = LeasePeriod; - type WeightInfo = slots::TestWeightInfo; -} - -parameter_types! { - pub const CrowdloanId: ModuleId = ModuleId(*b"py/cfund"); - pub const SubmissionDeposit: Balance = 1_000 * DOLLARS; - pub const MinContribution: Balance = 100 * DOLLARS; - pub const RetirementPeriod: BlockNumber = 7 * DAYS; - pub const RemoveKeysLimit: u32 = 500; - -} - -impl crowdloan::Config for Runtime { - type Event = Event; - type ModuleId = CrowdloanId; - type SubmissionDeposit = SubmissionDeposit; - type MinContribution = MinContribution; - type RetirementPeriod = RetirementPeriod; - type OrphanedFunds = (); - type RemoveKeysLimit = RemoveKeysLimit; - type Registrar = Registrar; - type Auctioneer = Auctions; - type WeightInfo = crowdloan::TestWeightInfo; -} - construct_runtime! { pub enum Runtime where Block = Block, @@ -856,26 +729,6 @@ construct_runtime! { // Election pallet. Only works with staking, but placed here to maintain indices. ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event, ValidateUnsigned} = 24, - - // Parachains Runtime - ParachainsOrigin: parachains_origin::{Pallet, Origin} = 28, - ParachainsConfiguration: parachains_configuration::{Pallet, Call, Storage, Config} = 29, - Shared: parachains_shared::{Pallet, Call, Storage} = 30, - Inclusion: parachains_inclusion::{Pallet, Call, Storage, Event} = 31, - InclusionInherent: parachains_inclusion_inherent::{Pallet, Call, Storage, Inherent} = 32, - ParachainsScheduler: parachains_scheduler::{Pallet, Call, Storage} = 33, - Paras: parachains_paras::{Pallet, Call, Storage} = 34, - Initializer: parachains_initializer::{Pallet, Call, Storage} = 35, - Dmp: parachains_dmp::{Pallet, Call, Storage} = 36, - Ump: parachains_ump::{Pallet, Call, Storage} = 37, - Hrmp: parachains_hrmp::{Pallet, Call, Storage, Event} = 38, - ParachainsSessionInfo: parachains_session_info::{Pallet, Call, Storage} = 39, - - // Parachain Onboarding Pallets - Registrar: paras_registrar::{Pallet, Call, Storage, Event} = 40, - Auctions: auctions::{Pallet, Call, Storage, Event} = 41, - Crowdloan: crowdloan::{Pallet, Call, Storage, Event} = 42, - Slots: slots::{Pallet, Call, Storage, Event} = 43, } } @@ -1235,12 +1088,6 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, pallet_utility, Utility); add_benchmark!(params, batches, pallet_vesting, Vesting); - // Polkadot Parachain Benchmarks - add_benchmark!(params, batches, auctions, Auctions); - add_benchmark!(params, batches, crowdloan, Crowdloan); - add_benchmark!(params, batches, paras_registrar, Registrar); - add_benchmark!(params, batches, slots, Slots); - if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } Ok(batches) } diff --git a/polkadot/runtime/westend/src/weights/auctions.rs b/polkadot/runtime/westend/src/weights/auctions.rs deleted file mode 100644 index 54f7335b4c..0000000000 --- a/polkadot/runtime/westend/src/weights/auctions.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot 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. - -// Polkadot 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 Polkadot. If not, see . -//! Autogenerated weights for auctions -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-03-23, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=auctions -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for auctions. -pub struct WeightInfo(PhantomData); -impl auctions::WeightInfo for WeightInfo { - fn new_auction() -> Weight { - (24_619_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn bid() -> Weight { - (113_354_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn on_initialize() -> Weight { - (3_095_173_000 as Weight) - .saturating_add(T::DbWeight::get().reads(625 as Weight)) - .saturating_add(T::DbWeight::get().writes(621 as Weight)) - } - fn cancel_auction() -> Weight { - (841_845_000 as Weight) - .saturating_add(T::DbWeight::get().reads(21 as Weight)) - .saturating_add(T::DbWeight::get().writes(621 as Weight)) - } -} diff --git a/polkadot/runtime/westend/src/weights/crowdloan.rs b/polkadot/runtime/westend/src/weights/crowdloan.rs deleted file mode 100644 index af8a1d0279..0000000000 --- a/polkadot/runtime/westend/src/weights/crowdloan.rs +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot 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. - -// Polkadot 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 Polkadot. If not, see . -//! Autogenerated weights for crowdloan -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-03-23, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=crowdloan -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for crowdloan. -pub struct WeightInfo(PhantomData); -impl crowdloan::WeightInfo for WeightInfo { - fn create() -> Weight { - (75_353_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn contribute() -> Weight { - (410_424_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn withdraw() -> Weight { - (113_238_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn dissolve(k: u32, ) -> Weight { - (126_795_000 as Weight) - // Standard Error: 8_000 - .saturating_add((840_000 as Weight).saturating_mul(k as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) - } - fn edit() -> Weight { - (38_569_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - } - fn on_initialize(n: u32, ) -> Weight { - (5_922_000 as Weight) - // Standard Error: 17_000 - .saturating_add((103_761_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) - } -} diff --git a/polkadot/runtime/westend/src/weights/paras_registrar.rs b/polkadot/runtime/westend/src/weights/paras_registrar.rs deleted file mode 100644 index 9a9446b777..0000000000 --- a/polkadot/runtime/westend/src/weights/paras_registrar.rs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot 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. - -// Polkadot 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 Polkadot. If not, see . -//! Autogenerated weights for paras_registrar -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-02-21, STEPS: [50, ], REPEAT: 20, LOW RANGE: [], HIGH RANGE: [] -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=paras_registrar -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for paras_registrar. -pub struct WeightInfo(PhantomData); -impl paras_registrar::WeightInfo for WeightInfo { - fn register() -> Weight { - (8_442_552_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn deregister() -> Weight { - (89_379_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } - fn swap() -> Weight { - (61_913_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) - } -} diff --git a/polkadot/runtime/westend/src/weights/slots.rs b/polkadot/runtime/westend/src/weights/slots.rs deleted file mode 100644 index 53454ab80a..0000000000 --- a/polkadot/runtime/westend/src/weights/slots.rs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot 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. - -// Polkadot 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 Polkadot. If not, see . -//! Autogenerated weights for slots -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-03-01, STEPS: [50, ], REPEAT: 20, LOW RANGE: [], HIGH RANGE: [] -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 - -// Executed Command: -// target/release/polkadot -// benchmark -// --chain=westend-dev -// --steps=50 -// --repeat=20 -// --pallet=slots -// --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/westend/src/weights/ - - -#![allow(unused_parens)] -#![allow(unused_imports)] - -use frame_support::{traits::Get, weights::Weight}; -use sp_std::marker::PhantomData; - -/// Weight functions for slots. -pub struct WeightInfo(PhantomData); -impl slots::WeightInfo for WeightInfo { - fn force_lease() -> Weight { - (46_565_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) - } - fn manage_lease_period_start(c: u32, t: u32, ) -> Weight { - (0 as Weight) - // Standard Error: 18_000 - .saturating_add((17_965_000 as Weight).saturating_mul(c as Weight)) - // Standard Error: 18_000 - .saturating_add((34_217_000 as Weight).saturating_mul(t as Weight)) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(t as Weight))) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) - .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(t as Weight))) - } -}