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.