increase()
function is used to increase locked raac amount. -
The veRAAC amount being minted back to msg.sender is newPower - balanceOf(msg.sender)
.
This logic is incorrect.
Suppose user has 2 addresses addrA and addrB.
user transfer majority of it's raac balance from addrA to addrB.
addrA holding very less balance.
addrA is being used to trigger increase function, putting max amount availabe with addrA in param.
The newPower
will be incremented value of oldPower, decided by function calculateAndUpdatePowe()
.
Problem starts
since balanceOf(msg.sender)
is small; means newPower - balanceOf(msg.sender)
will be large.
Conclusion - with very less transfer of RAAC tokens to contract; user is receiving large amount of veRAAC.
This flaw can lead to problem, with less investment user can have larger veRAAC tokens (higher voting power).
User can get higher voting power with very less investment.
Manual
Change the current architecture of increase()
function.
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.