When users claim rewards, they have two options: they can either claim early, incurring a 50% penalty on their rewards, or they can choose to wait 3 epochs to receive the full amount. However, if users change their mind after deciding to wait for their full rewards, or if they accidentally select the option to wait, they are unable to reverse their decision and cannot cancel their claim receipt to access their funds immediately.
https://github.com/Cyfrin/2024-08-fjord/blob/0312fa9dca29fa7ed9fc432fdcd05545b736575d/src/FjordStaking.sol#L616
https://github.com/Cyfrin/2024-08-fjord/blob/0312fa9dca29fa7ed9fc432fdcd05545b736575d/src/FjordStaking.sol#L662
The claimReward()
function allows users to either claim their rewards early, incurring a 50% penalty, or choose to wait 3 epochs to receive the full reward amount. When a user opts to wait, a ClaimReceipt
is created with the currentEpoch
and the amount of unclaimed rewards. However, once this ClaimReceipt
is issued, users cannot reverse their decision. If a user later decides they want to claim their rewards early or if they mistakenly select the option to wait, there is no mechanism to cancel or modify the ClaimReceipt
.
The completeClaimRequest()
function strictly enforces this waiting period by requiring that the currentEpoch
is at least 3 epochs greater than the requestEpoch
in the ClaimReceipt
before allowing a claim to be completed. This rigid structure locks users into their initial decision without any flexibility to alter it. As a result, users are effectively unable to access their rewards immediately once they have committed to the waiting period, even if they change their mind. This inflexibility can lead to user dissatisfaction and potential disruption in accessing funds when needed.
The impact of this issue is medium, as it restricts users' flexibility to access their funds immediately after choosing to wait for full rewards, potentially leading to user frustration. The likelihood of this issue occurring is also medium, given that users may frequently change their mind or accidentally select the wrong option when claiming rewards.
Manual review.
Consider adding an option for users to clear their claim receipts.
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.