The RAAC reward distribution mechanism is unfair and rewards can be easily stolen by depositing a relatively big amount of rTokens. The attack can be repeated until there are no rewards left.
On StabilityPool::deposit and withdraw the rewards since last reward distribution are minted to stabilityPool
.
On withdraw the raacRewards
are calculated and transferred to msg.sender.
The calculateRaacRewards calculates the user rewards as a percent of user's deposit from total deToken supply.
An user can wait until an satisfactory amount of rewards are accumulated in stabilityPool
or are pending to be minted and can deposit and withdraw to get rewards even if he deposited for only one block. While nonReentrant
modifier prevent the 'flashloan' attack vector, a malicious user can deposit and withdraw multiple times until there are no rewards left.
RAAC rewards can be easily stolen.
Implement a time based reward sistem. The longer an user holds deToken, the more rewards per deposited token he should get. Consider MasterChef as an example.
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.