The StabilityPool contract's rewards distribution mechanism allows users to exploit the system by depositing and withdrawing multiple times to drain rewards. The current implementation does not differentiate between long-term and short-term depositors, leading to potential reward manipulation.
The calculateRaacRewards function distributes RAAC rewards based on the user's current deposit relative to the total deposits. This approach does not account for the duration of deposits, allowing new users to earn the same rewards as long-term depositors. Users can repeatedly deposit and withdraw to drain the pool rewards without maintaining a long-term stake in the pool.
Long-term depositors receive no additional benefit compared to short-term depositors, leading to potential dissatisfaction and loss of trust.
The RAAC rewards pool can be quickly drained by users exploiting this mechanism, reducing the incentive for future participation.
Manual
Introduce a mechanism to weight rewards based on the duration of deposits. This could involve tracking the deposit time and adjusting rewards accordingly.
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.