The BoostController
contract incorrectly sets workingSupply
equal to only the latest user's boost, instead of baseSupply + totalBoost
. As baseSuuply
is also never set, it is impossible to calculate the correct workingSupply
. This causes all accumulated boosts from previous users to be erased, directly affecting the reward multiplier calculations for RAAC's lending pools.
In the BoostController's updateUserBoost
function:
The contract correctly tracks totalBoost
but incorrectly sets workingSupply
. As workingSupply
is used to calculate the effective boost for reward distributions in RAAC's lending pools, this causes all previous user boosts to be ignored.
Another issue is that the baseSupply
is never set.
Let's check the NatSpec from workingSupply:
Let's take a look at the following scenario describing the correct and incorrect case:
Besides, sponsor(@Alex Werner) confirmed: "the intended behavior is the one described with base supply + boost".
There is also a second issue: theremoveBoostDelegation
logic:
If a delegation exists, totalBoost
MUST have increased by that amount when it was created. Therefore, checking if totalBoost >= delegation.amount
is redundant.
The workingSupply
check is entirely incorrect since workingSupply
should be derived from baseSupply + totalBoost
, not manipulated directly.
Protocol's economic model is severely compromised as the boost mechanism fails to properly incentivize long-term token locking
Unfair advantage to the last user updating their boost as they effectively capture the entire boost allocation
Reward calculations for veRAACToken holders will only consider the last user's boost, erasing multipliers from all previous lockers
The protocol's boost incentivization mechanism becomes ineffective as early adopters lose their boost benefits
Manual Review
When updating user boost, set the workingSupply
and baseSupply
properly:
Perform the same logic in removeBoostDelegation
:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.