In veRAACToken::increase, the voting power calculation adds the amount parameter to the existing userLock.amount after the lock has already been increased through LockManager::increaseLock. This results in double-counting the additional amount when calculating voting power, as the lock's amount is updated before the voting power calculation.
User creates initial lock with 1000 tokens
User calls veRAACToken::increase with 500 additional tokens
LockManager::increaseLock updates lock.amount to 1500
_votingState.calculateAndUpdatePower uses (1500 + 500) = 2000 for calculation
Voting power is calculated based on 2000 tokens instead of correct 1500
Relevant code snippet:
Add to veRAACToken.test.js:
High Severity - Creates artificially inflated voting power that:
Distorts governance voting outcomes
Allows users to gain disproportionate influence
Violates core tokenomics assumptions
Correct Approach: Use updated lock amount directly
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.