The poolBoost.workingSupply in updateUserBoost function is being set to the user's new boost amount instead of the total boosted weight within the pool. Every time an user updates their boost, poolBoost.workingSupply is reset to only that user's new boost instead of aggregating all active users’ boosts.
According to the comment,
In updateUserBoost, the function
1 - Gets the storage of PoolBoost and UserBoost.
2- Gets the user's oldBoost from userBoost.amount.
3 -Calculate the newBoost of the user.
4- Updates the userBoost.amount with newBoost
5 - Incorrectly updates the poolBoost.workingSupply with the user's newBoost.
The function getPoolBoost returns wrong workingSupply value. If the poolBoost.workSupply is used for reward distribution in the future, then could lead to inaccurate boost calculations for users, impacting their reward distribution.
If updateUserBoost is to update the user's workingSupply after delegateBoost, the recipient's workingSupply keeps being replaced instead of aggregating every delegateBoost.
Manual code review
It should properly update the workingSupply like how totalBoost is updated:
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.