If the admins determine an emergency is happening, they allow users to withdraw their locked veTokens before the lock expires, but not all user states get deleted like during normal withdrawals.
If there's an emergency and the admins allow an emergency withdrawal, users are allowed to redeem their veRAAC tokens for RAAC tokens, before the lock expires:
The issue is that although the function deletes the user's _lockState and _votingState, their _checkpointState is left untouched. The checkpoints state keeps track of each user's voting power, and during normal withdrawals, it is reset:
Essentially, if users emergency withdraw their tokens, the function will not set a new checkpoint with 0 power and they will keep their old checkpoint with full power even though the tokens have been burned and redeemed for RAAC tokens. To give more context, veRAAC tokens are minted when users lock RAAC tokens for long periods of time. The user's _checkpointState is then updated to reflect their new power.
Users will keep their last checkpoint and ve power even during emergency withdrawals when their veRAAC gets burned.
Manual Review
During emergency withdrawals, write a new checkpoint with 0 power just like it is done (and should be done) in normal withdrawals.
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.