Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds multi-block election types and refactors current pallets to support new interfaces and types #6034

Open
wants to merge 71 commits into
base: master
Choose a base branch
from

Conversation

gpestana
Copy link
Contributor

@gpestana gpestana commented Oct 13, 2024

This PR refactors the types and structs required to run a mulit-block election and updates the EPM, staking-pallet and all dependent pallets to use the multi-block types. The Westend runtime is configured to run a 1 paged election, which is a noop refactor compared to the current single-block election.

Notable changes since last reviews:

Tasks based on feedback that can be closed after merging this PR: Umbrella ticket for multi-block election tasks to improve after PR#6034.


The multi-block election provider pallet is wip and it's added in a separate PR (#6213).

To-do before merging:

  • test with chopsticks/follow-chain
  • add benchmarks for on_intialize in pallet staking

@gpestana gpestana self-assigned this Oct 13, 2024
@gpestana gpestana requested a review from a team as a code owner October 13, 2024 23:49
@gpestana gpestana requested a review from Ank4n October 13, 2024 23:49
@gpestana gpestana marked this pull request as draft October 13, 2024 23:49
@gpestana gpestana added the T2-pallets This PR/Issue is related to a particular pallet. label Oct 13, 2024
Copy link
Contributor

@Ank4n Ank4n left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only looked at traits. Will do another pass.

substrate/frame/election-provider-support/src/lib.rs Outdated Show resolved Hide resolved
fn elect(remaining: PageIndex) -> Result<BoundedSupportsOf<Self>, Self::Error>;

/// The index of the *most* significant page that this election provider supports.
fn msp() -> PageIndex {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

may be call it highest page or top page?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, since the current page index needs to be stored somewhere, could we just store it on ElectionProvider, and Staking then can just call next_elect()?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I called it like this initially be be simiar to the concept if msp (most significant bit) in cpus.

@gpestana gpestana marked this pull request as ready for review October 18, 2024 16:42
substrate/primitives/staking/src/lib.rs Outdated Show resolved Hide resolved
substrate/primitives/staking/src/lib.rs Outdated Show resolved Hide resolved
substrate/primitives/staking/src/lib.rs Outdated Show resolved Hide resolved
substrate/primitives/staking/Cargo.toml Outdated Show resolved Hide resolved
prdoc/pr_6034.prdoc Outdated Show resolved Hide resolved
// default bounds are unbounded.
let targets =
T::DataProvider::electable_targets(DataProviderBounds::default(), Zero::zero())?;
let voters = T::DataProvider::electing_voters(DataProviderBounds::default(), Zero::zero())?;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can introduce a function unbounded to DataProviderBounds to make code more readable.

substrate/frame/election-provider-multi-phase/src/lib.rs Outdated Show resolved Hide resolved
@paritytech-review-bot paritytech-review-bot bot requested a review from a team November 14, 2024 09:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T2-pallets This PR/Issue is related to a particular pallet.
Projects
Status: In review
Development

Successfully merging this pull request may close these issues.

4 participants