Amount is added twice in the increase() function of veRAACToken.sol thus doubling the power.
In the increase() function:
_lockState.increaseLock(msg.sender, amount); is called first in which:
additionalAmount is added to lock.amount. and lock is stored in storage for Lock storage lock = state.locks[user];.
After that these lines are executed in the increase() function:
Here we can see that, amount is again added to userLock.amount in _votingState.calculateAndUpdatePower() to calcuate newBias which is used as power.
Thus, amount is added twice one in increaseLock() of LockManager and other in increase().
User gains twice the power while increasing the lock which shouldn't be the case. Voting power is very important for governance and proposal voting in this protocol which is implemented in Governance.sol and this issue may impact the protocol severely. Thus the high severity.
Also, voting power of a user is used in calcuating rewards in FeeCollector.sol, and in BoostController.sol for boost calculation.
Manual Analysis
Update voting power before increasing the lock or remove + amount in the _votingState.calculateAndUpdatePower() function while calculating newBias.
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.