Early rate$2,400 of senior audit time for $500. Early members keep the rate as it climbs.$2,400 of senior audit time for $500See how →
F-2025-0002·accounting

Invalid update of voting power (bias and slopeChanges)

FixedlendingmonadveToken
TL;DR

The bias variable and the adjustments to slopeChanges did not correctly track the total voting power across vote-escrowed positions, producing inaccurate governance weights and reward distributions.

Severity
HIGH
Impact
HIGH
Likelihood
MEDIUM
Method
MManual review
CAT.
Complexity
MEDIUM
Exploitability
MEDIUM
02Section · Description

Description

The voting-power calculations in BalanceLogicLibrary track each lock as a linear decay from initial voting power down to zero at lock expiry, encoded as bias (current value) and slope (rate of decay). Aggregate voting power is updated by adjusting bias and slopeChanges whenever a lock is created, modified, or ends.

The audit identified incorrect updates in this accounting that produced drift between the recorded global voting power and the true sum of individual lock contributions. The drift compounds over time, so governance votes and reward weights stop reflecting actual user holdings.

03Section · Impact

Impact

  • Governance decisions weighted by voting power become inaccurate.
  • Reward weights distributed by voting power become unfair.
  • The drift is hard to detect without explicit invariant testing.
04Section · Recommendation

Recommendation

Fix the bias and slopeChanges update logic so that the aggregate voting power exactly equals the sum of all individual lock contributions at every block. Add invariant tests covering create, increase, split, merge, and expiry transitions.

Composable Security ID: NRL-6c19a5e-H01. Neverland Money: Fixed. Composable Security: Fix verified during retest.

Status
Fixed
Fix commit
816c394500f1
Fix date
2025-08-22
F-2025-0002