Users can utilize their RAACTokens and lock them in the veRAACToken contract to earn rewards. However, currently, there is no check if a user already has an active lock, and when a new one is created, it directly overwrites the current user's _lockState.locks[msg.sender]. Because of this, if a user now wants to withdraw, his initial locked-up RAACTokens will remain stuck in the veRAACToken contract, as he will only withdraw the second lock's worth.
veRAACToken::lock() directly creates a new lock, without doing any checks beforehand:
Stuck user funds with no way of redemption.
Manual review.
Add a check in veRAACToken::lock() to see if there is an active user lock.
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.