Governance module: ranked choice voting

Hello!

I’d like to add a feature to the Cosmos SDK’s governance module. I’d like for a single proposal to have multiple options that are subject to ranked-choice voting.

I have no coding experience. Any interest in working with me to implement this? Reply here or email gavin@figment.network

1 Like

@Gavin can you describe the tallying procedure for such a voting mechanism?

1 Like

Sure!
Voters rank the candidates in accordance with their preferences. If no candidate receives a majority after the initial count of first-choice votes, the candidate with the fewest number of first-choice votes is eliminated; the ballots supporting the eliminated candidate are then redistributed according to the voters’ ranked preferences indicated on the ballots (ie. second choice becomes first choice). This process continues until a candidate receives a majority of the votes.

Interesting. I can see how this mechanism can have some merit. I have some initial concerns that are outlined in the paper you’ve posted. Specifically:

As a result of ballot exhaustion, the winner in all four of our cases
receives less than a majority of the total votes cast, a finding that
raises serious concerns about IRV and challenges a key argument
made by the system's proponents.

What kinds of proposals do you see benefiting from such a voting mechanism? Also curious on @sunnya97’s thoughts here.

1 Like

Hey Aleks, thanks for engaging. I share those concerns, which I suspect could be mitigated by limiting the number of “candidates.”

As the number of candidates increases, so does the level of ballot exhaustion. For example, San Francisco, which had sixteen candidates listed on the ballot, the rate of ballot exhaustion rate was strikingly high (27.1 percent).

I’ve found it to be difficult to engage folks off-chain for upgrade coordination preferences, so I wrote this as an initial example: https://docs.google.com/document/d/1DkL2LmIEuuHVGrHWIVnWZHBE8IKQWSRVkUEX4Z93uF8/edit?usp=sharing

Perhaps the proton project could benefit from such a voting mechanism (cc: @zaki @jaekwon).

Yo @Gavin I’m very much in favour of some variety of ranked voting, There a few different ways in which ranked ballot votes can be added up to arrive at the likely “common” preference of those involved with voting. I’ve posted some ideas here of how ranked voting could be used with the concept of “counter-proposals” https://github.com/cosmos/cosmos-sdk/issues/4978#issuecomment-527746037

Let me know what you think, I’m probably going to conceptualize some of these details in an ADR.

More though I’d love to rigorously think about and explore which ranked counting methods should be used (reference https://en.wikipedia.org/wiki/Ranked_voting#Different_types_of_systems). I don’t see why multiple systems can’t be implemented and used on a proposal-by-proposal basis. But also I guess it might make sense for each blockchain to just stick to one version of ranked voting (although the sdk can implement them all and allow the blockchain developers to just choose)

I’m open to a call for this discussion if there is any interest.

1 Like

Hey @rigel, I’d love to chat about this with you. I’ve been pre-occupied with the Cosmos Hub 3 upgrade proposal, but I’ll check out the counter-proposal idea this weekend. What is an ADR? Thanks for engaging on this!

ADR = Architecture Decision Record. Let’s chat once you’re free :+1:

1 Like

Typo, FYI–I meant to show a bit more enthusiasm–I’d love to chat with you about this!