The FeeCollector contract implements rewards calculation mechanism which takes into consideration user's current voting power and total voting power. User can use his tokens, to claim rewards multiple times, using multiple addresses.
The claimRewards function calls _calculatePendingRewards to calculate rewards for users.
This function uses user's current voting power and total voting power to calculate rewards for user.
To exploit this function user has to:
Create lock (locking his tokens) to get voting power.
Claim rewards.
After the lock expires, send his tokens to other address and create another lock using new address.
Now, using new address the userRewards are equal to zero and user can claim rewards again.
User can use his tokens to claim rewards multiple times claiming more than users who use only one address.
Manual Review, Hardhat
Fix rewards calculation so that user is not able to claim rewards multiple times using different addresses and same tokens.
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.