Voting Phase

The Voting Phase is the second phase of the community governance process. In the Voting Phase, token holders can vote "For" or "Against" the proposal that passed the Proposal Phase. Only 1 proposal is voted on each generation, and only if it passes the Proposal Phase.

The Voting Phase lasts until a given proposal gets 50% support of the total voting power in that generation (the Majority Threshold), or until 3 days have passed, whichever comes first. If the proposal reaches the Majority Threshold, it is enacted immediately. If the 3 days pass and the proposal has more "For" votes than "Against," it is enacted with a 24-hour delay.

Voting on a Proposal

During the vote phase, any address can choose to vote for or against the proposal. The weight of their support is equal to their total voting power. Voting is managed by the PolicyVotes.sol contract created by the supervisor function from the Proposal phase.

To vote in favor or against a proposal, an address should call the vote(bool _vote) function in the PolicyVotes.sol contract for that generation. To find the PolicyVotes.sol contract for that generation, please see the section on Finding Active Contracts. To change a vote from "For" to "Against", or vice versa, an address can re-call the vote function with the vote changed.

Vote Splitting

For DAOs, multisigs, and other contracts that do pass-through voting, vote totals can also be split using the voteSplit(uint256 _votesYes, uint256 _votesNo). For more information about using this function, see the GitHub documentation.

Vote Phase Ending

The Voting Phase is ended using a "Supervisor Function" in the PolicyVotes.sol contract when a given proposal gets 50% staked support of the total voting power in that generation (the Majority Threshold), or once 3 days have passed. The function called is the execute() function. This function can be called when a given proposal gets 50% staked support of the total voting power in that generation (the Majority Threshold), or when 4 days have passed and the proposal has more "For" votes than "Against" votes. In the latter case, after 3 days, the voting period stops, but the execute() function cannot be called for another 24 hours — hence 4 days.

Regardless of when and if the voting phase starts and ends (depending on when the Proposal Phase ended), the next submission and selection phase will begin at the start of the next generation.

Last updated