The core issue stems from BaseGauge.sol incorrectly initializing minBoost with 1e18 precision instead of basis points (10000 = 1x). This invalid parameter configuration propagates to BoostCalculator::calculateBoost, resulting in arithmetic overflow, causing DoS of functions that depend on it.
Test Case Showing Valid vs Invalid Initialization:
Key Differentiator:
First test shows correct behavior with proper 10000 (1x) initialization
Second test replicates BaseGauge's flawed initialization pattern, demonstrating failure
High Severity - The root cause is in BaseGauge.sol's initialization logic.
This affects all functions that directly/indirectly depends on the BoostCalculator::calculateBoost logic, causing DoS. The affected functions are:
_applyBoost
getUserWeight
earned
_updateReward
This ensures:
Initialization uses correct basis points format
Parameter validation prevents invalid configurations
BoostCalculator remains unchanged as it's not the source of the bug
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.