mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 04:41:03 +00:00
[Companion] Bound Election and Staking by MaxActiveValidators (#6157)
* add maximum winners to multi phase election provider
* fallback to noelection
* fmt
* missing values
* convert boundedvec to inner before sort
* dont clone
* pr feedback
* update lockfile for {"substrate"}
* run onchain election on westend benchmark
Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -366,6 +366,9 @@ parameter_types! {
|
||||
/// ... and all of the validators as electable targets. Whilst this is the case, we cannot and
|
||||
/// shall not increase the size of the validator intentions.
|
||||
pub const MaxElectableTargets: u16 = u16::MAX;
|
||||
// Maximum winners that can be chosen as active validators
|
||||
pub const MaxActiveValidators: u32 = 1000;
|
||||
|
||||
}
|
||||
|
||||
frame_election_provider_support::generate_solution_type!(
|
||||
@@ -384,6 +387,9 @@ impl onchain::Config for OnChainSeqPhragmen {
|
||||
type Solver = SequentialPhragmen<AccountId, OnChainAccuracy>;
|
||||
type DataProvider = Staking;
|
||||
type WeightInfo = weights::frame_election_provider_support::WeightInfo<Runtime>;
|
||||
type MaxWinners = MaxActiveValidators;
|
||||
type VotersBound = MaxElectingVoters;
|
||||
type TargetsBound = MaxElectableTargets;
|
||||
}
|
||||
|
||||
impl pallet_election_provider_multi_phase::MinerConfig for Runtime {
|
||||
@@ -431,10 +437,15 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
|
||||
type MinerTxPriority = NposSolutionPriority;
|
||||
type DataProvider = Staking;
|
||||
#[cfg(any(feature = "fast-runtime", feature = "runtime-benchmarks"))]
|
||||
type Fallback = onchain::UnboundedExecution<OnChainSeqPhragmen>;
|
||||
type Fallback = onchain::OnChainExecution<OnChainSeqPhragmen>;
|
||||
#[cfg(not(any(feature = "fast-runtime", feature = "runtime-benchmarks")))]
|
||||
type Fallback = pallet_election_provider_multi_phase::NoFallback<Self>;
|
||||
type GovernanceFallback = onchain::UnboundedExecution<OnChainSeqPhragmen>;
|
||||
type Fallback = frame_election_provider_support::NoElection<(
|
||||
AccountId,
|
||||
BlockNumber,
|
||||
Staking,
|
||||
MaxActiveValidators,
|
||||
)>;
|
||||
type GovernanceFallback = onchain::OnChainExecution<OnChainSeqPhragmen>;
|
||||
type Solver = SequentialPhragmen<
|
||||
AccountId,
|
||||
pallet_election_provider_multi_phase::SolutionAccuracyOf<Self>,
|
||||
@@ -445,6 +456,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
|
||||
type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo<Self>;
|
||||
type MaxElectingVoters = MaxElectingVoters;
|
||||
type MaxElectableTargets = MaxElectableTargets;
|
||||
type MaxWinners = MaxActiveValidators;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
@@ -505,7 +517,7 @@ impl pallet_staking::Config for Runtime {
|
||||
type OffendingValidatorsThreshold = OffendingValidatorsThreshold;
|
||||
type NextNewSession = Session;
|
||||
type ElectionProvider = ElectionProviderMultiPhase;
|
||||
type GenesisElectionProvider = onchain::UnboundedExecution<OnChainSeqPhragmen>;
|
||||
type GenesisElectionProvider = onchain::OnChainExecution<OnChainSeqPhragmen>;
|
||||
type VoterList = VoterList;
|
||||
type TargetList = UseValidatorsMap<Self>;
|
||||
type MaxUnlockingChunks = frame_support::traits::ConstU32<32>;
|
||||
|
||||
Reference in New Issue
Block a user