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

staking: add a min_validator_stake first delegation requirement #3877

Merged
merged 6 commits into from
Feb 26, 2024

Conversation

erwanor
Copy link
Member

@erwanor erwanor commented Feb 23, 2024

Close #3853

This PR:

  • removes the Defined -> Inactive transition from the delegate action execution
  • ensure that the first delegation to a validator pool must be at least min_validator_stake
  • add a try_precursor_transition method to the validator state machine to safely drive transitions in/out of the Defined state

@erwanor erwanor force-pushed the erwan/3853_min_self_delegation branch from fb64c8f to a274d83 Compare February 23, 2024 15:05
@cratelyn cratelyn added A-staking Area: Design and implementation of staking and delegation consensus-breaking breaking change to execution of on-chain data labels Feb 23, 2024
Copy link
Contributor

@cratelyn cratelyn left a comment

Choose a reason for hiding this comment

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

this is really lovely work, @erwanor!! 🙏

Comment on lines 374 to 384
let has_minimum_stake = unbonded_pool >= min_stake;

let new_state = match previous_state {
Defined if has_minimum_stake => Inactive,
Defined if !has_minimum_stake => Defined,
Active if has_minimum_stake => Active,
Active if !has_minimum_stake => Defined,
Inactive if has_minimum_stake => Inactive,
Inactive if !has_minimum_stake => Defined,
_ => unreachable!("the previous state was validated by the guard condition"),
};
Copy link
Contributor

Choose a reason for hiding this comment

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

i love how this is laid out

@erwanor erwanor merged commit 9d54fa2 into main Feb 26, 2024
6 checks passed
@erwanor erwanor deleted the erwan/3853_min_self_delegation branch February 26, 2024 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-staking Area: Design and implementation of staking and delegation consensus-breaking breaking change to execution of on-chain data
Projects
None yet
Development

Successfully merging this pull request may close these issues.

staking: create minimum self-delegation requirement
2 participants