The BaseGauge contract implements a boost mechanism where users can receive increased rewards based on their veToken balance. The boost multiplier is meant to range from 1x (minimum) to 2.5x (maximum). The GaugeController contract is responsible for managing gauge parameters and configurations.
In BaseGauge#constructor, the maxBoost parameter is incorrectly initialized as 25000 while minBoost is set to 1e18. When BoostCalculator#calculateBoost attempts to calculate boostRange = params.maxBoost - params.minBoost, the subtraction will revert due to underflow since 25000 - 1e18 is negative.
Critically, while BaseGauge has a setBoostParameters function to fix this issue, this function can only be called by the controller. However, the GaugeController contract does not implement any function to call setBoostParameters on gauges, meaning there is no way to correct the initialization error once a gauge is deployed.
This creates a permanent denial of service condition as there is no recovery path to fix the incorrect boost parameters.
High. The contract becomes permanently unusable as:
Core functionality reverts due to incorrect boost parameters
No mechanism exists to correct these parameters
New gauges must be deployed to fix the issue, disrupting the entire gauge system
High. This affects every transaction that involves reward calculations and there is no way to avoid or fix the issue without redeploying the contracts.
User Alice attempts to stake tokens in the gauge by calling stake(100e18)
stake function has updateReward modifier which calls _updateReward
Inside _updateReward:
Transaction reverts due to underflow in boost calculation
Admin attempts to fix by calling setBoostParameters through controller
No such function exists in GaugeController
Gauge remains permanently broken
Fix the initialization values:
Add boost parameter management to GaugeController:
This ensures both correct initialization and the ability to adjust parameters if needed.
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.