mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 12:51:02 +00:00
Configurable maximum validators (#2586)
* guide: max_validators * guide: new approach * restrict validators based on configurable max * add some tests * fix wasm build (Vec) * clean up warnings * add logging * set validator indices in tests as well * fix common tests * Update runtime/parachains/src/util.rs Co-authored-by: Andronik Ordian <write@reusable.software> Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
committed by
GitHub
parent
30e4a67f0c
commit
8b4f46d2df
@@ -24,12 +24,14 @@ use frame_support::{
|
||||
decl_storage, decl_module, decl_error,
|
||||
traits::OneSessionHandler, weights::Weight,
|
||||
};
|
||||
use crate::{configuration, paras, scheduler};
|
||||
use crate::{configuration, paras, scheduler, shared};
|
||||
use crate::util::take_active_subset;
|
||||
use sp_std::vec::Vec;
|
||||
|
||||
pub trait Config:
|
||||
frame_system::Config
|
||||
+ configuration::Config
|
||||
+ shared::Config
|
||||
+ paras::Config
|
||||
+ scheduler::Config
|
||||
+ AuthorityDiscoveryConfig
|
||||
@@ -88,6 +90,8 @@ impl<T: Config> Module<T> {
|
||||
let validators = notification.validators.clone();
|
||||
let discovery_keys = <T as AuthorityDiscoveryConfig>::authorities();
|
||||
let assignment_keys = AssignmentKeysUnsafe::get();
|
||||
|
||||
let active_set = <shared::Module<T>>::active_validator_indices();
|
||||
let validator_groups = <scheduler::Module<T>>::validator_groups();
|
||||
let n_cores = n_parachains + config.parathread_cores;
|
||||
let zeroth_delay_tranche_width = config.zeroth_delay_tranche_width;
|
||||
@@ -114,9 +118,9 @@ impl<T: Config> Module<T> {
|
||||
}
|
||||
// create a new entry in `Sessions` with information about the current session
|
||||
let new_session_info = SessionInfo {
|
||||
validators,
|
||||
discovery_keys,
|
||||
assignment_keys,
|
||||
validators: take_active_subset(&active_set, &validators),
|
||||
discovery_keys: take_active_subset(&active_set, &discovery_keys),
|
||||
assignment_keys: take_active_subset(&active_set, &assignment_keys),
|
||||
validator_groups,
|
||||
n_cores,
|
||||
zeroth_delay_tranche_width,
|
||||
@@ -186,11 +190,14 @@ mod tests {
|
||||
|
||||
if let Some(notification) = new_session(b + 1) {
|
||||
Configuration::initializer_on_new_session(
|
||||
¬ification.validators,
|
||||
¬ification.queued,
|
||||
¬ification.session_index,
|
||||
);
|
||||
Shared::initializer_on_new_session(¬ification);
|
||||
Shared::initializer_on_new_session(
|
||||
notification.session_index,
|
||||
notification.random_seed,
|
||||
¬ification.new_config,
|
||||
notification.validators.clone(),
|
||||
);
|
||||
SessionInfo::initializer_on_new_session(¬ification);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user