runtime_eden/
constants.rsuse frame_support::{
dispatch::DispatchClass,
parameter_types,
weights::constants::{BlockExecutionWeight, ExtrinsicBaseWeight},
};
use frame_system::limits::BlockWeights;
use pallet_contracts::DebugInfo;
pub use parachains_common::{
AVERAGE_ON_INITIALIZE_RATIO, DAYS, HOURS, MAXIMUM_BLOCK_WEIGHT, MILLISECS_PER_BLOCK, MINUTES,
NORMAL_DISPATCH_RATIO, SLOT_DURATION,
};
use primitives::{Balance, BlockNumber};
pub use sp_runtime::{Perbill, Perquintill};
pub const NODL: Balance = 100_000_000_000;
pub const MILLI_NODL: Balance = NODL / 1_000;
pub const MICRO_NODL: Balance = MILLI_NODL / 1_000;
pub const NANO_NODL: Balance = MICRO_NODL / 1_000;
pub const EXISTENTIAL_DEPOSIT: Balance = 100 * NANO_NODL;
pub const POLKADOT_EXISTENTIAL_DEPOSIT: Balance = 10_000_000_000;
pub const POLKADOT_CENT: Balance = 100_000_000;
pub const fn deposit(items: u32, bytes: u32) -> Balance {
items as Balance * 1_500 * MICRO_NODL + (bytes as Balance) * 600 * MICRO_NODL
}
pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 4 * HOURS;
pub const EPOCH_DURATION_IN_SLOTS: u64 = {
const SLOT_FILL_RATE: f64 = MILLISECS_PER_BLOCK as f64 / SLOT_DURATION as f64;
(EPOCH_DURATION_IN_BLOCKS as f64 * SLOT_FILL_RATE) as u64
};
pub const MINUTES_RELAY_CHAIN: BlockNumber = 60_000 / (RELAY_CHAIN_SLOT_DURATION_MILLIS as BlockNumber);
pub const HOURS_RELAY_CHAIN: BlockNumber = MINUTES_RELAY_CHAIN * 60;
pub const DAYS_RELAY_CHAIN: BlockNumber = HOURS_RELAY_CHAIN * 24;
pub const UNINCLUDED_SEGMENT_CAPACITY: u32 = 1;
pub const BLOCK_PROCESSING_VELOCITY: u32 = 1;
pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
pub const TARGET_BLOCK_FULLNESS: Perquintill = Perquintill::from_percent(25);
pub const BABE_GENESIS_EPOCH_CONFIG: sp_consensus_babe::BabeEpochConfiguration =
sp_consensus_babe::BabeEpochConfiguration {
c: PRIMARY_PROBABILITY,
allowed_slots: sp_consensus_babe::AllowedSlots::PrimaryAndSecondaryPlainSlots,
};
parameter_types! {
pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder()
.base_block(BlockExecutionWeight::get())
.for_class(DispatchClass::all(), |weights| {
weights.base_extrinsic = ExtrinsicBaseWeight::get();
})
.for_class(DispatchClass::Normal, |weights| {
weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT);
})
.for_class(DispatchClass::Operational, |weights| {
weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT);
weights.reserved = Some(
MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT
);
})
.avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)
.build_or_panic();
}
pub const CONTRACTS_DEBUG_OUTPUT: DebugInfo = DebugInfo::UnsafeDebug;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn constants_did_not_change() {
const DOLLARS: Balance = NODL / 100; const CENTS: Balance = DOLLARS / 100; const MILLICENTS: Balance = CENTS / 1_000; assert_eq!(10 * MILLI_NODL, DOLLARS);
assert_eq!(100 * MICRO_NODL, CENTS);
assert_eq!(100 * NANO_NODL, MILLICENTS);
assert_eq!(EXISTENTIAL_DEPOSIT, 10_000);
assert_eq!(NANO_NODL, 100);
assert_eq!(MICRO_NODL, 100_000);
assert_eq!(NODL, 1e11 as u128);
}
#[test]
fn test_deposit() {
assert_eq!(deposit(0, 0), 0 as Balance);
assert_eq!(deposit(1000, 0), 150000000000 as Balance);
assert_eq!(deposit(0, 1000), 60000000000 as Balance);
assert_eq!(deposit(0xFFFF_FFFF, 0xFFFF_FFFF), 901943131950000000 as Balance);
}
#[test]
fn polkadot_constants() {
assert_eq!(100 * POLKADOT_CENT, POLKADOT_EXISTENTIAL_DEPOSIT);
}
}