ScopeLift / flexible-voting

💪🗳️ Flexible Voting – A Powerful Building Block for DAO Governance
https://flexiblevoting.com
MIT License
85 stars 8 forks source link

Revisit GovernorCountingFractional's COUTING_MODE #36

Closed davidlaprade closed 1 year ago

davidlaprade commented 1 year ago

Our current COUNTING_MODE designation is:

https://github.com/ScopeLift/flexible-voting/blob/ef984081871b98f0e61870ae6905730f9f3910bd/src/GovernorCountingFractional.sol#L37

Per OZ's IGovernor:

 * There are 2 standard keys: `support` and `quorum`.
     *
     * - `support=bravo` refers to the vote options 0 = Against, 1 = For, 2 = Abstain, as in `GovernorBravo`.
     * - `quorum=bravo` means that only For votes are counted towards quorum.
     * - `quorum=for,abstain` means that both For and Abstain votes are counted towards quorum.

So, our COUNTING_MODE is telling people that only FOR votes will be counted towards quorum. Accordingly, that's exactly what we do:

https://github.com/ScopeLift/flexible-voting/blob/ef984081871b98f0e61870ae6905730f9f3910bd/src/GovernorCountingFractional.sol#L67-L71

But do we want this behavior? I don't remember ever making a principled decision about it. Were we just following the bravo default? Is this an artifact of a previous implementation (e.g. in which abstain votes were just inferred from the params passed in)? Either way, this should at least be documented.