In the veRAACToken::emergencyWithdraw function, while user locks and voting power points are cleared during an emergency withdrawal, the user’s voting power checkpoint is not reset. This omission results in outdated checkpoint data remaining on-chain even after the user has withdrawn their tokens, leading to inaccurate historical voting power records.
During an emergency withdrawal, the contract clears the user’s lock and voting power data by deleting the corresponding entries from _lockState.locks and _votingState.points. However, the function fails to reset the checkpoint by not calling _checkpointState.writeCheckpoint(msg.sender, 0). This checkpoint is crucial for tracking historical voting power, and its inaccurate state can lead to discrepancies between the user’s actual token holdings and the recorded voting power at specific snapshots.
The stale checkpoint data may lead to inaccurate historical voting power reports, affecting governance decisions that depend on past voting snapshots.
Manual Review
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.