The boost calculation logic returns incorrect values in certain scenarios, potentially leading to users receiving incorrect reward amounts and breaking the intended boost mechanics.
In the BoostController contract's _calculateBoost() function, there is a logical error in how the boost amounts are calculated and returned. The current implementation:
Incorrectly handles cases where boostedAmount < amount
Has inconsistent minimum boost enforcement
Could return unboosted amounts when it should return boosted ones
Users could receive incorrect (lower) rewards than they should
Others might get higher than the maximum allowed boost (2.5x)
amount = 1000
MIN_BOOST = 10000 (1x)
MAX_BOOST = 25000 (2.5x)
Case 1: boostedAmount = 900
Current code returns 1000 (unboosted)
Should return 1000 * MIN_BOOST / 10000 = 1000
Case 2: boostedAmount = 2600
Current code returns min(2600, 2500)
Correct, but reached through the wrong logic path
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.