The cancel() function in the governance contract does not check whether the proposal has already failed (Ended) before allowing cancellation. This means a proposal that has already failed due to insufficient votes or quorum can still be canceled after voting has ended, leading to unnecessary gas usage, governance confusion, and potential spam attacks.
The function does not check if the proposal has already failed before allowing cancellation.
This allows users to cancel a failed proposal even after the voting period has ended.
1️⃣ Gas Wastage & Network Congestion
Users may waste gas fees by canceling an already failed proposal, even though the action has no effect.
This can lead to unnecessary transactions on the blockchain, increasing congestion.
2️⃣ Governance Transparency Issues
Failed proposals should remain as Failed to maintain clear governance history.
Canceling them after they have already failed might confuse users into thinking the proposal was manually rejected.
3️⃣ Spam Attack Risk
A malicious user could create multiple failed proposals and then cancel them to manipulate governance tracking.
This can flood governance logs and make proposal history harder to audit.
Manuel Review
To prevent this issue, add a check to ensure that failed proposals cannot be canceled after voting has ended:
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.