Skip to content

Vote polls: yes/no poll kind with supermajority and minimum voting power (moderation teams A2) #4875

Description

@QuantumExplorer

Part of #4865 (decentralized moderation teams). Item A2 of the PR split. Wave 1: no dependency, can start now.

Summary

Add a yes/no masternode vote poll kind, resolved by a supermajority of yes plus no with a minimum amount of cast voting power. It serves stage 1 of a challenge ("replace the incumbent?") and charter amendment votes.

Decisions implemented: D21, D41 in #4865.

Current behaviour

VotePoll has only the contested-document variant. YesNoAbstainVoteChoice (YES, NO, ABSTAIN) already exists in packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs but nothing uses it. Masternode voting power is 1 per masternode and 4 per evonode (masternode_vote/transform_into_action/v0/mod.rs).

Scope

  • A new VotePoll variant: a yes/no poll keyed by a resource path chosen by the caller, with a vote window, using YesNoAbstainVoteChoice.
  • Resolution rule, parameters carried by the poll: it passes when yes power is strictly more than two thirds of yes plus no power (2/3 + 1, abstain excluded from the denominator) and yes plus no power is at least the minimum (400 for moderation, evonode 4, masternode 1). Otherwise it fails. Both numbers are poll parameters, so other features can reuse the kind.
  • Storage of votes and tallies, end-date index, stored result (passed or failed with the final tallies), clean-up.
  • check_for_ended_vote_polls dispatches on the variant and records the outcome; the callback that acts on it is filled in by the challenge and amendment PRs.
  • Masternode vote validation accepts the new poll kind, same per-vote cost and prefunded balance rules as today.
  • Proof verification for the poll's queries.

Out of scope

  • Fund amounts and target-contract windows (A3).
  • Opening these polls (H4, H5).

Tests

  • Passes at exactly the threshold and fails one power below it, with abstain votes present in both cases.
  • Fails when yes plus no is below the minimum even with 100% yes.
  • Evonode votes count 4.
  • Clean-up leaves nothing behind.

Coordination

A1 adds another variant to the same enum. Trivial conflict, merge either first.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions