User's earned gauge rewards are incorrectly calculated.
A user's gauge rewards are calcualted in earned().
getUserWeight() returns the user's current weight including boost and is in basis point (10000), getRewardPerToken() returns the current reward per token, userStates[account].rewardPerTokenPaid is updated in _updateReward() based on the value based on getRewardPerToken(), both getRewardPerToken() and userStates[account].rewardPerTokenPaid are in the reward token's decimal.
Therefore, the gauge rewards are calculated as user weight * (rewardPerToken - rewardPerTokenPaid) / 1e18, the calculation is wrong:
To apply user's boosted weight, 10000 should be used as a divisor;
User's balance should be mulitplied with reward per token.
User receives much less rewards than expected.
Manual Review
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.