penaltyAmount levied on early claimers is also considered as reward
Users can claim their reward early using fjordStaking:claimReward() with _isClaimEarly = true as input. While claiming early, they pay 50% of their unclaimedRewards as penaltyAmount.
If we see above code then we can see, only rewardAmount(ie 50% of unclaimedReward) is transfered to msg.sender, which means penaltyAmount is still in the stakingContract but totalRewards is reduced by rewardAmount + penaltyAmount
Now this is a problem because totalRewards is used for calculating pendingRewards in _checkEpochRollover(). Any extra amount of fjordToken in stakingContract is considered as reward, which is calculated by subtracting totalRewards from balanceOf stakingContract, and we've seen above penaltyAmount is still in the contract but totalRewards is reduced by penaltyAmount, which means penaltyAmount is extra token and will be considered as reward
penaltyAmount will also be distributed as reward to stakers
Manual Review
Send penaltyAmount to owner or treasury of the protocol in claimReward()
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.