BoostController::getBoostMultiplier attempts to calculate the current boost multiplier for a user in a pool. The problem is, baseAmount is not properly scaled before division, which could lead it into rounding down to zero in small (not so small too actually) amounts.
uint256 baseAmount = (userBoost.amount * 10000) / MAX_BOOST;
MAX_BOOST is defined as 25000.
When baseAmount rounds down to zero, the following return statement return (userBoost.amount * 10000) / baseAmount;
will revert due to division by zero.
Resulting in the failure of the calculation of current boost multiplier for a user in a pool.
User’s current boost multiplier in a pool cannot be calculated in small boost amounts, breaking the application logic.
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.