-
Notifications
You must be signed in to change notification settings - Fork 711
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 Elections: Consider removing validators with no points #5674
Comments
@kianenigma Is this being worked on or planning to start soon ? I think it should be prioritised given how often this bites us. |
Yes, this sounds useful. Can they unchill themselves easily? Or do we do it when they change their session keys? |
I don't see the bandwidth for it in the Runtime function atm, but I can offer two options:
|
In my original issue, I said "chill validators that produce no staking reward". This is the harsher, radical approach. It is easier weight-wise to implement: we can have a A more mild one would be that we let them remain a validator, so that people can nominate them and such, but in the validator snapshot aka. pre-sorting step, we remove them. This is more difficult to implement weight-wise. @gpestana can advise you if the weight will be an issue. |
I do like the idea intuitively, but.. I'd suggest "too few points from X, Y, and Z" instead of "no points" per se, although disputes slashing could be replaced by negative points, which maybe confuses this. Anyways.. As a rule, relay chain block production matters somewhat, but you can miss your few slots easily. I'd ignore backing rewards because approvals matters far more and backing must never be more benefitial than approvals. See polkadot-fellows/RFCs#119 Approvals require the median computation given in polkadot-fellows/RFCs#119 but then removing would become a simple majority vote. yikes! Instead, we could remove when the same computation finds too poor an approval score at the 2/3rd percentile. I'll caution this runs like 1 full session later, so occurs only after one full session. We've no rewards for grandpa or beefy, but maybe in the future, and they must work like approvals via median computations. As RFCs, I'd suggest merging this into polkadot-fellows/RFCs#119 or making a followup RFC, because likely this should use the approval rewards, at least initially. |
Another possible alternative: A new extrinsic, This would be straightforward to implement, and since such cases should be rare, there’s no need for on-chain logic to actively detect them. A side effect of this approach is that, say if we set x = 2, any validator with 0 points for 2 eras can be chilled by anyone until those 0-point eras are cleared from the state. This could serve as a nice punishment; however, if this is a problem, it should be trivial to store the era in which a validator set their validation intention and only check for zero-point eras occurring post that. |
@michalisFr reported another validator that might have gone permanently offline but never removed their intention to validate.
|
As reported recently by @eskimor, some both Polkadot and Kusama have some bad validators that produce no blocks. This could be because of slow hardware.
In principle, these validators are sub-optimal to nominate, because they produce no staking rewards. So we hope nominators will filter them out. A mechanism like polkadot-fellows/RFCs#104 could help further.
Nonetheless,
pallet-staking
can become slightly more proactive, and itself chill validators who were elected for a number of eras, but didn't gain any points.This help Polkadot be super sure that the average block time is not going above 6s.
Potential solution: see #5674 (comment)
The text was updated successfully, but these errors were encountered: