In the BoostController::updateUserBoost
function, the contract incorrectly updates the pool’s workingSupply
by setting it to the user’s new boost value (newBoost
) instead of summing the total working supply including boosts. This results in an incorrect workingSupply
value, which is critical for reward calculations.
First, from IBoostController
we see that PoolBoost
struct is as follows:
Here, this comment is critical for us: ** @param workingSupply The total working supply including boosts*
Now, let’s look at BoostController::updateUserBoost
:
As you can see, the whole pool’s poolBoost is set as this one individual user’s newBoost, which is wrong since the poolBoost’s workingSupply should be The total working supply including boosts.
Following this error, the event PoolBoostUpdated
is also emitted with the wrong poolBoost.workingSupply
value.
State Corruption: The pool’s workingSupply
no longer reflects the true total boost in the pool.
Misleading Events: Off-chain systems relying on the PoolBoostUpdated
event will receive incorrect data.
newBoost should be included in poolBoost.workingSupply, not replace it.
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.