The veRAACToken.extend
function fails to update boost controller state after modifying user voting power and total token supply, leading to stale boost calculations. This omission causes reward distributions and governance voting power to be calculated using outdated values until another state-changing operation occurs. The core issue stems from missing synchronization between lock duration extensions and boost parameter updates, violating the protocol's intended ve-token mechanics.
The vulnerability exists in the lock extension mechanism of the veRAACToken
contract where boost controller state updates are omitted after modifying voting power. When users extend their lock duration by calling veRAACToken.extend
(veRAACToken.sol#L286-L302), the protocol:
Updates voting power calculations through _votingState.calculateAndUpdatePower()
Adjusts veToken balances via mint/burn operations
Fails to update boost controller state with new voting power and total supply values
This omission leaves the boost controller's internal state (_boostState.votingPower
and _boostState.totalVotingPower
) stale, as these critical values are only updated in veRAACToken._updateBoostState()
which is not called after balance changes.
The voting power calculations in VotingPowerLib
rely on these boost state values being synchronized with actual token balances. When extended locks modify both user-specific voting power and total supply without updating the boost state, subsequent boost calculations will use outdated values leading to:
Incorrect user boost multipliers in gauge systems
Miscalculations of protocol-wide voting power ratios
Stale total supply values in time-weighted average computations
This creates systemic inaccuracies in reward distributions and governance power calculations until another state-modifying operation triggers an update.
This vulnerability has medium-severity systemic impacts:
Reward Distribution Errors
Gauge systems will calculate boosts using stale voting power data, leading to unfair reward allocations between users who recently modified locks vs inactive users.
Governance Manipulation Risk
Voting power discrepancies allow attackers to temporarily game proposal outcomes by timing lock extensions/withdrawals before boost state updates occur through other functions.
Protocol Parameter Drift
Time-weighted averages accumulate errors from incorrect total supply values, causing gradual miscalculations of system-wide boost ceilings and delegation limits.
While not directly enabling fund loss, this erodes core protocol guarantees about fair reward distribution and accurate governance power representation - critical trust factors for ve-token ecosystems.
Manual Review
Add boost state synchronization after voting power changes in veRAACToken.extend()
:
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.