mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 22:11:02 +00:00
Enable async backing on all testnet system chains (#2949)
Built on top of https://github.com/paritytech/polkadot-sdk/pull/2826/ which was a trial run. Guide: https://github.com/w3f/polkadot-wiki/blob/master/docs/maintain/maintain-guides-async-backing.md --------- Signed-off-by: georgepisaltu <george.pisaltu@parity.io> Co-authored-by: Branislav Kontur <bkontur@gmail.com> Co-authored-by: Dónal Murray <donal.murray@parity.io> Co-authored-by: Dmitry Sinyavin <dmitry.sinyavin@parity.io> Co-authored-by: s0me0ne-unkn0wn <48632512+s0me0ne-unkn0wn@users.noreply.github.com> Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com> Co-authored-by: Bastian Köcher <info@kchr.de> Co-authored-by: georgepisaltu <52418509+georgepisaltu@users.noreply.github.com>
This commit is contained in:
Generated
+10
@@ -978,6 +978,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -1993,6 +1994,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -2161,6 +2163,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -2718,6 +2721,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -2972,6 +2976,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -3065,6 +3070,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -3129,6 +3135,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
@@ -11660,6 +11667,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"enumflags2",
|
"enumflags2",
|
||||||
@@ -11758,6 +11766,7 @@ dependencies = [
|
|||||||
"cumulus-pallet-session-benchmarking",
|
"cumulus-pallet-session-benchmarking",
|
||||||
"cumulus-pallet-xcm",
|
"cumulus-pallet-xcm",
|
||||||
"cumulus-pallet-xcmp-queue",
|
"cumulus-pallet-xcmp-queue",
|
||||||
|
"cumulus-primitives-aura",
|
||||||
"cumulus-primitives-core",
|
"cumulus-primitives-core",
|
||||||
"cumulus-primitives-utility",
|
"cumulus-primitives-utility",
|
||||||
"enumflags2",
|
"enumflags2",
|
||||||
@@ -19998,6 +20007,7 @@ dependencies = [
|
|||||||
name = "testnet-parachains-constants"
|
name = "testnet-parachains-constants"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"cumulus-primitives-core",
|
||||||
"frame-support",
|
"frame-support",
|
||||||
"polkadot-core-primitives",
|
"polkadot-core-primitives",
|
||||||
"rococo-runtime-constants",
|
"rococo-runtime-constants",
|
||||||
|
|||||||
@@ -57,6 +57,12 @@ const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(constants::WEIGHT_REF_TI
|
|||||||
.saturating_div(2)
|
.saturating_div(2)
|
||||||
.set_proof_size(polkadot_primitives::MAX_POV_SIZE as u64);
|
.set_proof_size(polkadot_primitives::MAX_POV_SIZE as u64);
|
||||||
|
|
||||||
|
/// We allow for 2 seconds of compute with a 6 second average block.
|
||||||
|
const MAXIMUM_BLOCK_WEIGHT_FOR_ASYNC_BACKING: Weight = Weight::from_parts(
|
||||||
|
constants::WEIGHT_REF_TIME_PER_SECOND.saturating_mul(2),
|
||||||
|
polkadot_primitives::MAX_POV_SIZE as u64,
|
||||||
|
);
|
||||||
|
|
||||||
/// All cumulus bridge hubs assume that about 5 percent of the block weight is consumed by
|
/// All cumulus bridge hubs assume that about 5 percent of the block weight is consumed by
|
||||||
/// `on_initialize` handlers. This is used to limit the maximal weight of a single extrinsic.
|
/// `on_initialize` handlers. This is used to limit the maximal weight of a single extrinsic.
|
||||||
///
|
///
|
||||||
@@ -96,6 +102,26 @@ parameter_types! {
|
|||||||
})
|
})
|
||||||
.avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)
|
.avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)
|
||||||
.build_or_panic();
|
.build_or_panic();
|
||||||
|
|
||||||
|
/// Weight limit of the Cumulus-based bridge hub blocks when async backing is enabled.
|
||||||
|
pub BlockWeightsForAsyncBacking: limits::BlockWeights = limits::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_ASYNC_BACKING);
|
||||||
|
})
|
||||||
|
.for_class(DispatchClass::Operational, |weights| {
|
||||||
|
weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT_FOR_ASYNC_BACKING);
|
||||||
|
// Operational transactions have an extra reserved space, so that they
|
||||||
|
// are included even if block reached `MAXIMUM_BLOCK_WEIGHT_FOR_ASYNC_BACKING`.
|
||||||
|
weights.reserved = Some(
|
||||||
|
MAXIMUM_BLOCK_WEIGHT_FOR_ASYNC_BACKING - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT_FOR_ASYNC_BACKING,
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)
|
||||||
|
.build_or_panic();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Public key of the chain account that may be used to verify signatures.
|
/// Public key of the chain account that may be used to verify signatures.
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ impl Chain for BridgeHubRococo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn max_extrinsic_weight() -> Weight {
|
fn max_extrinsic_weight() -> Weight {
|
||||||
BlockWeights::get()
|
BlockWeightsForAsyncBacking::get()
|
||||||
.get(DispatchClass::Normal)
|
.get(DispatchClass::Normal)
|
||||||
.max_extrinsic
|
.max_extrinsic
|
||||||
.unwrap_or(Weight::MAX)
|
.unwrap_or(Weight::MAX)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ impl Chain for BridgeHubWestend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn max_extrinsic_weight() -> Weight {
|
fn max_extrinsic_weight() -> Weight {
|
||||||
BlockWeights::get()
|
BlockWeightsForAsyncBacking::get()
|
||||||
.get(DispatchClass::Normal)
|
.get(DispatchClass::Normal)
|
||||||
.max_extrinsic
|
.max_extrinsic
|
||||||
.unwrap_or(Weight::MAX)
|
.unwrap_or(Weight::MAX)
|
||||||
|
|||||||
@@ -394,7 +394,7 @@ mod benchmarks {
|
|||||||
register_validators::<T>(c);
|
register_validators::<T>(c);
|
||||||
register_candidates::<T>(c);
|
register_candidates::<T>(c);
|
||||||
|
|
||||||
let new_block: BlockNumberFor<T> = 1800u32.into();
|
let new_block: BlockNumberFor<T> = T::KickThreshold::get();
|
||||||
let zero_block: BlockNumberFor<T> = 0u32.into();
|
let zero_block: BlockNumberFor<T> = 0u32.into();
|
||||||
let candidates: Vec<T::AccountId> = <CandidateList<T>>::get()
|
let candidates: Vec<T::AccountId> = <CandidateList<T>>::get()
|
||||||
.iter()
|
.iter()
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ use frame_support::{
|
|||||||
ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, Equals, InstanceFilter,
|
ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, Equals, InstanceFilter,
|
||||||
TransformOrigin,
|
TransformOrigin,
|
||||||
},
|
},
|
||||||
weights::{constants::WEIGHT_REF_TIME_PER_SECOND, ConstantMultiplier, Weight},
|
weights::{ConstantMultiplier, Weight},
|
||||||
BoundedVec, PalletId,
|
BoundedVec, PalletId,
|
||||||
};
|
};
|
||||||
use frame_system::{
|
use frame_system::{
|
||||||
@@ -75,11 +75,10 @@ use parachains_common::{
|
|||||||
impls::DealWithFees,
|
impls::DealWithFees,
|
||||||
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
||||||
AccountId, AssetIdForTrustBackedAssets, AuraId, Balance, BlockNumber, CollectionId, Hash,
|
AccountId, AssetIdForTrustBackedAssets, AuraId, Balance, BlockNumber, CollectionId, Hash,
|
||||||
Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO, DAYS, HOURS,
|
Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
|
||||||
NORMAL_DISPATCH_RATIO,
|
|
||||||
};
|
};
|
||||||
use sp_runtime::{Perbill, RuntimeDebug};
|
use sp_runtime::{Perbill, RuntimeDebug};
|
||||||
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee, time::*};
|
||||||
use xcm_config::{
|
use xcm_config::{
|
||||||
ForeignAssetsConvertedConcreteId, ForeignCreatorsSovereignAccountOf, GovernanceLocation,
|
ForeignAssetsConvertedConcreteId, ForeignCreatorsSovereignAccountOf, GovernanceLocation,
|
||||||
PoolAssetsConvertedConcreteId, TokenLocation, TokenLocationV3,
|
PoolAssetsConvertedConcreteId, TokenLocation, TokenLocationV3,
|
||||||
@@ -140,28 +139,6 @@ pub fn native_version() -> NativeVersion {
|
|||||||
NativeVersion { runtime_version: VERSION, can_author_with: Default::default() }
|
NativeVersion { runtime_version: VERSION, can_author_with: Default::default() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// We allow for 2 seconds of compute with a 6 second average block.
|
|
||||||
const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(
|
|
||||||
WEIGHT_REF_TIME_PER_SECOND.saturating_mul(2),
|
|
||||||
cumulus_primitives_core::relay_chain::MAX_POV_SIZE as u64,
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included
|
|
||||||
/// into the relay chain.
|
|
||||||
const UNINCLUDED_SEGMENT_CAPACITY: u32 = 3;
|
|
||||||
/// How many parachain blocks are processed by the relay chain per parent. Limits the
|
|
||||||
/// number of blocks authored per slot.
|
|
||||||
const BLOCK_PROCESSING_VELOCITY: u32 = 1;
|
|
||||||
|
|
||||||
/// This determines the average expected block time that we are targeting.
|
|
||||||
/// Blocks will be produced at a minimum duration defined by `SLOT_DURATION`.
|
|
||||||
/// `SLOT_DURATION` is picked up by `pallet_timestamp` which is in turn picked
|
|
||||||
/// up by `pallet_aura` to implement `fn slot_duration()`.
|
|
||||||
///
|
|
||||||
/// Change this to adjust the block time.
|
|
||||||
pub const MILLISECS_PER_BLOCK: u64 = 6000;
|
|
||||||
pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;
|
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub const Version: RuntimeVersion = VERSION;
|
pub const Version: RuntimeVersion = VERSION;
|
||||||
pub RuntimeBlockLength: BlockLength =
|
pub RuntimeBlockLength: BlockLength =
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ use asset_hub_rococo_runtime::{
|
|||||||
AllPalletsWithoutSystem, AssetConversion, AssetDeposit, Assets, Balances, CollatorSelection,
|
AllPalletsWithoutSystem, AssetConversion, AssetDeposit, Assets, Balances, CollatorSelection,
|
||||||
ExistentialDeposit, ForeignAssets, ForeignAssetsInstance, MetadataDepositBase,
|
ExistentialDeposit, ForeignAssets, ForeignAssetsInstance, MetadataDepositBase,
|
||||||
MetadataDepositPerByte, ParachainSystem, Runtime, RuntimeCall, RuntimeEvent, SessionKeys,
|
MetadataDepositPerByte, ParachainSystem, Runtime, RuntimeCall, RuntimeEvent, SessionKeys,
|
||||||
ToWestendXcmRouterInstance, TrustBackedAssetsInstance, XcmpQueue, SLOT_DURATION,
|
ToWestendXcmRouterInstance, TrustBackedAssetsInstance, XcmpQueue,
|
||||||
};
|
};
|
||||||
use asset_test_utils::{
|
use asset_test_utils::{
|
||||||
test_cases_over_bridge::TestBridgingConfig, CollatorSessionKey, CollatorSessionKeys,
|
test_cases_over_bridge::TestBridgingConfig, CollatorSessionKey, CollatorSessionKeys,
|
||||||
@@ -50,9 +50,7 @@ use parachains_common::{AccountId, AssetIdForTrustBackedAssets, AuraId, Balance}
|
|||||||
use sp_consensus_aura::SlotDuration;
|
use sp_consensus_aura::SlotDuration;
|
||||||
use sp_runtime::traits::MaybeEquivalence;
|
use sp_runtime::traits::MaybeEquivalence;
|
||||||
use std::convert::Into;
|
use std::convert::Into;
|
||||||
use testnet_parachains_constants::rococo::{
|
use testnet_parachains_constants::rococo::{consensus::*, currency::UNITS, fee::WeightToFee};
|
||||||
consensus::RELAY_CHAIN_SLOT_DURATION_MILLIS, currency::UNITS, fee::WeightToFee,
|
|
||||||
};
|
|
||||||
use xcm::latest::prelude::{Assets as XcmAssets, *};
|
use xcm::latest::prelude::{Assets as XcmAssets, *};
|
||||||
use xcm_builder::V4V3LocationConverter;
|
use xcm_builder::V4V3LocationConverter;
|
||||||
use xcm_executor::traits::{JustTry, WeightTrader};
|
use xcm_executor::traits::{JustTry, WeightTrader};
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false, features = ["bridging"] }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false, features = ["bridging"] }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -175,6 +176,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking?/std",
|
"frame-benchmarking?/std",
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ use assets_common::{
|
|||||||
AssetIdForTrustBackedAssetsConvert,
|
AssetIdForTrustBackedAssetsConvert,
|
||||||
};
|
};
|
||||||
use codec::{Decode, Encode, MaxEncodedLen};
|
use codec::{Decode, Encode, MaxEncodedLen};
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
construct_runtime, derive_impl,
|
construct_runtime, derive_impl,
|
||||||
@@ -58,7 +58,7 @@ use pallet_xcm::EnsureXcm;
|
|||||||
use parachains_common::{
|
use parachains_common::{
|
||||||
impls::DealWithFees, message_queue::*, AccountId, AssetIdForTrustBackedAssets, AuraId, Balance,
|
impls::DealWithFees, message_queue::*, AccountId, AssetIdForTrustBackedAssets, AuraId, Balance,
|
||||||
BlockNumber, CollectionId, Hash, Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
|
BlockNumber, CollectionId, Hash, Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
|
||||||
DAYS, HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
NORMAL_DISPATCH_RATIO,
|
||||||
};
|
};
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
|
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
|
||||||
@@ -72,7 +72,7 @@ use sp_std::prelude::*;
|
|||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use sp_version::NativeVersion;
|
use sp_version::NativeVersion;
|
||||||
use sp_version::RuntimeVersion;
|
use sp_version::RuntimeVersion;
|
||||||
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee, time::*};
|
||||||
use xcm_config::{
|
use xcm_config::{
|
||||||
ForeignAssetsConvertedConcreteId, PoolAssetsConvertedConcreteId,
|
ForeignAssetsConvertedConcreteId, PoolAssetsConvertedConcreteId,
|
||||||
TrustBackedAssetsConvertedConcreteId, TrustBackedAssetsPalletLocationV3, WestendLocation,
|
TrustBackedAssetsConvertedConcreteId, TrustBackedAssetsPalletLocationV3, WestendLocation,
|
||||||
@@ -171,6 +171,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -604,15 +607,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type OutboundXcmpMessageSource = XcmpQueue;
|
type OutboundXcmpMessageSource = XcmpQueue;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
impl parachain_info::Config for Runtime {}
|
impl parachain_info::Config for Runtime {}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -697,9 +702,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -980,7 +985,7 @@ impl frame_support::traits::OnRuntimeUpgrade for DeleteUndecodableStorage {
|
|||||||
},
|
},
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to destroy undecodable NFT item: {:?}", e);
|
log::error!("Failed to destroy undecodable NFT item: {:?}", e);
|
||||||
return <Runtime as frame_system::Config>::DbWeight::get().reads_writes(0, writes)
|
return <Runtime as frame_system::Config>::DbWeight::get().reads_writes(0, writes);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -992,7 +997,7 @@ impl frame_support::traits::OnRuntimeUpgrade for DeleteUndecodableStorage {
|
|||||||
},
|
},
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to destroy undecodable NFT item: {:?}", e);
|
log::error!("Failed to destroy undecodable NFT item: {:?}", e);
|
||||||
return <Runtime as frame_system::Config>::DbWeight::get().reads_writes(0, writes)
|
return <Runtime as frame_system::Config>::DbWeight::get().reads_writes(0, writes);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1090,7 +1095,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -1098,6 +1103,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -47,13 +47,11 @@ use frame_support::{
|
|||||||
},
|
},
|
||||||
weights::{Weight, WeightToFee as WeightToFeeT},
|
weights::{Weight, WeightToFee as WeightToFeeT},
|
||||||
};
|
};
|
||||||
use parachains_common::{AccountId, AssetIdForTrustBackedAssets, AuraId, Balance, SLOT_DURATION};
|
use parachains_common::{AccountId, AssetIdForTrustBackedAssets, AuraId, Balance};
|
||||||
use sp_consensus_aura::SlotDuration;
|
use sp_consensus_aura::SlotDuration;
|
||||||
use sp_runtime::traits::MaybeEquivalence;
|
use sp_runtime::traits::MaybeEquivalence;
|
||||||
use std::convert::Into;
|
use std::convert::Into;
|
||||||
use testnet_parachains_constants::westend::{
|
use testnet_parachains_constants::westend::{consensus::*, currency::UNITS, fee::WeightToFee};
|
||||||
consensus::RELAY_CHAIN_SLOT_DURATION_MILLIS, currency::UNITS, fee::WeightToFee,
|
|
||||||
};
|
|
||||||
use xcm::latest::prelude::{Assets as XcmAssets, *};
|
use xcm::latest::prelude::{Assets as XcmAssets, *};
|
||||||
use xcm_builder::V4V3LocationConverter;
|
use xcm_builder::V4V3LocationConverter;
|
||||||
use xcm_executor::traits::{JustTry, WeightTrader};
|
use xcm_executor::traits::{JustTry, WeightTrader};
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = fals
|
|||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false, features = [
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false, features = [
|
||||||
"bridging",
|
"bridging",
|
||||||
] }
|
] }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -153,6 +154,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking/std",
|
"frame-benchmarking/std",
|
||||||
|
|||||||
+1
-1
@@ -299,7 +299,7 @@ mod tests {
|
|||||||
>(AssertCompleteBridgeConstants {
|
>(AssertCompleteBridgeConstants {
|
||||||
this_chain_constants: AssertChainConstants {
|
this_chain_constants: AssertChainConstants {
|
||||||
block_length: bp_bridge_hub_rococo::BlockLength::get(),
|
block_length: bp_bridge_hub_rococo::BlockLength::get(),
|
||||||
block_weights: bp_bridge_hub_rococo::BlockWeights::get(),
|
block_weights: bp_bridge_hub_rococo::BlockWeightsForAsyncBacking::get(),
|
||||||
},
|
},
|
||||||
messages_pallet_constants: AssertBridgeMessagesPalletConstants {
|
messages_pallet_constants: AssertBridgeMessagesPalletConstants {
|
||||||
max_unrewarded_relayers_in_bridged_confirmation_tx:
|
max_unrewarded_relayers_in_bridged_confirmation_tx:
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ pub mod bridge_to_westend_config;
|
|||||||
mod weights;
|
mod weights;
|
||||||
pub mod xcm_config;
|
pub mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use snowbridge_beacon_primitives::{Fork, ForkVersions};
|
use snowbridge_beacon_primitives::{Fork, ForkVersions};
|
||||||
use snowbridge_core::{
|
use snowbridge_core::{
|
||||||
gwei, meth, outbound::Message, AgentId, AllowSiblingsOnly, PricingParameters, Rewards,
|
gwei, meth, outbound::Message, AgentId, AllowSiblingsOnly, PricingParameters, Rewards,
|
||||||
@@ -69,6 +69,9 @@ use frame_system::{
|
|||||||
limits::{BlockLength, BlockWeights},
|
limits::{BlockLength, BlockWeights},
|
||||||
EnsureRoot,
|
EnsureRoot,
|
||||||
};
|
};
|
||||||
|
use testnet_parachains_constants::rococo::{
|
||||||
|
consensus::*, currency::*, fee::WeightToFee, snowbridge::INBOUND_QUEUE_PALLET_INDEX, time::*,
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(feature = "runtime-benchmarks")]
|
#[cfg(feature = "runtime-benchmarks")]
|
||||||
use bp_runtime::Chain;
|
use bp_runtime::Chain;
|
||||||
@@ -94,10 +97,7 @@ use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
|||||||
|
|
||||||
use parachains_common::{
|
use parachains_common::{
|
||||||
impls::DealWithFees, AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
impls::DealWithFees, AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
||||||
AVERAGE_ON_INITIALIZE_RATIO, HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
|
||||||
};
|
|
||||||
use testnet_parachains_constants::rococo::{
|
|
||||||
consensus::*, currency::*, fee::WeightToFee, snowbridge::INBOUND_QUEUE_PALLET_INDEX,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use polkadot_runtime_common::prod_or_fast;
|
use polkadot_runtime_common::prod_or_fast;
|
||||||
@@ -279,6 +279,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -340,15 +343,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type ReservedDmpWeight = ReservedDmpWeight;
|
type ReservedDmpWeight = ReservedDmpWeight;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
impl parachain_info::Config for Runtime {}
|
impl parachain_info::Config for Runtime {}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -437,9 +442,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -783,7 +788,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -791,6 +796,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ use bridge_hub_rococo_runtime::{
|
|||||||
use bridge_hub_test_utils::SlotDurations;
|
use bridge_hub_test_utils::SlotDurations;
|
||||||
use codec::{Decode, Encode};
|
use codec::{Decode, Encode};
|
||||||
use frame_support::{dispatch::GetDispatchInfo, parameter_types, traits::ConstU8};
|
use frame_support::{dispatch::GetDispatchInfo, parameter_types, traits::ConstU8};
|
||||||
use parachains_common::{AccountId, AuraId, Balance, SLOT_DURATION};
|
use parachains_common::{AccountId, AuraId, Balance};
|
||||||
use snowbridge_core::ChannelId;
|
use snowbridge_core::ChannelId;
|
||||||
use sp_consensus_aura::SlotDuration;
|
use sp_consensus_aura::SlotDuration;
|
||||||
use sp_core::H160;
|
use sp_core::H160;
|
||||||
@@ -36,9 +36,7 @@ use sp_runtime::{
|
|||||||
generic::{Era, SignedPayload},
|
generic::{Era, SignedPayload},
|
||||||
AccountId32, Perbill,
|
AccountId32, Perbill,
|
||||||
};
|
};
|
||||||
use testnet_parachains_constants::rococo::{
|
use testnet_parachains_constants::rococo::{consensus::*, fee::WeightToFee};
|
||||||
consensus::RELAY_CHAIN_SLOT_DURATION_MILLIS, fee::WeightToFee,
|
|
||||||
};
|
|
||||||
use xcm::latest::prelude::*;
|
use xcm::latest::prelude::*;
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false, features = ["bridging"] }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false, features = ["bridging"] }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -125,6 +126,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking/std",
|
"frame-benchmarking/std",
|
||||||
|
|||||||
+1
-1
@@ -334,7 +334,7 @@ mod tests {
|
|||||||
>(AssertCompleteBridgeConstants {
|
>(AssertCompleteBridgeConstants {
|
||||||
this_chain_constants: AssertChainConstants {
|
this_chain_constants: AssertChainConstants {
|
||||||
block_length: bp_bridge_hub_westend::BlockLength::get(),
|
block_length: bp_bridge_hub_westend::BlockLength::get(),
|
||||||
block_weights: bp_bridge_hub_westend::BlockWeights::get(),
|
block_weights: bp_bridge_hub_westend::BlockWeightsForAsyncBacking::get(),
|
||||||
},
|
},
|
||||||
messages_pallet_constants: AssertBridgeMessagesPalletConstants {
|
messages_pallet_constants: AssertBridgeMessagesPalletConstants {
|
||||||
max_unrewarded_relayers_in_bridged_confirmation_tx:
|
max_unrewarded_relayers_in_bridged_confirmation_tx:
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ pub mod bridge_to_rococo_config;
|
|||||||
mod weights;
|
mod weights;
|
||||||
pub mod xcm_config;
|
pub mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::ParaId;
|
use cumulus_primitives_core::ParaId;
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
|
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
|
||||||
@@ -83,9 +83,9 @@ use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
|||||||
|
|
||||||
use parachains_common::{
|
use parachains_common::{
|
||||||
impls::DealWithFees, AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
impls::DealWithFees, AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
||||||
AVERAGE_ON_INITIALIZE_RATIO, HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
|
||||||
};
|
};
|
||||||
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee, time::*};
|
||||||
|
|
||||||
/// The address format for describing accounts.
|
/// The address format for describing accounts.
|
||||||
pub type Address = MultiAddress<AccountId, ()>;
|
pub type Address = MultiAddress<AccountId, ()>;
|
||||||
@@ -251,6 +251,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -312,15 +315,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type ReservedDmpWeight = ReservedDmpWeight;
|
type ReservedDmpWeight = ReservedDmpWeight;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
impl parachain_info::Config for Runtime {}
|
impl parachain_info::Config for Runtime {}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -401,9 +406,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -534,7 +539,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -542,6 +547,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -33,16 +33,14 @@ use bridge_to_rococo_config::{
|
|||||||
};
|
};
|
||||||
use codec::{Decode, Encode};
|
use codec::{Decode, Encode};
|
||||||
use frame_support::{dispatch::GetDispatchInfo, parameter_types, traits::ConstU8};
|
use frame_support::{dispatch::GetDispatchInfo, parameter_types, traits::ConstU8};
|
||||||
use parachains_common::{AccountId, AuraId, Balance, SLOT_DURATION};
|
use parachains_common::{AccountId, AuraId, Balance};
|
||||||
use sp_consensus_aura::SlotDuration;
|
use sp_consensus_aura::SlotDuration;
|
||||||
use sp_keyring::AccountKeyring::Alice;
|
use sp_keyring::AccountKeyring::Alice;
|
||||||
use sp_runtime::{
|
use sp_runtime::{
|
||||||
generic::{Era, SignedPayload},
|
generic::{Era, SignedPayload},
|
||||||
AccountId32, Perbill,
|
AccountId32, Perbill,
|
||||||
};
|
};
|
||||||
use testnet_parachains_constants::westend::{
|
use testnet_parachains_constants::westend::{consensus::*, fee::WeightToFee};
|
||||||
consensus::RELAY_CHAIN_SLOT_DURATION_MILLIS, fee::WeightToFee,
|
|
||||||
};
|
|
||||||
use xcm::latest::prelude::*;
|
use xcm::latest::prelude::*;
|
||||||
|
|
||||||
// Para id of sibling chain used in tests.
|
// Para id of sibling chain used in tests.
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -169,6 +170,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking?/std",
|
"frame-benchmarking?/std",
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ pub mod xcm_config;
|
|||||||
pub mod fellowship;
|
pub mod fellowship;
|
||||||
pub use ambassador::pallet_ambassador_origins;
|
pub use ambassador::pallet_ambassador_origins;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use fellowship::{pallet_fellowship_origins, Fellows};
|
use fellowship::{pallet_fellowship_origins, Fellows};
|
||||||
use impls::{AllianceProposalProvider, EqualOrGreatestRootCmp};
|
use impls::{AllianceProposalProvider, EqualOrGreatestRootCmp};
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
@@ -84,12 +84,11 @@ use parachains_common::{
|
|||||||
impls::{DealWithFees, ToParentTreasury},
|
impls::{DealWithFees, ToParentTreasury},
|
||||||
message_queue::*,
|
message_queue::*,
|
||||||
AccountId, AuraId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
AccountId, AuraId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
||||||
AVERAGE_ON_INITIALIZE_RATIO, DAYS, HOURS, MAXIMUM_BLOCK_WEIGHT, MINUTES, NORMAL_DISPATCH_RATIO,
|
AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
|
||||||
SLOT_DURATION,
|
|
||||||
};
|
};
|
||||||
use sp_runtime::RuntimeDebug;
|
use sp_runtime::RuntimeDebug;
|
||||||
use testnet_parachains_constants::westend::{
|
use testnet_parachains_constants::westend::{
|
||||||
account::*, consensus::*, currency::*, fee::WeightToFee,
|
account::*, consensus::*, currency::*, fee::WeightToFee, time::*,
|
||||||
};
|
};
|
||||||
use xcm_config::{
|
use xcm_config::{
|
||||||
GovernanceLocation, LocationToAccountId, TreasurerBodyId, XcmOriginToTransactDispatchOrigin,
|
GovernanceLocation, LocationToAccountId, TreasurerBodyId, XcmOriginToTransactDispatchOrigin,
|
||||||
@@ -185,6 +184,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -387,15 +389,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type OutboundXcmpMessageSource = XcmpQueue;
|
type OutboundXcmpMessageSource = XcmpQueue;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
impl parachain_info::Config for Runtime {}
|
impl parachain_info::Config for Runtime {}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -478,9 +482,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -771,7 +775,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -779,6 +783,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -25,9 +25,13 @@ rococo-runtime-constants = { path = "../../../../polkadot/runtime/rococo/constan
|
|||||||
westend-runtime-constants = { path = "../../../../polkadot/runtime/westend/constants", default-features = false, optional = true }
|
westend-runtime-constants = { path = "../../../../polkadot/runtime/westend/constants", default-features = false, optional = true }
|
||||||
xcm = { package = "staging-xcm", path = "../../../../polkadot/xcm", default-features = false }
|
xcm = { package = "staging-xcm", path = "../../../../polkadot/xcm", default-features = false }
|
||||||
|
|
||||||
|
# Cumulus
|
||||||
|
cumulus-primitives-core = { path = "../../../primitives/core", default-features = false }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
std = [
|
std = [
|
||||||
|
"cumulus-primitives-core/std",
|
||||||
"frame-support/std",
|
"frame-support/std",
|
||||||
"polkadot-core-primitives/std",
|
"polkadot-core-primitives/std",
|
||||||
"rococo-runtime-constants?/std",
|
"rococo-runtime-constants?/std",
|
||||||
|
|||||||
@@ -108,14 +108,42 @@ pub mod fee {
|
|||||||
|
|
||||||
/// Consensus-related.
|
/// Consensus-related.
|
||||||
pub mod consensus {
|
pub mod consensus {
|
||||||
|
use frame_support::weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight};
|
||||||
|
|
||||||
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included
|
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included
|
||||||
/// into the relay chain.
|
/// into the relay chain.
|
||||||
pub const UNINCLUDED_SEGMENT_CAPACITY: u32 = 1;
|
pub const UNINCLUDED_SEGMENT_CAPACITY: u32 = 3;
|
||||||
/// How many parachain blocks are processed by the relay chain per parent. Limits the
|
/// How many parachain blocks are processed by the relay chain per parent. Limits the
|
||||||
/// number of blocks authored per slot.
|
/// number of blocks authored per slot.
|
||||||
pub const BLOCK_PROCESSING_VELOCITY: u32 = 1;
|
pub const BLOCK_PROCESSING_VELOCITY: u32 = 1;
|
||||||
/// Relay chain slot duration, in milliseconds.
|
/// Relay chain slot duration, in milliseconds.
|
||||||
pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
|
pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
|
||||||
|
|
||||||
|
/// We allow for 2 seconds of compute with a 6 second average block.
|
||||||
|
pub const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(
|
||||||
|
WEIGHT_REF_TIME_PER_SECOND.saturating_mul(2),
|
||||||
|
cumulus_primitives_core::relay_chain::MAX_POV_SIZE as u64,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// This determines the average expected block time that we are targeting.
|
||||||
|
/// Blocks will be produced at a minimum duration defined by `SLOT_DURATION`.
|
||||||
|
/// `SLOT_DURATION` is picked up by `pallet_timestamp` which is in turn picked
|
||||||
|
/// up by `pallet_aura` to implement `fn slot_duration()`.
|
||||||
|
///
|
||||||
|
/// Change this to adjust the block time.
|
||||||
|
pub const MILLISECS_PER_BLOCK: u64 = 6000;
|
||||||
|
pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Time-related
|
||||||
|
pub mod time {
|
||||||
|
use polkadot_core_primitives::BlockNumber;
|
||||||
|
|
||||||
|
// Time is measured by number of blocks.
|
||||||
|
pub const MINUTES: BlockNumber =
|
||||||
|
60_000 / (super::consensus::MILLISECS_PER_BLOCK as BlockNumber);
|
||||||
|
pub const HOURS: BlockNumber = MINUTES * 60;
|
||||||
|
pub const DAYS: BlockNumber = HOURS * 24;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod snowbridge {
|
pub mod snowbridge {
|
||||||
|
|||||||
@@ -131,12 +131,40 @@ pub mod fee {
|
|||||||
|
|
||||||
/// Consensus-related.
|
/// Consensus-related.
|
||||||
pub mod consensus {
|
pub mod consensus {
|
||||||
|
use frame_support::weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight};
|
||||||
|
|
||||||
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included into the
|
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included into the
|
||||||
/// relay chain.
|
/// relay chain.
|
||||||
pub const UNINCLUDED_SEGMENT_CAPACITY: u32 = 1;
|
pub const UNINCLUDED_SEGMENT_CAPACITY: u32 = 3;
|
||||||
/// How many parachain blocks are processed by the relay chain per parent. Limits the number of
|
/// How many parachain blocks are processed by the relay chain per parent. Limits the number of
|
||||||
/// blocks authored per slot.
|
/// blocks authored per slot.
|
||||||
pub const BLOCK_PROCESSING_VELOCITY: u32 = 1;
|
pub const BLOCK_PROCESSING_VELOCITY: u32 = 1;
|
||||||
/// Relay chain slot duration, in milliseconds.
|
/// Relay chain slot duration, in milliseconds.
|
||||||
pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
|
pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
|
||||||
|
|
||||||
|
/// We allow for 2 seconds of compute with a 6 second average block.
|
||||||
|
pub const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(
|
||||||
|
WEIGHT_REF_TIME_PER_SECOND.saturating_mul(2),
|
||||||
|
cumulus_primitives_core::relay_chain::MAX_POV_SIZE as u64,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// This determines the average expected block time that we are targeting.
|
||||||
|
/// Blocks will be produced at a minimum duration defined by `SLOT_DURATION`.
|
||||||
|
/// `SLOT_DURATION` is picked up by `pallet_timestamp` which is in turn picked
|
||||||
|
/// up by `pallet_aura` to implement `fn slot_duration()`.
|
||||||
|
///
|
||||||
|
/// Change this to adjust the block time.
|
||||||
|
pub const MILLISECS_PER_BLOCK: u64 = 6000;
|
||||||
|
pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Time-related
|
||||||
|
pub mod time {
|
||||||
|
use polkadot_core_primitives::BlockNumber;
|
||||||
|
|
||||||
|
// Time is measured by number of blocks.
|
||||||
|
pub const MINUTES: BlockNumber =
|
||||||
|
60_000 / (super::consensus::MILLISECS_PER_BLOCK as BlockNumber);
|
||||||
|
pub const HOURS: BlockNumber = MINUTES * 60;
|
||||||
|
pub const DAYS: BlockNumber = HOURS * 24;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -87,6 +88,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking?/std",
|
"frame-benchmarking?/std",
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ mod contracts;
|
|||||||
mod weights;
|
mod weights;
|
||||||
mod xcm_config;
|
mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::AggregateMessageOrigin;
|
use cumulus_primitives_core::AggregateMessageOrigin;
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
|
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
|
||||||
@@ -58,8 +58,7 @@ use frame_system::limits::{BlockLength, BlockWeights};
|
|||||||
pub use parachains_common as common;
|
pub use parachains_common as common;
|
||||||
use parachains_common::{
|
use parachains_common::{
|
||||||
impls::DealWithFees, message_queue::*, AccountId, BlockNumber, Hash, Header, Nonce, Signature,
|
impls::DealWithFees, message_queue::*, AccountId, BlockNumber, Hash, Header, Nonce, Signature,
|
||||||
AVERAGE_ON_INITIALIZE_RATIO, MAXIMUM_BLOCK_WEIGHT, MINUTES, NORMAL_DISPATCH_RATIO,
|
AVERAGE_ON_INITIALIZE_RATIO, MINUTES, NORMAL_DISPATCH_RATIO,
|
||||||
SLOT_DURATION,
|
|
||||||
};
|
};
|
||||||
pub use parachains_common::{AuraId, Balance};
|
pub use parachains_common::{AuraId, Balance};
|
||||||
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee};
|
||||||
@@ -192,6 +191,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = pallet_timestamp::weights::SubstrateWeight<Runtime>;
|
type WeightInfo = pallet_timestamp::weights::SubstrateWeight<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -274,15 +276,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type OutboundXcmpMessageSource = XcmpQueue;
|
type OutboundXcmpMessageSource = XcmpQueue;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
impl pallet_insecure_randomness_collective_flip::Config for Runtime {}
|
impl pallet_insecure_randomness_collective_flip::Config for Runtime {}
|
||||||
|
|
||||||
impl parachain_info::Config for Runtime {}
|
impl parachain_info::Config for Runtime {}
|
||||||
@@ -338,9 +342,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -429,7 +433,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -437,6 +441,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -86,6 +87,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking?/std",
|
"frame-benchmarking?/std",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ mod coretime;
|
|||||||
mod weights;
|
mod weights;
|
||||||
pub mod xcm_config;
|
pub mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
construct_runtime, derive_impl,
|
construct_runtime, derive_impl,
|
||||||
@@ -53,7 +53,7 @@ use parachains_common::{
|
|||||||
impls::DealWithFees,
|
impls::DealWithFees,
|
||||||
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
||||||
AccountId, AuraId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
AccountId, AuraId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
||||||
AVERAGE_ON_INITIALIZE_RATIO, HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
|
||||||
};
|
};
|
||||||
use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate};
|
use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate};
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
@@ -70,7 +70,7 @@ use sp_std::prelude::*;
|
|||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use sp_version::NativeVersion;
|
use sp_version::NativeVersion;
|
||||||
use sp_version::RuntimeVersion;
|
use sp_version::RuntimeVersion;
|
||||||
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee, time::*};
|
||||||
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
||||||
use xcm::latest::prelude::*;
|
use xcm::latest::prelude::*;
|
||||||
use xcm_config::{
|
use xcm_config::{
|
||||||
@@ -202,6 +202,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -262,15 +265,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type ReservedDmpWeight = ReservedDmpWeight;
|
type ReservedDmpWeight = ReservedDmpWeight;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub MessageQueueServiceWeight: Weight = Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block;
|
pub MessageQueueServiceWeight: Weight = Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block;
|
||||||
}
|
}
|
||||||
@@ -359,9 +364,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -486,7 +491,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -494,6 +499,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -85,6 +86,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"frame-benchmarking?/std",
|
"frame-benchmarking?/std",
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
|
|||||||
mod weights;
|
mod weights;
|
||||||
pub mod xcm_config;
|
pub mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
construct_runtime, derive_impl,
|
construct_runtime, derive_impl,
|
||||||
@@ -44,7 +44,7 @@ use parachains_common::{
|
|||||||
impls::DealWithFees,
|
impls::DealWithFees,
|
||||||
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
||||||
AccountId, AuraId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
AccountId, AuraId, Balance, BlockNumber, Hash, Header, Nonce, Signature,
|
||||||
AVERAGE_ON_INITIALIZE_RATIO, HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
|
||||||
};
|
};
|
||||||
use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate};
|
use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate};
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
@@ -61,7 +61,7 @@ use sp_std::prelude::*;
|
|||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use sp_version::NativeVersion;
|
use sp_version::NativeVersion;
|
||||||
use sp_version::RuntimeVersion;
|
use sp_version::RuntimeVersion;
|
||||||
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee, time::*};
|
||||||
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
||||||
use xcm::latest::prelude::*;
|
use xcm::latest::prelude::*;
|
||||||
use xcm_config::{
|
use xcm_config::{
|
||||||
@@ -193,6 +193,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -253,15 +256,17 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type ReservedDmpWeight = ReservedDmpWeight;
|
type ReservedDmpWeight = ReservedDmpWeight;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
impl parachain_info::Config for Runtime {}
|
impl parachain_info::Config for Runtime {}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -350,9 +355,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -473,7 +478,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -481,6 +486,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ use parachains_common::{AccountId, Signature};
|
|||||||
#[cfg(any(feature = "std", test))]
|
#[cfg(any(feature = "std", test))]
|
||||||
pub use sp_runtime::BuildStorage;
|
pub use sp_runtime::BuildStorage;
|
||||||
pub use sp_runtime::{Perbill, Permill};
|
pub use sp_runtime::{Perbill, Permill};
|
||||||
|
use testnet_parachains_constants::westend::consensus::*;
|
||||||
|
|
||||||
impl_opaque_keys! {
|
impl_opaque_keys! {
|
||||||
pub struct SessionKeys {
|
pub struct SessionKeys {
|
||||||
@@ -118,29 +119,6 @@ const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10);
|
|||||||
/// We allow `Normal` extrinsics to fill up the block up to 75%, the rest can be used
|
/// We allow `Normal` extrinsics to fill up the block up to 75%, the rest can be used
|
||||||
/// by Operational extrinsics.
|
/// by Operational extrinsics.
|
||||||
const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75);
|
const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75);
|
||||||
/// We allow for .5 seconds of compute with a 12 second average block time.
|
|
||||||
const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(
|
|
||||||
WEIGHT_REF_TIME_PER_SECOND.saturating_mul(2),
|
|
||||||
cumulus_primitives_core::relay_chain::MAX_POV_SIZE as u64,
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Maximum number of blocks simultaneously accepted by the Runtime, not yet included
|
|
||||||
/// into the relay chain.
|
|
||||||
const UNINCLUDED_SEGMENT_CAPACITY: u32 = 3;
|
|
||||||
/// How many parachain blocks are processed by the relay chain per parent. Limits the
|
|
||||||
/// number of blocks authored per slot.
|
|
||||||
const BLOCK_PROCESSING_VELOCITY: u32 = 2;
|
|
||||||
/// Relay chain slot duration, in milliseconds.
|
|
||||||
const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
|
|
||||||
|
|
||||||
/// This determines the average expected block time that we are targeting.
|
|
||||||
/// Blocks will be produced at a minimum duration defined by `SLOT_DURATION`.
|
|
||||||
/// `SLOT_DURATION` is picked up by `pallet_timestamp` which is in turn picked
|
|
||||||
/// up by `pallet_aura` to implement `fn slot_duration()`.
|
|
||||||
///
|
|
||||||
/// Change this to adjust the block time.
|
|
||||||
pub const MILLISECS_PER_BLOCK: u64 = 6000;
|
|
||||||
pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK;
|
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub const BlockHashCount: BlockNumber = 4096;
|
pub const BlockHashCount: BlockNumber = 4096;
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -82,6 +83,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"enumflags2/std",
|
"enumflags2/std",
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ pub mod people;
|
|||||||
mod weights;
|
mod weights;
|
||||||
pub mod xcm_config;
|
pub mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
construct_runtime, derive_impl,
|
construct_runtime, derive_impl,
|
||||||
@@ -44,7 +44,7 @@ use parachains_common::{
|
|||||||
impls::DealWithFees,
|
impls::DealWithFees,
|
||||||
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
||||||
AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
|
AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
|
||||||
HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
HOURS, NORMAL_DISPATCH_RATIO,
|
||||||
};
|
};
|
||||||
use polkadot_runtime_common::{identity_migrator, BlockHashCount, SlowAdjustingFeeUpdate};
|
use polkadot_runtime_common::{identity_migrator, BlockHashCount, SlowAdjustingFeeUpdate};
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
@@ -184,6 +184,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -243,16 +246,18 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type ReservedDmpWeight = ReservedDmpWeight;
|
type ReservedDmpWeight = ReservedDmpWeight;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
type WeightInfo = weights::cumulus_pallet_parachain_system::WeightInfo<Runtime>;
|
type WeightInfo = weights::cumulus_pallet_parachain_system::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub MessageQueueServiceWeight: Weight =
|
pub MessageQueueServiceWeight: Weight =
|
||||||
Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block;
|
Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block;
|
||||||
@@ -328,9 +333,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -459,7 +464,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -467,6 +472,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ cumulus-pallet-parachain-system = { path = "../../../../pallets/parachain-system
|
|||||||
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
cumulus-pallet-session-benchmarking = { path = "../../../../pallets/session-benchmarking", default-features = false }
|
||||||
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
cumulus-pallet-xcm = { path = "../../../../pallets/xcm", default-features = false }
|
||||||
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
cumulus-pallet-xcmp-queue = { path = "../../../../pallets/xcmp-queue", default-features = false }
|
||||||
|
cumulus-primitives-aura = { path = "../../../../primitives/aura", default-features = false }
|
||||||
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
cumulus-primitives-core = { path = "../../../../primitives/core", default-features = false }
|
||||||
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
cumulus-primitives-utility = { path = "../../../../primitives/utility", default-features = false }
|
||||||
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
pallet-collator-selection = { path = "../../../../pallets/collator-selection", default-features = false }
|
||||||
@@ -82,6 +83,7 @@ std = [
|
|||||||
"cumulus-pallet-session-benchmarking/std",
|
"cumulus-pallet-session-benchmarking/std",
|
||||||
"cumulus-pallet-xcm/std",
|
"cumulus-pallet-xcm/std",
|
||||||
"cumulus-pallet-xcmp-queue/std",
|
"cumulus-pallet-xcmp-queue/std",
|
||||||
|
"cumulus-primitives-aura/std",
|
||||||
"cumulus-primitives-core/std",
|
"cumulus-primitives-core/std",
|
||||||
"cumulus-primitives-utility/std",
|
"cumulus-primitives-utility/std",
|
||||||
"enumflags2/std",
|
"enumflags2/std",
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ pub mod people;
|
|||||||
mod weights;
|
mod weights;
|
||||||
pub mod xcm_config;
|
pub mod xcm_config;
|
||||||
|
|
||||||
use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases;
|
use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases;
|
||||||
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
|
||||||
use frame_support::{
|
use frame_support::{
|
||||||
construct_runtime, derive_impl,
|
construct_runtime, derive_impl,
|
||||||
@@ -44,7 +44,7 @@ use parachains_common::{
|
|||||||
impls::DealWithFees,
|
impls::DealWithFees,
|
||||||
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
|
||||||
AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
|
AccountId, Balance, BlockNumber, Hash, Header, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
|
||||||
HOURS, MAXIMUM_BLOCK_WEIGHT, NORMAL_DISPATCH_RATIO, SLOT_DURATION,
|
NORMAL_DISPATCH_RATIO,
|
||||||
};
|
};
|
||||||
use polkadot_runtime_common::{identity_migrator, BlockHashCount, SlowAdjustingFeeUpdate};
|
use polkadot_runtime_common::{identity_migrator, BlockHashCount, SlowAdjustingFeeUpdate};
|
||||||
use sp_api::impl_runtime_apis;
|
use sp_api::impl_runtime_apis;
|
||||||
@@ -63,7 +63,7 @@ use sp_std::prelude::*;
|
|||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use sp_version::NativeVersion;
|
use sp_version::NativeVersion;
|
||||||
use sp_version::RuntimeVersion;
|
use sp_version::RuntimeVersion;
|
||||||
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee};
|
use testnet_parachains_constants::westend::{consensus::*, currency::*, fee::WeightToFee, time::*};
|
||||||
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight};
|
||||||
use xcm::latest::prelude::BodyId;
|
use xcm::latest::prelude::BodyId;
|
||||||
use xcm_config::{
|
use xcm_config::{
|
||||||
@@ -184,6 +184,9 @@ impl pallet_timestamp::Config for Runtime {
|
|||||||
/// A timestamp: milliseconds since the unix epoch.
|
/// A timestamp: milliseconds since the unix epoch.
|
||||||
type Moment = u64;
|
type Moment = u64;
|
||||||
type OnTimestampSet = Aura;
|
type OnTimestampSet = Aura;
|
||||||
|
#[cfg(feature = "experimental")]
|
||||||
|
type MinimumPeriod = ConstU64<0>;
|
||||||
|
#[cfg(not(feature = "experimental"))]
|
||||||
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
type MinimumPeriod = ConstU64<{ SLOT_DURATION / 2 }>;
|
||||||
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
type WeightInfo = weights::pallet_timestamp::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
@@ -243,16 +246,18 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
|
|||||||
type ReservedDmpWeight = ReservedDmpWeight;
|
type ReservedDmpWeight = ReservedDmpWeight;
|
||||||
type XcmpMessageHandler = XcmpQueue;
|
type XcmpMessageHandler = XcmpQueue;
|
||||||
type ReservedXcmpWeight = ReservedXcmpWeight;
|
type ReservedXcmpWeight = ReservedXcmpWeight;
|
||||||
type CheckAssociatedRelayNumber = RelayNumberStrictlyIncreases;
|
type CheckAssociatedRelayNumber = RelayNumberMonotonicallyIncreases;
|
||||||
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
type ConsensusHook = ConsensusHook;
|
||||||
Runtime,
|
|
||||||
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
|
||||||
BLOCK_PROCESSING_VELOCITY,
|
|
||||||
UNINCLUDED_SEGMENT_CAPACITY,
|
|
||||||
>;
|
|
||||||
type WeightInfo = weights::cumulus_pallet_parachain_system::WeightInfo<Runtime>;
|
type WeightInfo = weights::cumulus_pallet_parachain_system::WeightInfo<Runtime>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ConsensusHook = cumulus_pallet_aura_ext::FixedVelocityConsensusHook<
|
||||||
|
Runtime,
|
||||||
|
RELAY_CHAIN_SLOT_DURATION_MILLIS,
|
||||||
|
BLOCK_PROCESSING_VELOCITY,
|
||||||
|
UNINCLUDED_SEGMENT_CAPACITY,
|
||||||
|
>;
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
pub MessageQueueServiceWeight: Weight =
|
pub MessageQueueServiceWeight: Weight =
|
||||||
Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block;
|
Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block;
|
||||||
@@ -328,9 +333,9 @@ impl pallet_aura::Config for Runtime {
|
|||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<100_000>;
|
type MaxAuthorities = ConstU32<100_000>;
|
||||||
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
type AllowMultipleBlocksPerSlot = ConstBool<true>;
|
||||||
#[cfg(feature = "experimental")]
|
#[cfg(feature = "experimental")]
|
||||||
type SlotDuration = pallet_aura::MinimumPeriodTimesTwo<Self>;
|
type SlotDuration = ConstU64<SLOT_DURATION>;
|
||||||
}
|
}
|
||||||
|
|
||||||
parameter_types! {
|
parameter_types! {
|
||||||
@@ -459,7 +464,7 @@ mod benches {
|
|||||||
impl_runtime_apis! {
|
impl_runtime_apis! {
|
||||||
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime {
|
||||||
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
fn slot_duration() -> sp_consensus_aura::SlotDuration {
|
||||||
sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration())
|
sp_consensus_aura::SlotDuration::from_millis(SLOT_DURATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn authorities() -> Vec<AuraId> {
|
fn authorities() -> Vec<AuraId> {
|
||||||
@@ -467,6 +472,15 @@ impl_runtime_apis! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl cumulus_primitives_aura::AuraUnincludedSegmentApi<Block> for Runtime {
|
||||||
|
fn can_build_upon(
|
||||||
|
included_hash: <Block as BlockT>::Hash,
|
||||||
|
slot: cumulus_primitives_aura::Slot,
|
||||||
|
) -> bool {
|
||||||
|
ConsensusHook::can_build_upon(included_hash, slot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl sp_api::Core<Block> for Runtime {
|
impl sp_api::Core<Block> for Runtime {
|
||||||
fn version() -> RuntimeVersion {
|
fn version() -> RuntimeVersion {
|
||||||
VERSION
|
VERSION
|
||||||
|
|||||||
@@ -695,7 +695,7 @@ pub fn run() -> Result<()> {
|
|||||||
.map(|r| r.0)
|
.map(|r| r.0)
|
||||||
.map_err(Into::into),
|
.map_err(Into::into),
|
||||||
|
|
||||||
AssetHubKusama | AssetHubWestend =>
|
AssetHubKusama =>
|
||||||
crate::service::start_asset_hub_node::<
|
crate::service::start_asset_hub_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
@@ -704,7 +704,7 @@ pub fn run() -> Result<()> {
|
|||||||
.map(|r| r.0)
|
.map(|r| r.0)
|
||||||
.map_err(Into::into),
|
.map_err(Into::into),
|
||||||
|
|
||||||
AssetHubRococo =>
|
AssetHubRococo | AssetHubWestend =>
|
||||||
crate::service::start_asset_hub_lookahead_node::<
|
crate::service::start_asset_hub_lookahead_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
@@ -713,7 +713,7 @@ pub fn run() -> Result<()> {
|
|||||||
.map(|r| r.0)
|
.map(|r| r.0)
|
||||||
.map_err(Into::into),
|
.map_err(Into::into),
|
||||||
|
|
||||||
CollectivesPolkadot | CollectivesWestend =>
|
CollectivesPolkadot =>
|
||||||
crate::service::start_generic_aura_node::<
|
crate::service::start_generic_aura_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
@@ -722,6 +722,15 @@ pub fn run() -> Result<()> {
|
|||||||
.map(|r| r.0)
|
.map(|r| r.0)
|
||||||
.map_err(Into::into),
|
.map_err(Into::into),
|
||||||
|
|
||||||
|
CollectivesWestend =>
|
||||||
|
crate::service::start_generic_aura_lookahead_node::<
|
||||||
|
RuntimeApi,
|
||||||
|
AuraId,
|
||||||
|
>(config, polkadot_config, collator_options, id, hwbench)
|
||||||
|
.await
|
||||||
|
.map(|r| r.0)
|
||||||
|
.map_err(Into::into),
|
||||||
|
|
||||||
Seedling | Shell =>
|
Seedling | Shell =>
|
||||||
crate::service::start_shell_node::<RuntimeApi>(
|
crate::service::start_shell_node::<RuntimeApi>(
|
||||||
config,
|
config,
|
||||||
@@ -763,7 +772,7 @@ pub fn run() -> Result<()> {
|
|||||||
chain_spec::bridge_hubs::BridgeHubRuntimeType::Westend |
|
chain_spec::bridge_hubs::BridgeHubRuntimeType::Westend |
|
||||||
chain_spec::bridge_hubs::BridgeHubRuntimeType::WestendLocal |
|
chain_spec::bridge_hubs::BridgeHubRuntimeType::WestendLocal |
|
||||||
chain_spec::bridge_hubs::BridgeHubRuntimeType::WestendDevelopment =>
|
chain_spec::bridge_hubs::BridgeHubRuntimeType::WestendDevelopment =>
|
||||||
crate::service::start_generic_aura_node::<
|
crate::service::start_generic_aura_lookahead_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
>(config, polkadot_config, collator_options, id, hwbench)
|
>(config, polkadot_config, collator_options, id, hwbench)
|
||||||
@@ -772,7 +781,7 @@ pub fn run() -> Result<()> {
|
|||||||
chain_spec::bridge_hubs::BridgeHubRuntimeType::Rococo |
|
chain_spec::bridge_hubs::BridgeHubRuntimeType::Rococo |
|
||||||
chain_spec::bridge_hubs::BridgeHubRuntimeType::RococoLocal |
|
chain_spec::bridge_hubs::BridgeHubRuntimeType::RococoLocal |
|
||||||
chain_spec::bridge_hubs::BridgeHubRuntimeType::RococoDevelopment =>
|
chain_spec::bridge_hubs::BridgeHubRuntimeType::RococoDevelopment =>
|
||||||
crate::service::start_generic_aura_node::<
|
crate::service::start_generic_aura_lookahead_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
>(config, polkadot_config, collator_options, id, hwbench)
|
>(config, polkadot_config, collator_options, id, hwbench)
|
||||||
@@ -787,7 +796,7 @@ pub fn run() -> Result<()> {
|
|||||||
chain_spec::coretime::CoretimeRuntimeType::RococoDevelopment |
|
chain_spec::coretime::CoretimeRuntimeType::RococoDevelopment |
|
||||||
chain_spec::coretime::CoretimeRuntimeType::WestendLocal |
|
chain_spec::coretime::CoretimeRuntimeType::WestendLocal |
|
||||||
chain_spec::coretime::CoretimeRuntimeType::WestendDevelopment =>
|
chain_spec::coretime::CoretimeRuntimeType::WestendDevelopment =>
|
||||||
crate::service::start_generic_aura_node::<
|
crate::service::start_generic_aura_lookahead_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
>(config, polkadot_config, collator_options, id, hwbench)
|
>(config, polkadot_config, collator_options, id, hwbench)
|
||||||
@@ -824,7 +833,7 @@ pub fn run() -> Result<()> {
|
|||||||
chain_spec::people::PeopleRuntimeType::Westend |
|
chain_spec::people::PeopleRuntimeType::Westend |
|
||||||
chain_spec::people::PeopleRuntimeType::WestendLocal |
|
chain_spec::people::PeopleRuntimeType::WestendLocal |
|
||||||
chain_spec::people::PeopleRuntimeType::WestendDevelopment =>
|
chain_spec::people::PeopleRuntimeType::WestendDevelopment =>
|
||||||
crate::service::start_generic_aura_node::<
|
crate::service::start_generic_aura_lookahead_node::<
|
||||||
RuntimeApi,
|
RuntimeApi,
|
||||||
AuraId,
|
AuraId,
|
||||||
>(config, polkadot_config, collator_options, id, hwbench)
|
>(config, polkadot_config, collator_options, id, hwbench)
|
||||||
|
|||||||
@@ -1292,7 +1292,7 @@ where
|
|||||||
Ok(BasicQueue::new(verifier, Box::new(block_import), None, &spawner, registry))
|
Ok(BasicQueue::new(verifier, Box::new(block_import), None, &spawner, registry))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Start an aura powered parachain node. Collectives uses this.
|
/// Start an aura powered parachain node. Some system chains use this.
|
||||||
pub async fn start_generic_aura_node<RuntimeApi, AuraId: AppCrypto>(
|
pub async fn start_generic_aura_node<RuntimeApi, AuraId: AppCrypto>(
|
||||||
parachain_config: Configuration,
|
parachain_config: Configuration,
|
||||||
polkadot_config: Configuration,
|
polkadot_config: Configuration,
|
||||||
@@ -1386,6 +1386,106 @@ where
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Uses the lookahead collator to support async backing.
|
||||||
|
///
|
||||||
|
/// Start an aura powered parachain node. Some system chains use this.
|
||||||
|
pub async fn start_generic_aura_lookahead_node<RuntimeApi, AuraId: AppCrypto>(
|
||||||
|
parachain_config: Configuration,
|
||||||
|
polkadot_config: Configuration,
|
||||||
|
collator_options: CollatorOptions,
|
||||||
|
para_id: ParaId,
|
||||||
|
hwbench: Option<sc_sysinfo::HwBench>,
|
||||||
|
) -> sc_service::error::Result<(TaskManager, Arc<ParachainClient<RuntimeApi>>)>
|
||||||
|
where
|
||||||
|
RuntimeApi: ConstructRuntimeApi<Block, ParachainClient<RuntimeApi>> + Send + Sync + 'static,
|
||||||
|
RuntimeApi::RuntimeApi: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>
|
||||||
|
+ sp_api::Metadata<Block>
|
||||||
|
+ sp_session::SessionKeys<Block>
|
||||||
|
+ sp_api::ApiExt<Block>
|
||||||
|
+ sp_offchain::OffchainWorkerApi<Block>
|
||||||
|
+ sp_block_builder::BlockBuilder<Block>
|
||||||
|
+ cumulus_primitives_core::CollectCollationInfo<Block>
|
||||||
|
+ sp_consensus_aura::AuraApi<Block, <<AuraId as AppCrypto>::Pair as Pair>::Public>
|
||||||
|
+ pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>
|
||||||
|
+ frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>
|
||||||
|
+ cumulus_primitives_aura::AuraUnincludedSegmentApi<Block>,
|
||||||
|
<<AuraId as AppCrypto>::Pair as Pair>::Signature:
|
||||||
|
TryFrom<Vec<u8>> + std::hash::Hash + sp_runtime::traits::Member + Codec,
|
||||||
|
{
|
||||||
|
start_node_impl::<RuntimeApi, _, _, _>(
|
||||||
|
parachain_config,
|
||||||
|
polkadot_config,
|
||||||
|
collator_options,
|
||||||
|
CollatorSybilResistance::Resistant, // Aura
|
||||||
|
para_id,
|
||||||
|
|_| Ok(RpcModule::new(())),
|
||||||
|
aura_build_import_queue::<_, AuraId>,
|
||||||
|
|client,
|
||||||
|
block_import,
|
||||||
|
prometheus_registry,
|
||||||
|
telemetry,
|
||||||
|
task_manager,
|
||||||
|
relay_chain_interface,
|
||||||
|
transaction_pool,
|
||||||
|
sync_oracle,
|
||||||
|
keystore,
|
||||||
|
relay_chain_slot_duration,
|
||||||
|
para_id,
|
||||||
|
collator_key,
|
||||||
|
overseer_handle,
|
||||||
|
announce_block,
|
||||||
|
backend| {
|
||||||
|
let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?;
|
||||||
|
|
||||||
|
let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording(
|
||||||
|
task_manager.spawn_handle(),
|
||||||
|
client.clone(),
|
||||||
|
transaction_pool,
|
||||||
|
prometheus_registry,
|
||||||
|
telemetry.clone(),
|
||||||
|
);
|
||||||
|
let proposer = Proposer::new(proposer_factory);
|
||||||
|
|
||||||
|
let collator_service = CollatorService::new(
|
||||||
|
client.clone(),
|
||||||
|
Arc::new(task_manager.spawn_handle()),
|
||||||
|
announce_block,
|
||||||
|
client.clone(),
|
||||||
|
);
|
||||||
|
|
||||||
|
let params = AuraParams {
|
||||||
|
create_inherent_data_providers: move |_, ()| async move { Ok(()) },
|
||||||
|
block_import,
|
||||||
|
para_client: client.clone(),
|
||||||
|
para_backend: backend,
|
||||||
|
relay_client: relay_chain_interface,
|
||||||
|
code_hash_provider: move |block_hash| {
|
||||||
|
client.code_at(block_hash).ok().map(|c| ValidationCode::from(c).hash())
|
||||||
|
},
|
||||||
|
sync_oracle,
|
||||||
|
keystore,
|
||||||
|
collator_key,
|
||||||
|
para_id,
|
||||||
|
overseer_handle,
|
||||||
|
slot_duration,
|
||||||
|
relay_chain_slot_duration,
|
||||||
|
proposer,
|
||||||
|
collator_service,
|
||||||
|
authoring_duration: Duration::from_millis(1500),
|
||||||
|
reinitialize: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
let fut =
|
||||||
|
aura::run::<Block, <AuraId as AppCrypto>::Pair, _, _, _, _, _, _, _, _, _>(params);
|
||||||
|
task_manager.spawn_essential_handle().spawn("aura", None, fut);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
},
|
||||||
|
hwbench,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
|
||||||
/// Start a shell node which should later transition into an Aura powered parachain node. Asset Hub
|
/// Start a shell node which should later transition into an Aura powered parachain node. Asset Hub
|
||||||
/// uses this because at genesis, Asset Hub was on the `shell` runtime which didn't have Aura and
|
/// uses this because at genesis, Asset Hub was on the `shell` runtime which didn't have Aura and
|
||||||
/// needs to sync and upgrade before it can run `AuraApi` functions.
|
/// needs to sync and upgrade before it can run `AuraApi` functions.
|
||||||
@@ -1805,7 +1905,8 @@ where
|
|||||||
+ sp_block_builder::BlockBuilder<Block>
|
+ sp_block_builder::BlockBuilder<Block>
|
||||||
+ cumulus_primitives_core::CollectCollationInfo<Block>
|
+ cumulus_primitives_core::CollectCollationInfo<Block>
|
||||||
+ pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>
|
+ pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>
|
||||||
+ frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>,
|
+ frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>
|
||||||
|
+ cumulus_primitives_aura::AuraUnincludedSegmentApi<Block>,
|
||||||
RB: Fn(Arc<ParachainClient<RuntimeApi>>) -> Result<jsonrpsee::RpcModule<()>, sc_service::Error>,
|
RB: Fn(Arc<ParachainClient<RuntimeApi>>) -> Result<jsonrpsee::RpcModule<()>, sc_service::Error>,
|
||||||
BIQ: FnOnce(
|
BIQ: FnOnce(
|
||||||
Arc<ParachainClient<RuntimeApi>>,
|
Arc<ParachainClient<RuntimeApi>>,
|
||||||
@@ -2039,7 +2140,7 @@ pub async fn start_contracts_rococo_node(
|
|||||||
collator_key,
|
collator_key,
|
||||||
overseer_handle,
|
overseer_handle,
|
||||||
announce_block,
|
announce_block,
|
||||||
_backend| {
|
backend| {
|
||||||
let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?;
|
let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?;
|
||||||
|
|
||||||
let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording(
|
let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording(
|
||||||
@@ -2058,11 +2159,15 @@ pub async fn start_contracts_rococo_node(
|
|||||||
client.clone(),
|
client.clone(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let params = BasicAuraParams {
|
let params = AuraParams {
|
||||||
create_inherent_data_providers: move |_, ()| async move { Ok(()) },
|
create_inherent_data_providers: move |_, ()| async move { Ok(()) },
|
||||||
block_import,
|
block_import,
|
||||||
para_client: client,
|
para_client: client.clone(),
|
||||||
|
para_backend: backend.clone(),
|
||||||
relay_client: relay_chain_interface,
|
relay_client: relay_chain_interface,
|
||||||
|
code_hash_provider: move |block_hash| {
|
||||||
|
client.code_at(block_hash).ok().map(|c| ValidationCode::from(c).hash())
|
||||||
|
},
|
||||||
sync_oracle,
|
sync_oracle,
|
||||||
keystore,
|
keystore,
|
||||||
collator_key,
|
collator_key,
|
||||||
@@ -2073,11 +2178,11 @@ pub async fn start_contracts_rococo_node(
|
|||||||
proposer,
|
proposer,
|
||||||
collator_service,
|
collator_service,
|
||||||
// Very limited proposal time.
|
// Very limited proposal time.
|
||||||
authoring_duration: Duration::from_millis(500),
|
authoring_duration: Duration::from_millis(1500),
|
||||||
collation_request_receiver: None,
|
reinitialize: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
let fut = basic_aura::run::<
|
let fut = aura::run::<
|
||||||
Block,
|
Block,
|
||||||
sp_consensus_aura::sr25519::AuthorityPair,
|
sp_consensus_aura::sr25519::AuthorityPair,
|
||||||
_,
|
_,
|
||||||
@@ -2087,6 +2192,8 @@ pub async fn start_contracts_rococo_node(
|
|||||||
_,
|
_,
|
||||||
_,
|
_,
|
||||||
_,
|
_,
|
||||||
|
_,
|
||||||
|
_,
|
||||||
>(params);
|
>(params);
|
||||||
task_manager.spawn_essential_handle().spawn("aura", None, fut);
|
task_manager.spawn_essential_handle().spawn("aura", None, fut);
|
||||||
|
|
||||||
|
|||||||
@@ -54,9 +54,11 @@ async function run(nodeName, networkInfo, _jsArgs) {
|
|||||||
unsub();
|
unsub();
|
||||||
return resolve();
|
return resolve();
|
||||||
} else if (result.isError) {
|
} else if (result.isError) {
|
||||||
console.log(`Transaction Error`);
|
// Probably happens because of: https://github.com/paritytech/polkadot-sdk/issues/1202.
|
||||||
|
console.log(`Transaction error`);
|
||||||
|
// We ignore the error because it is very likely misleading, because of the issue mentioned above.
|
||||||
unsub();
|
unsub();
|
||||||
return reject();
|
return resolve();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
title: Enable async backing on all testnet system chains
|
||||||
|
|
||||||
|
doc:
|
||||||
|
- audience: Runtime User
|
||||||
|
description: |
|
||||||
|
Async backing has been enabled on all testnet system chains: asset-hub-westend,
|
||||||
|
bridge-hub-westend, bridge-hub-rococo, collectives-westend, contracts-rococo,
|
||||||
|
coretime-westend, coretime-rococo, people-westend, and people-rococo. These now target 6s
|
||||||
|
block times.
|
||||||
|
For the running coretime chains, that requires updating the configuration after the runtime
|
||||||
|
upgrade but before the end of the current region.
|
||||||
|
|
||||||
|
crates:
|
||||||
|
- name: asset-hub-westend-runtime
|
||||||
|
- name: bridge-hub-westend-runtime
|
||||||
|
- name: bridge-hub-rococo-runtime
|
||||||
|
- name: collectives-westend-runtime
|
||||||
|
- name: contracts-rococo-runtime
|
||||||
|
- name: coretime-westend-runtime
|
||||||
|
- name: coretime-rococo-runtime
|
||||||
|
- name: people-westend-runtime
|
||||||
|
- name: people-rococo-runtime
|
||||||
|
- name: polkadot-parachain-bin
|
||||||
Reference in New Issue
Block a user