Past defeated proposals can be later executed if there is a decrease in the quorum. This issue was found in Openzeppelin and is also applicable here.
When the voting period is over and there are more yes votes than no votes, but the quorum requirement is not reached, meaning not many people voted, then in the execute function inside the state, we check for this scenario and mark the proposal as defeated.
Now later if the governance decide to lower the quorum using setParameter function then it is possible that this transaction will get executed when no one is expecting.
totalSupply of veRAAC is 1 million, current quorum requirement is 25% which is 250k.
someone send a proposal to donate 1 million from the protocol treasury to some charity.
100k veRAAC is votes for yes and 50k is votes for no
The execute function will mark proposal as defeated because of the quorum requirement, we only have a 15% quorum but we require 25%.
Governance decide to lower the quorum requirement by 15% after 6 months of this proposal.
now after 6 months if someone executes this proposal with that proposal ID then this will pass. At this time protocol might not be that healthy just to give away million $ to charity.
This is a high-impact bug because governance is a huge part of the system and it can’t afford to execute something unknowingly.
Avoid lowering quorum requirements if a past proposal was defeated for lack of quorum.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.