distributeRewards has no access control and can be called by anyone
distributeRewards is used to calculate and send emissions to a specific gauge
Reward emissions are fixed per week/month and each gauge receives emissions based on its' weight.
The output of _calculateReward is then passed to gauge.notifyRewardAmount which is responsible for transferring the rewards to the gauge.
Anyone can call distributeRewards until it fills up the periodState.emission variable and hit the reward cap instantly.
!NB Current implementation of notifyRewardAmount does not transfer any funds which is a subject of another submission and is a valid vulnerability itself. This submission relies on the assumption that everything else in the protocol works correctly and this is the only bug.
Unfair reward distribution
Impose access control on distributeRewards
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.