The BaseGauge::_applyBoost function incorrectly divides by 1e18 precision when calculating boosted weights, while both baseWeight and boost values use 1e4 (BPS) precision. This results in division by 1e18 instead of 1e4, causing the final boosted weight to be 1e14 times smaller than intended. This severe precision error makes user rewards practically non-existent even with proper veToken balances.
Test demonstrating the issue:
Add this test case to BaseGauge.test.js:
Comment out this portion in MockBaseGauge.sol:
High severity - All user rewards are effectively nullified due to precision loss in boost calculations. This completely breaks the core incentive mechanism of the protocol.
Fix scaling in boost calculation
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.