mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 05:51:02 +00:00
Session Delayed Para Changes / Actions Queue (#2406)
* initial implementation of lifecycles and upgrades * clean up a bit * fix doc comment * more rigid lifecycle checks * include paras which are transitioning, and lifecycle query * format guide * update api * update guide * explicit outgoing state, fix genesis * handle outgoing with transitioning paras * do not include transitioning paras in identifier * Update roadmap/implementers-guide/src/runtime/paras.md * Update roadmap/implementers-guide/src/runtime/paras.md * Update roadmap/implementers-guide/src/runtime/paras.md * Apply suggestions from code review * Use matches macro * Correct terms * Apply suggestions from code review * actions queue * Revert "actions queue" This reverts commit b2e9011ec8937d6c73e99292416c9692aeb30f73. * collapse onboarding state * starting actions queue * consolidate actions queue * schedule para initialize result * more actions queue for upgrade/downgrade * clean up with fully implemented actions queue * fix tests * fix scheduler tests * fix hrmp tests * fix test * doc fixes * fix hrmp test w/ valid para * Update paras.md * fix paras registrar * Update propose_parachain.rs * fix merge * Introduce "shared" module * fix rococo build * fix up and use shared * guide updates * add shared config to common tests * add shared to test-runtime * remove println * fix note Co-authored-by: Gavin Wood <gavin@parity.io>
This commit is contained in:
@@ -65,6 +65,7 @@ use runtime_common::{paras_sudo_wrapper, paras_registrar};
|
||||
|
||||
use runtime_parachains::origin as parachains_origin;
|
||||
use runtime_parachains::configuration as parachains_configuration;
|
||||
use runtime_parachains::shared as parachains_shared;
|
||||
use runtime_parachains::inclusion as parachains_inclusion;
|
||||
use runtime_parachains::inclusion_inherent as parachains_inclusion_inherent;
|
||||
use runtime_parachains::initializer as parachains_initializer;
|
||||
@@ -187,6 +188,7 @@ construct_runtime! {
|
||||
// Parachains modules.
|
||||
ParachainsOrigin: parachains_origin::{Module, Origin},
|
||||
ParachainsConfiguration: parachains_configuration::{Module, Call, Storage, Config<T>},
|
||||
Shared: parachains_shared::{Module, Call, Storage},
|
||||
Inclusion: parachains_inclusion::{Module, Call, Storage, Event<T>},
|
||||
InclusionInherent: parachains_inclusion_inherent::{Module, Call, Storage, Inherent},
|
||||
Scheduler: parachains_scheduler::{Module, Call, Storage},
|
||||
@@ -500,6 +502,8 @@ impl parachains_origin::Config for Runtime {}
|
||||
|
||||
impl parachains_configuration::Config for Runtime {}
|
||||
|
||||
impl parachains_shared::Config for Runtime {}
|
||||
|
||||
/// Special `RewardValidators` that does nothing ;)
|
||||
pub struct RewardValidators;
|
||||
impl runtime_parachains::inclusion::RewardValidators for RewardValidators {
|
||||
|
||||
@@ -134,6 +134,8 @@ decl_error! {
|
||||
DefinitelyNotWasm,
|
||||
/// Registration requires at least one validator.
|
||||
AtLeastOneValidatorRequired,
|
||||
/// Couldn't schedule parachain cleanup.
|
||||
CouldntCleanup,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,11 +197,7 @@ decl_module! {
|
||||
ensure!(validators.len() > 0, Error::<T>::AtLeastOneValidatorRequired);
|
||||
ensure!(!Proposals::<T>::contains_key(¶_id), Error::<T>::ParachainIdAlreadyProposed);
|
||||
ensure!(
|
||||
!runtime_parachains::paras::Module::<T>::parachains().contains(¶_id),
|
||||
Error::<T>::ParachainIdAlreadyTaken,
|
||||
);
|
||||
ensure!(
|
||||
!runtime_parachains::paras::Module::<T>::upcoming_paras().contains(¶_id),
|
||||
runtime_parachains::paras::Module::<T>::lifecycle(para_id).is_none(),
|
||||
Error::<T>::ParachainIdAlreadyTaken,
|
||||
);
|
||||
ensure!(validation_code.0.starts_with(runtime_common::WASM_MAGIC), Error::<T>::DefinitelyNotWasm);
|
||||
@@ -289,10 +287,10 @@ decl_module! {
|
||||
if let Some(who) = who {
|
||||
ensure!(who == info.proposer, Error::<T>::NotAuthorized);
|
||||
}
|
||||
runtime_parachains::schedule_para_cleanup::<T>(para_id).map_err(|_| Error::<T>::CouldntCleanup)?;
|
||||
|
||||
ParachainInfo::<T>::remove(¶_id);
|
||||
info.validators.into_iter().for_each(|v| ValidatorsToRetire::<T>::append(v));
|
||||
runtime_parachains::schedule_para_cleanup::<T>(para_id);
|
||||
|
||||
pallet_balances::Module::<T>::unreserve(&info.proposer, T::ProposeDeposit::get());
|
||||
}
|
||||
@@ -354,7 +352,8 @@ impl<T: Config> pallet_session::SessionManager<T::ValidatorId> for Module<T> {
|
||||
parachain: true,
|
||||
};
|
||||
|
||||
runtime_parachains::schedule_para_initialize::<T>(*id, genesis);
|
||||
// Not much we can do if this fails...
|
||||
let _ = runtime_parachains::schedule_para_initialize::<T>(*id, genesis);
|
||||
|
||||
validators.extend(proposal.validators);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user