The FeeCollector's claimRewards
function incorrectly updates user reward tracking by setting it to the total distributed amount instead of adding the claimed amount, causing users to lose access to future rewards.
I should also note that the contract have a function _updateLastClaimTime
that looks should be called in claimRewards but isn`t used.
`
When setting userRewards[user] = totalDistributed:
The user's share is calculated based on total distributed rewards
But their checkpoint is set as if they claimed all rewards ever distributed
Future calculations share - userRewards[user] will revert
Users lose access to future rewards after their first claim
Manual code review
Track actual claimed amounts instead of total distributed
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.