The governance contract allows users to create proposals without any restrictions or cooldown periods after a proposal fails (eg. if proposal have more false vote). This means that if a user's proposal is rejected, they can immediately create another proposal, and this process can be repeated indefinitely. This lack of a cooldown mechanism can lead to spam, governance fatigue, and unnecessary consumption of blockchain resources (e.g., gas and storage).
The issue is present in the propose function of the governance contract. Specifically, there is no mechanism to enforce a cooldown period or restrict users from repeatedly creating proposals after a failure (Proposal has more false vote).
Affected Code:
Spam Proposals: Malicious or overly enthusiastic users can flood the governance system with proposals, overwhelming the process and making it difficult for legitimate proposals to gain attention.
Wasted Resources: Each proposal creation consumes gas and storage on the blockchain, leading to unnecessary costs for the network and its participants.
Governance Fatigue: Continuous spam proposals may discourage other users from participating in governance, reducing the effectiveness of the system.
Potential Abuse: A single user could repeatedly submit proposals to disrupt governance or manipulate the system.
Users should be restricted from creating new proposals immediately after a failed proposal. A cooldown period, staking requirement, or other mechanism should be in place to prevent spam and abuse.
Users can create proposals repeatedly without any restrictions, even if their previous proposals fail.
Manuel Review
To address this issue, consider implementing one or more of the following mechanisms:
Proposal Creation Cooldown:
Introduce a cooldown period after a user's proposal fails, during which they cannot create another proposal.
Example:
Proposal Deposit:
Require users to lock a deposit when creating a proposal. If the proposal fails, the deposit is forfeited or burned.
Example:
Reputation System:
Track the success rate of proposals by each user. If a user's proposals consistently fail, restrict them from creating new proposals.
Example:
Minimum Time Between Proposals:
Enforce a minimum time interval between proposals from the same user.
Example:
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.