In the lock function in veRAACToken.sol, it is not checked if the user already has a position open. so if a user calls the function again, the previous position is overwritten and thus cauing loss of user funds.
The lock Function fails to check if the user already has a position and allows them to create another position. The user will expect that the new position amount to be added to the previous, but the protocol overwrites the old position.(the createLock function overwrites the position).
user loss of funds
manual review
add the following check in the lock function in veRAACToken.sol
if (_lockState.locks[msg.sender].exists) revert;
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.