Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Next Next commit
Adding Fallback on election failure
Use the newly introduced `BoundedOnChainSequentialPhragmen`
and `UnboundedOnChainSequentialPhragmen`
  • Loading branch information
Georges Dib committed Mar 12, 2022
commit 93cd481b89e5c1dc154471d0ef4d92e82cd1f06b
2 changes: 1 addition & 1 deletion runtime/common/src/elections.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pub type OnOnChainAccuracy = sp_runtime::Perbill;

/// The election provider of the genesis
pub type GenesisElectionOf<T> =
frame_election_provider_support::onchain::OnChainSequentialPhragmen<T>;
frame_election_provider_support::onchain::UnboundedSequentialPhragmen<T>;

/// Implementation of `frame_election_provider_support::SortedListProvider` that updates the
/// bags-list but uses [`pallet_staking::Nominators`] for `iter`. This is meant to be a transitionary
Expand Down
12 changes: 10 additions & 2 deletions runtime/kusama/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -442,9 +442,17 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
type MinerTxPriority = NposSolutionPriority;
type DataProvider = Staking;
type Solution = NposCompactSolution24;
type Fallback = pallet_election_provider_multi_phase::NoFallback<Self>;
type Fallback = frame_election_provider_support::onchain::BoundedOnChainSequentialPhragmen<
Self,
frame_support::traits::ConstU32<20_000>,
frame_support::traits::ConstU32<2_000>,
>;
type GovernanceFallback =
frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
frame_election_provider_support::onchain::BoundedOnChainSequentialPhragmen<
Self,
frame_support::traits::ConstU32<20_000>,
frame_support::traits::ConstU32<2_000>,
>;
type Solver = frame_election_provider_support::SequentialPhragmen<
AccountId,
pallet_election_provider_multi_phase::SolutionAccuracyOf<Self>,
Expand Down
12 changes: 10 additions & 2 deletions runtime/polkadot/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -484,9 +484,17 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
type MinerTxPriority = NposSolutionPriority;
type DataProvider = Staking;
type Solution = NposCompactSolution16;
type Fallback = pallet_election_provider_multi_phase::NoFallback<Self>;
type Fallback = frame_election_provider_support::onchain::BoundedOnChainSequentialPhragmen<
Self,
frame_support::traits::ConstU32<20_000>,
frame_support::traits::ConstU32<2_000>,
>;
type GovernanceFallback =
frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
frame_election_provider_support::onchain::BoundedOnChainSequentialPhragmen<
Self,
frame_support::traits::ConstU32<20_000>,
frame_support::traits::ConstU32<2_000>,
>;
type Solver = frame_election_provider_support::SequentialPhragmen<
AccountId,
pallet_election_provider_multi_phase::SolutionAccuracyOf<Self>,
Expand Down
4 changes: 2 additions & 2 deletions runtime/test-runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,9 +340,9 @@ impl pallet_staking::Config for Runtime {
type OffendingValidatorsThreshold = OffendingValidatorsThreshold;
type NextNewSession = Session;
type ElectionProvider =
frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
frame_election_provider_support::onchain::UnboundedSequentialPhragmen<Self>;
type GenesisElectionProvider =
frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
frame_election_provider_support::onchain::UnboundedSequentialPhragmen<Self>;
// Use the nominator map to iter voter AND no-ops for all SortedListProvider hooks. The migration
// to bags-list is a no-op, but the storage version will be updated.
type SortedListProvider = pallet_staking::UseNominatorsMap<Runtime>;
Expand Down
12 changes: 10 additions & 2 deletions runtime/westend/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -394,9 +394,17 @@ impl pallet_election_provider_multi_phase::Config for Runtime {
type MinerTxPriority = NposSolutionPriority;
type DataProvider = Staking;
type Solution = NposCompactSolution16;
type Fallback = pallet_election_provider_multi_phase::NoFallback<Self>;
type Fallback = frame_election_provider_support::onchain::BoundedOnChainSequentialPhragmen<
Self,
frame_support::traits::ConstU32<20_000>,
frame_support::traits::ConstU32<2_000>,
>;
type GovernanceFallback =
frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
frame_election_provider_support::onchain::BoundedOnChainSequentialPhragmen<
Self,
frame_support::traits::ConstU32<20_000>,
frame_support::traits::ConstU32<2_000>,
>;
type Solver = frame_election_provider_support::SequentialPhragmen<
AccountId,
pallet_election_provider_multi_phase::SolutionAccuracyOf<Self>,
Expand Down