The updateUserBoost function incorrectly overwrites the pool's working supply instead of accumulating it, causing the removeBoostDelegation function leading to incorrect boost accounting across the protocol.
In the BoostController contract updateUserBoost() function, there's a critical mismatch between how working supply is updated and how it's used:
In the removeBoostDelegation, it assumes that the working supply is a cummulative amount
Scenario:
User A gets boost of 1000
workingSupply = 1000
User B gets boost of 500
workingSupply = 500 (overwrites A's boost instead of 1500)
User A tries to remove delegation of 1000
Attempts: 500 - 1000
Results in underflow or incorrect accounting
Incorrect boost accounting & Incorrect reward calculations if based on working supply
accumulate properly the poolBoost.workingSupply.
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.