The BoostController::updateUserBoost function is responsible for recalculating and updating the boost for a user in a specific pool. However, there is a issue where workingSupply is directly set to newBoost, rather than being adjusted incrementally. This could result in incorrect reward calculations or governance weight distributions.
In the function BoostController::updateUserBoost, the workingSupply is set directly to newBoost, leading to incorrect calculations of active boosts in a pool. Unlike totalBoost, which is updated incrementally, workingSupply is being replaced outright, which does not correctly account for cumulative adjustments from multiple users updating their boosts.
https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/governance/boost/BoostController.sol#L198
This issue lead to inaccurate tracking of the working supply in a pool, potentially affecting:
Reward distributions, where incorrect working supply values result in misallocated incentives.
Governance weight calculations, where influence is incorrectly distributed due to boost mismanagement.
Pool performance metrics, which might not reflect the actual number of active boosted users correctly.
Manual code review
Incrementally Adjust workingSupply Like totalBoost:
Modify workingSupply to be adjusted incrementally, rather than being set directly:
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.