The RAACMinter
contract currently sets its minimum emission rate too low. Under low utilization conditions, the emission rate can be driven down to a level corresponding to 100 RAAC tokens per day, instead of the intended 1000 RAAC tokens per day. This misconfiguration may lead to insufficient token emissions, adversely affecting protocol incentives and economic stability.
The contract defines the minimum and maximum emission rates as follows:
Current Values (Per Block):
minEmissionRate: Approximately 0.013888888888888888e18 per block (100 RAAC/day) -->>$ 37.19
maxEmissionRate: Approximately 0.277777777777777777e18 per block (2000 RAAC/day) -->>$ 743.90
Typical emissionRate: Around 0.138888888888888888e18 per block (roughly 1000 RAAC/day under balanced conditions -->>$ 371.95
Initial State:
Assume the system is operating normally with an emissionRate near the intended 1000 RAAC per day value. The benchmarkRate is set to this level, and the system is targeting a utilization of 70%.
Low Utilization Scenario:
Suppose that due to lower than expected borrowing (or higher deposits), the system utilization drops significantly below the 70% target.
The calculateNewEmissionRate()
function will compute a decrease in the emissionRate based on the adjustment factor.
If the decrease drives the new rate below the current minimum, the contract enforces the lower bound by setting:
Resulting Values:
With the current configuration:
minEmissionRate = 100 * 1e18 / BLOCKS_PER_DAY ≈ 0.013888888888888888e18 per block.
Over one day (7200 blocks), this results in:
In USD terms (as per the provided estimates), this is approximately $37.19 per day.
Intended Behavior:
The audit suggests that the minimum should be set 10 times higher (i.e., 1000 RAAC per day) to maintain proper incentives. With the corrected configuration:
Correct minEmissionRate = 1000 * 1e18 / BLOCKS_PER_DAY, which equals approximately 0.138888888888888888e18 per block.
Over one day, this results in 1000e18 RAAC tokens minted, roughly equating to $371.95 per day.
This POC demonstrates that under low utilization conditions, the current configuration forces the system to emit far fewer tokens than intended, as the emission rate bottoms out at a much lower threshold.
Minimum Rate: 100 RAAC/day = 0.01388 RAAC/block
Maximum Rate: 2000 RAAC/day = 0.2777 RAAC/block
Initial Rate: 1000 RAAC/day = 0.1388 RAAC/block
The minimum rate represents just 10% of the initial emission rate and 5% of the maximum rate, creating an asymmetric risk profile.
The low minimum emission rate may result in insufficient token rewards, reducing the incentive for participation and undermining the protocol’s economic model.
Manual Review
Increase the minimum emission rate to 1000 RAAC per day (i.e., set minEmissionRate to 1000 * 1e18 / BLOCKS_PER_DAY
) to ensure sufficient token rewards even during low utilization periods. This adjustment will help maintain proper protocol incentives and economic stability.
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.