The distributeRevenue
function is responsible for distributing revenue among veRAAC
holders and performance fees. It calls the _distributeToGauges
function, which iterates over _gaugeList
, an unbounded array. If _gaugeList
contains too many elements, the function may run out of gas, causing a Denial of Service (DoS) by making the function uncallable.
The function iterates over _gaugeList
twice:
First loop: Calculates total gauge weight.
Second loop: Distributes revenue to each gauge.
If _gaugeList
contains too many entries, the function may exceed the block gas limit, leading to transaction failure.
If _gaugeList
keeps growing indefinitely, any attempt to distribute revenue will fail.
This completely halts revenue distribution, preventing funds from reaching veRAAC
holders and gauges.
There is no mechanism to batch or paginate gauge distributions, meaning the function can always fail if _gaugeList
becomes too large.
Revenue distribution can become permanently blocked due to excessive gas usage.
Manual Review
Modify _distributeToGauges
to process gauges in batches instead of processing them all in a single transaction.
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.