In the BoostController contract, updateUserBoost function incorrectly sets the pool's entire workingSupply to a single user's boost value, effectively erasing all other users' contributions to the pool's working supply.
The updateUserBoost function updates both individual user boost and pool-wide metrics. However, it incorrectly sets the pool's workingSupply to just the latest user's boost value:
This means each time any user updates their boost, the pool's entire working supply is overwritten with that user's boost and all other users' contributions to working supply are lost
Pool's working supply only reflects the last user who updated their boost and all other users' contributions are erased. The workingsupply is also used in other parts of the code such as the removeBoostDelegation, this will disrupt the pool economics and reward distribution
Manual Review
The working supply should be updated incrementally like totalBoost.
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.