mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 01:41:03 +00:00
bf90cb0b73
This pull request is removing the Kusama and Polkadot runtime crates. As still some crates dependent on the runtime crates, this pull request is doing some more changes. - It removes the `hostperfcheck` CLI command. This CLI command could compare the current node against the standard hardware by doing some checks. Later we added the hardware benchmark feature to Substrate. This hardware benchmark is running on every node startup and prints a warning if the current node is too slow. This makes this CLI command a duplicate that was also depending on the kusama runtime. - The pull request is removing the emulated integration tests that were requiring the Kusama or Polkadot runtime crates.
123 lines
4.3 KiB
Rust
123 lines
4.3 KiB
Rust
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
/// Consensus-related.
|
|
pub mod consensus {
|
|
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included
|
|
/// into the relay chain.
|
|
pub const UNINCLUDED_SEGMENT_CAPACITY: u32 = 1;
|
|
/// How many parachain blocks are processed by the relay chain per parent. Limits the
|
|
/// number of blocks authored per slot.
|
|
pub const BLOCK_PROCESSING_VELOCITY: u32 = 1;
|
|
/// Relay chain slot duration, in milliseconds.
|
|
pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
|
|
}
|
|
|
|
/// Constants relating to KSM.
|
|
pub mod currency {
|
|
use polkadot_core_primitives::Balance;
|
|
|
|
/// The existential deposit. Set to 1/10 of its parent Relay Chain.
|
|
pub const EXISTENTIAL_DEPOSIT: Balance = 1 * CENTS / 10;
|
|
|
|
pub const UNITS: Balance = 1_000_000_000_000;
|
|
pub const QUID: Balance = UNITS / 30;
|
|
pub const CENTS: Balance = QUID / 100;
|
|
pub const GRAND: Balance = QUID * 1_000;
|
|
pub const MILLICENTS: Balance = CENTS / 1_000;
|
|
|
|
pub const fn deposit(items: u32, bytes: u32) -> Balance {
|
|
// map to 1/100 of what the kusama relay chain charges (v9020)
|
|
(items as Balance * 2_000 * CENTS + (bytes as Balance) * 100 * MILLICENTS) / 100
|
|
}
|
|
}
|
|
|
|
/// Constants related to Kusama fee payment.
|
|
pub mod fee {
|
|
use frame_support::{
|
|
pallet_prelude::Weight,
|
|
weights::{
|
|
constants::ExtrinsicBaseWeight, FeePolynomial, WeightToFeeCoefficient,
|
|
WeightToFeeCoefficients, WeightToFeePolynomial,
|
|
},
|
|
};
|
|
use polkadot_core_primitives::Balance;
|
|
use smallvec::smallvec;
|
|
pub use sp_runtime::Perbill;
|
|
|
|
/// 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, MAXIMUM_BLOCK_WEIGHT]
|
|
/// - [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 frame_support::weights::WeightToFee for WeightToFee {
|
|
type Balance = Balance;
|
|
|
|
fn weight_to_fee(weight: &Weight) -> Self::Balance {
|
|
let time_poly: FeePolynomial<Balance> = RefTimeToFee::polynomial().into();
|
|
let proof_poly: FeePolynomial<Balance> = ProofSizeToFee::polynomial().into();
|
|
|
|
// Take the maximum instead of the sum to charge by the more scarce resource.
|
|
time_poly.eval(weight.ref_time()).max(proof_poly.eval(weight.proof_size()))
|
|
}
|
|
}
|
|
|
|
/// Maps the reference time component of `Weight` to a fee.
|
|
pub struct RefTimeToFee;
|
|
impl WeightToFeePolynomial for RefTimeToFee {
|
|
type Balance = Balance;
|
|
fn polynomial() -> WeightToFeeCoefficients<Self::Balance> {
|
|
// In Kusama, extrinsic base weight (smallest non-zero weight) is mapped to 1/10 CENT:
|
|
// The standard system parachain configuration is 1/10 of that, as in 1/100 CENT.
|
|
let p = super::currency::CENTS;
|
|
let q = 100 * Balance::from(ExtrinsicBaseWeight::get().ref_time());
|
|
|
|
smallvec![WeightToFeeCoefficient {
|
|
degree: 1,
|
|
negative: false,
|
|
coeff_frac: Perbill::from_rational(p % q, q),
|
|
coeff_integer: p / q,
|
|
}]
|
|
}
|
|
}
|
|
|
|
/// Maps the proof size component of `Weight` to a fee.
|
|
pub struct ProofSizeToFee;
|
|
impl WeightToFeePolynomial for ProofSizeToFee {
|
|
type Balance = Balance;
|
|
fn polynomial() -> WeightToFeeCoefficients<Self::Balance> {
|
|
// Map 10kb proof to 1 CENT.
|
|
let p = super::currency::CENTS;
|
|
let q = 10_000;
|
|
|
|
smallvec![WeightToFeeCoefficient {
|
|
degree: 1,
|
|
negative: false,
|
|
coeff_frac: Perbill::from_rational(p % q, q),
|
|
coeff_integer: p / q,
|
|
}]
|
|
}
|
|
}
|
|
}
|