The vote()
function takes a user's voting power based on their veRAACToken balance:
However, when users vote for different gauges, there's no mechanism to track the total amount of voting power they've used across all gauges. The contract only tracks individual gauge votes in userGaugeVotes[msg.sender][gauge]
.
This means a user with X amount of veRAACToken balance could potentially:
Vote with weight 10000 (max) for Gauge A
Vote with weight 10000 (max) for Gauge B
Vote with weight 10000 (max) for Gauge C And so on, effectively multiplying their voting power across multiple gauges.
Users exceed 100% of their voting power across multiple gauges, which could lead to disproportionate influence over the emission distribution.
Manual Review
Track the total voting power used across all gauges for each user and ensure that the sum of a user's votes across all gauges cannot exceed their total voting power.
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.