--- a/primitives/common/src/constants.rs +++ b/primitives/common/src/constants.rs @@ -26,7 +26,7 @@ #[cfg(not(feature = "lookahead"))] pub const MILLISECS_PER_BLOCK: u64 = 12000; #[cfg(feature = "lookahead")] -pub const MILLISECS_PER_BLOCK: u64 = 3000; +pub const MILLISECS_PER_BLOCK: u64 = 6000; pub const MILLISECS_PER_RELAY_BLOCK: u64 = 6000; pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; --- a/runtime/common/config/parachain.rs +++ b/runtime/common/config/parachain.rs @@ -43,6 +43,8 @@ #[cfg(feature = "lookahead")] type CheckAssociatedRelayNumber = cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases; + #[cfg(feature = "lookahead")] + type ConsensusHook = ConsensusHook; } impl parachain_info::Config for Runtime {} --- a/runtime/common/config/substrate.rs +++ b/runtime/common/config/substrate.rs @@ -17,7 +17,7 @@ use frame_support::{ dispatch::DispatchClass, ord_parameter_types, parameter_types, - traits::{ConstBool, ConstU32, Everything, NeverEnsureOrigin}, + traits::{ConstBool, ConstU32, ConstU64, Everything, NeverEnsureOrigin}, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}, ConstantMultiplier, @@ -134,15 +134,14 @@ type MaxKeyLen = MigrationMaxKeyLen; } -parameter_types! { - pub const MinimumPeriod: u64 = SLOT_DURATION / 2; -} - impl pallet_timestamp::Config for Runtime { /// A timestamp: milliseconds since the unix epoch. type Moment = u64; type OnTimestampSet = (); - type MinimumPeriod = MinimumPeriod; + #[cfg(not(feature = "lookahead"))] + type MinimumPeriod = ConstU64<{SLOT_DURATION / 2}>; + #[cfg(feature = "lookahead")] + type MinimumPeriod = ConstU64<0>; type WeightInfo = (); } @@ -247,6 +246,8 @@ type DisabledValidators = (); type MaxAuthorities = MaxAuthorities; type AllowMultipleBlocksPerSlot = ConstBool; + #[cfg(feature = "lookahead")] + type SlotDuration = ConstU64; } impl pallet_utility::Config for Runtime { --- a/runtime/common/mod.rs +++ b/runtime/common/mod.rs @@ -44,7 +44,7 @@ use up_common::types::{AccountId, BlockNumber}; use crate::{ - AllPalletsWithSystem, Aura, Balances, InherentDataExt, Runtime, RuntimeCall, Signature, + AllPalletsWithSystem, Aura, Balances, Runtime, RuntimeCall, Signature, Treasury, }; @@ -146,13 +146,17 @@ } } +#[cfg(not(feature = "lookahead"))] pub(crate) struct CheckInherents; +#[cfg(not(feature = "lookahead"))] impl cumulus_pallet_parachain_system::CheckInherents for CheckInherents { fn check_inherents( block: &Block, relay_state_proof: &cumulus_pallet_parachain_system::RelayChainStateProof, ) -> sp_inherents::CheckInherentsResult { + use crate::InherentDataExt; + let relay_chain_slot = relay_state_proof .read_slot() .expect("Could not read the relay chain slot from the proof"); --- a/runtime/common/runtime_apis.rs +++ b/runtime/common/runtime_apis.rs @@ -485,7 +485,14 @@ impl sp_consensus_aura::AuraApi for Runtime { fn slot_duration() -> sp_consensus_aura::SlotDuration { - sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + #[cfg(not(feature = "lookahead"))] + { + sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + } + #[cfg(feature = "lookahead")] + { + sp_consensus_aura::SlotDuration::from_millis(up_common::constants::SLOT_DURATION) + } } fn authorities() -> Vec { --- a/runtime/opal/src/lib.rs +++ b/runtime/opal/src/lib.rs @@ -67,8 +67,15 @@ impl_common_runtime_apis!(); +// CheckInherents is included in consensus hook +#[cfg(not(feature = "lookahead"))] cumulus_pallet_parachain_system::register_validate_block!( Runtime = Runtime, BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::, CheckInherents = CheckInherents, ); +#[cfg(feature = "lookahead")] +cumulus_pallet_parachain_system::register_validate_block!( + Runtime = Runtime, + BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::, +);