In the GaugeController
, during reward distribution, the _distributeToGauges
function does not successfully send tokens to the underlying gauges, preventing users from receiving rewards.
The _distributeToGauges
function attempts to distribute rewards by calling IGauge(gauge).notifyRewardAmount(gaugeShare)
.
However, there is no actual token transfer from GaugeController
to the individual gauges.
The notifyRewardAmount
function in the IGauge
contract checks if amount > periodState.emission
but does not receive the tokens, meaning the reward balance remains insufficient.
This results in InsufficientRewardBalance()
being reverted, preventing users from claiming rewards.
No Funds in Gauges: The reward tokens are never moved to the gauges, meaning no rewards can be distributed.
Failed Reward Distribution: Users expecting staking rewards will receive nothing due to insufficient balances in the gauges.
Broken Incentive Mechanism: Without proper distribution, the incentive mechanism for staking and governance participation is disrupted.
Manual review
Ensure Token Transfers Before Notification
Before calling notifyRewardAmount
, explicitly transfer the reward tokens to each gauge:
This ensures that when notifyRewardAmount
is called, the gauge actually has the rewards.
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.