Joystream / Joystream/joystream
Elections: `Announcing` grace period / "snipe" attacks
- Dominant language
- Rust
- Stars
- 1.4k
- Forks
- 116
- PR merge metrics
- No merged PRs in 30d
Description
# Problem
As Joystream has evolved socially, we have seen that many potential council members announce their candidacy in the final moments of the `announcing` period. This seems to happen for a variety of reasons related to availability and also wanting to make sure their election campaign aligns with the current issues of the DAO -- and also probably because they want to see who else has already applied. It also seems probable that the pool of suitable candidates is likely to remain small given how complex the council member role is, and even in the distant future it is somewhat unlikely we will regularly have dozens of interested applicants.
Depending on the level of activity and interest on the DAO and seasons (i.e. public holidays) there can exist situations in which there are no candidates for an election. Typically this will result in the `announcing` period failing due to insufficient candidates. However a bad actor can effectively use this lack of candidate interest to "snipe" the final moments of the announcing period and obtain what are effectively uncontested council seats for a very low stake requirement.
The current system has `Council.minNumberOfExtraCandidates` which can somewhat guard against this but it is still not really sufficient as during an attempted "snipe" sybil accounts could still be used to populate the election to meet this requirement.
# Solution
* Divide the `announcing` period into 2 sections--we will call them `announcing A` and `announcing B`
* `announcing A` would basically act almost the same as the announcing period currently works on mainnnet, and require the minimum number of candidates to have `announced` before the election can proceed to `announcing B`
* If `announcing A` does not get the minimum number of candidates it will be considered a failed election and repeat
* `announcing B` would not have any further requirements to be "successful" but would provide a time buffer for other candidates to apply (for the sake of simplicity we could just call `announcing B` the "Announcing Grace Period")
This approach would likely safeguard against "snipe" attacks by making last minute applications less effective.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.