Closed marcopeereboom closed 4 years ago
For multiple choice votes use https://en.wikipedia.org/wiki/Instant-runoff_voting which allows voters to rank their choices in order of preference so that the https://en.wikipedia.org/wiki/Spoiler_effect can be avoided. Video explanation here https://www.youtube.com/watch?v=3Y3jE3B8HsE
Multiple choice voting is broad spectrum of use cases.
For a special subset of budget voting cases we can have a strictly ordered set of choices, e.g. "Give Marco (0, 10, 100, 1000) DCR". Vote for a choice also votes for all "smaller" choices. The biggest choice to break quorum wins.
This is different from IRV in that the ordering is the same for all voters. At a quick 1 minute glance at Wikipedia this eliminates the spoiler effect entirely, unlike IRV which only reduces it. When it doesn't make sense to fund a proposal by less than X amount of money, the choice after zero must be the minimum amount that makes sense, e.g. "Give Marco (0, 1000, 1500, 2000) DCR".
Other cases where it's impossible to define a strict order a vulnerable to voter fragmentation (disorganization) that must be minimized by researching voting models like linked instant-runoff voting.
Multiple choice voting allows us to implement a second phase of RPF-like process (#558).
Agree with @raedah on Instant runoff voting. But like bee said we can also have special types of votes when it comes to budgeting.
So two types of multiple choice questions.
Marco Degeri Bee
Send 10 DCR Send 100 DCR Send 500 DCR Send 1000 DCR.
The method for calculating vote results that was introduced in #819 will need to be updated once support for multiple voting options is added.
Interesting possible issue with multiple choice votes was highlighted by @RichardRed0x in April Journal:
AE token holders will vote for 0, 5, 10, 15 or 20% of the block rewards to go to this foundation - as long as more than 50% of AE votes for a share greater than 0%, the percentage will be set using a weighted average of the votes for options greater than 0%. This will leave some AE holders who don’t want the block reward funding with a difficult choice of whether to vote for 0% and hope to be in the majority (and otherwise be ignored) or to vote for 5% to lower the weighted average in the case that the proposal is approved.
We are not going to do multiple multiple-choice votes. You guys are nuts, the amount of code and corner cases is endless. This is getting pretty meta.
This has been closed by the addition of runoff votes in #1054.
We need the ability to vote on multiple-choice proposals. These proposals need to offer the user the ability to choose an option and an explicit "against" vote. E.g. 1 Send marco 100DCR 2 Send marco 1000DCR 3 Screw marco
We must have a NO condition (typically the last bit). Bits must be sequential (like 0b1110 is a valid mask and 0b1010 is not). Not voting is an abstain.
We have similar code for this in dcrd and ideas/code can be lifted from here: https://github.com/decred/dcrd/blob/master/blockchain/votebits_test.go https://github.com/decred/dcrd/blob/master/blockchain/thresholdstate.go#L329 https://github.com/decred/dcrd/blob/master/blockchain/votebits.go#L96