-
Notifications
You must be signed in to change notification settings - Fork 1.6k
provisioner: prioritize backing votes for disputes #6274
Comments
@BradleyOlson64 This should be fairly simple as well. |
Not only prioritize, but make sure there are always imported - even if the chain already knows about some valid votes for those validators. |
The first issue I'm seeing is that we import votes to the provisioner from the disputes subsystem in an order that can't account for backing votes specifically. It only knows about which disputes to prioritize, not which votes to prioritize. I think a solution might be to set up another call similar to |
Heads up: in #6249 I implemented the following logic
This makes it easier to implement slashing with our currrent design and should be fine considering
That means if we select a backing vote (if it's not present on chain already), we should not select an explicit "Valid" vote in the same set from the same validator.
My understanding is vote selection in provisioner (in the new version) happens in
|
The issue was closed, but I don't see it being actually fixed or am I missing something (and the test is missing)?
polkadot/node/core/provisioner/src/disputes/prioritized_selection/mod.rs Lines 384 to 387 in 6a5d31f
|
Another way to solve this problem is to ensure backers never participate in disputes in the first place as they shouldn't. But that requires the runtime being able to tell who's a backer easily, which might be harder to achieve. |
As discussed on the call, we can get away with this problem by not allowing importing disputes votes without backing threshold backing votes. We already check it's non-empty in #6249, but we can also check for a threshold. |
Actually, checking for a minimum_backing_votes is a bit tricky. We'd need to know the validator group size, which is not readily available in the disputes context. It would still be nice for the provisioner to include the remaining backing votes even if explicit "for" votes has been placed on chain, so we can slash as many backers as possible. Provisioner has the information about kinds of valid votes. |
Yes, let's modify the filtering in the provisioner to never filter backing votes, even if the chain knows about them. |
@BradleyOlson64 We do indeed filter votes and not only full disputes here. We need to modify this to never filter backing votes, even if the chain knows about valid votes for that validator. |
This should do the trick #6494 |
See #6249 for the context.
With our slashing design centered around backers for both valid and invalid cases and in the light of #6249, we should always prioritize missing backing votes when selecting votes for a dispute set.
The text was updated successfully, but these errors were encountered: