diff --git a/runtime/common/src/impls.rs b/runtime/common/src/impls.rs index fbfe513bfb17..a022de7244f3 100644 --- a/runtime/common/src/impls.rs +++ b/runtime/common/src/impls.rs @@ -16,10 +16,8 @@ //! Auxillary struct/enums for polkadot runtime. -use primitives::Balance; use sp_runtime::traits::{Convert, Saturating}; use sp_runtime::{Fixed64, Perbill}; -use frame_support::weights::Weight; use frame_support::traits::{OnUnbalanced, Imbalance, Currency, Get}; use crate::{MaximumBlockWeight, NegativeImbalance}; @@ -75,25 +73,6 @@ where fn convert(x: u128) -> u128 { x * Self::factor() } } -/// Handles converting a weight scalar to a fee value, based on the scale and granularity of the -/// node's balance type. -/// -/// This should typically create a mapping between the following ranges: -/// - [0, system::MaximumBlockWeight] -/// - [Balance::min, Balance::max] -/// -/// Yet, it can be used for any other sort of change to weight-fee. Some examples being: -/// - Setting it to `0` will essentially disable the weight fee. -/// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. -pub struct WeightToFee; -impl Convert for WeightToFee { - fn convert(x: Weight) -> Balance { - // in Polkadot a weight of 10_000 (smallest non-zero weight) to be mapped to 10^7 units of - // fees (1/10 CENT), hence: - Balance::from(x).saturating_mul(1_000) - } -} - /// Update the given multiplier based on the following formula /// /// diff = (target_weight - previous_block_weight) diff --git a/runtime/common/src/lib.rs b/runtime/common/src/lib.rs index af5bddff1f2c..840978cce4d9 100644 --- a/runtime/common/src/lib.rs +++ b/runtime/common/src/lib.rs @@ -44,7 +44,7 @@ pub use attestations::{Call as AttestationsCall, MORE_ATTESTATIONS_IDENTIFIER}; pub use parachains::Call as ParachainsCall; /// Implementations of some helper traits passed into runtime modules as associated types. -pub use impls::{CurrencyToVoteHandler, TargetedFeeAdjustment, ToAuthor, WeightToFee}; +pub use impls::{CurrencyToVoteHandler, TargetedFeeAdjustment, ToAuthor}; pub type NegativeImbalance = as Currency<::AccountId>>::NegativeImbalance; diff --git a/runtime/kusama/src/constants.rs b/runtime/kusama/src/constants.rs index e6cd409e82c4..d2c0d991191b 100644 --- a/runtime/kusama/src/constants.rs +++ b/runtime/kusama/src/constants.rs @@ -51,7 +51,28 @@ pub mod time { /// Fee-related. pub mod fee { pub use sp_runtime::Perbill; + use primitives::Balance; + use frame_support::weights::Weight; + use sp_runtime::traits::Convert; /// The block saturation level. Fees will be updates based on this value. pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); + + /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the + /// node's balance type. + /// + /// This should typically create a mapping between the following ranges: + /// - [0, system::MaximumBlockWeight] + /// - [Balance::min, Balance::max] + /// + /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: + /// - Setting it to `0` will essentially disable the weight fee. + /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. + pub struct WeightToFee; + impl Convert for WeightToFee { + fn convert(x: Weight) -> Balance { + // in Kusama a weight of 10_000 (smallest non-zero weight) is mapped to 1/10 CENT: + Balance::from(x).saturating_mul(super::currency::CENTS / (10 * 10_000)) + } + } } diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 170a9a6c03f3..707ce1ace4a7 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -28,7 +28,7 @@ use primitives::{ parachain::{self, ActiveParas, CandidateReceipt}, ValidityError, }; use runtime_common::{attestations, claims, parachains, registrar, slots, - impls::{CurrencyToVoteHandler, TargetedFeeAdjustment, ToAuthor, WeightToFee}, + impls::{CurrencyToVoteHandler, TargetedFeeAdjustment, ToAuthor}, NegativeImbalance, BlockHashCount, MaximumBlockWeight, AvailableBlockRatio, MaximumBlockLength, }; @@ -65,7 +65,7 @@ pub use parachains::Call as ParachainsCall; /// Constant values used within the runtime. pub mod constants; -use constants::{time::*, currency::*}; +use constants::{time::*, currency::*, fee::*}; // Make the WASM binary available. #[cfg(feature = "std")] @@ -77,7 +77,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("parity-kusama"), authoring_version: 2, spec_version: 1049, - impl_version: 1, + impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/runtime/polkadot/src/constants.rs b/runtime/polkadot/src/constants.rs index 384041256c4c..d33b3e6616ff 100644 --- a/runtime/polkadot/src/constants.rs +++ b/runtime/polkadot/src/constants.rs @@ -43,7 +43,28 @@ pub mod time { /// Fee-related. pub mod fee { pub use sp_runtime::Perbill; + use primitives::Balance; + use frame_support::weights::Weight; + use sp_runtime::traits::Convert; /// The block saturation level. Fees will be updates based on this value. pub const TARGET_BLOCK_FULLNESS: Perbill = Perbill::from_percent(25); + + /// Handles converting a weight scalar to a fee value, based on the scale and granularity of the + /// node's balance type. + /// + /// This should typically create a mapping between the following ranges: + /// - [0, system::MaximumBlockWeight] + /// - [Balance::min, Balance::max] + /// + /// Yet, it can be used for any other sort of change to weight-fee. Some examples being: + /// - Setting it to `0` will essentially disable the weight fee. + /// - Setting it to `1` will cause the literal `#[weight = x]` values to be charged. + pub struct WeightToFee; + impl Convert for WeightToFee { + fn convert(x: Weight) -> Balance { + // in Polkadot a weight of 10_000 (smallest non-zero weight) is mapped to (1/10 CENT): + Balance::from(x).saturating_mul(super::currency::CENTS / (10 * 10_000)) + } + } } diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 2f4bd8298cde..1ce31e88bd23 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -21,7 +21,7 @@ #![recursion_limit="256"] use runtime_common::{attestations, claims, parachains, registrar, slots, - impls::{CurrencyToVoteHandler, TargetedFeeAdjustment, ToAuthor, WeightToFee}, + impls::{CurrencyToVoteHandler, TargetedFeeAdjustment, ToAuthor}, NegativeImbalance, BlockHashCount, MaximumBlockWeight, AvailableBlockRatio, MaximumBlockLength, }; @@ -69,7 +69,7 @@ pub use parachains::Call as ParachainsCall; /// Constant values used within the runtime. pub mod constants; -use constants::{time::*, currency::*}; +use constants::{time::*, currency::*, fee::*}; // Make the WASM binary available. #[cfg(feature = "std")]