I’ve looked over the Governance Portal code, and this looks to be a pretty straightforward change (the devs can correct me here if I’m wrong). We are already using an integer (256 bits on-chain and 32-bits in the JS code) to store the vote number. If we only want to use the 32-bits then we can encode 4 bits per option (max 15 options on a poll + no vote) and give you 32 / 4 = 8 choices available. The bitwise position in the integer can give you the rank choice. IE the lowest 4 bits indicate first choice.
The nice thing about this implementation is that it is backwards compatible with the current first-past-the-post system.
- Add support for ranked choice voting with the Instant-runoff method to determine the winner
- Add support for ranked choice voting with the Borda Count method to determine the winner
- Add support for ranked choice voting with the Condorcet method to determine the winner
- Abstain (I don’t feel I am knowledgable on the subject)