The contract incorrectly distributes rewards by dividing them among all players instead of just those who have claimed their rewards.
The current implementation calculates the reward share based on the total number of players i_players.length
, regardless of whether they have claimed their rewards. The code snippet :
uint256 claimantCut = (remainingRewards - managerCut) / i_players.length;
Players who haven't claimed their rewards are factored into the distribution, causing the actual claimants to receive a smaller portion of the rewards.
Manual Code Review: None, just read the contract couple of times.
Ensure that the reward distribution calculation only includes players who have claimed their rewards. Use the length of the claimants
array for the division:
uint256 claimantCut = (remainingRewards - managerCut) / claimants.length;
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.