The calculateNewEmissionRate function allows the benchmarkRate to override utilization-based emission adjustments, causing emission rates to deviate from intended dynamic behavior. This disrupts the protocol’s ability to incentivize borrowing/deposits accurately based on system utilization.
The calculateNewEmissionRate function adjusts the emission rate (emissionRate) based on the system’s utilization rate. However, the logic incorrectly prioritizes the benchmarkRate over utilization-driven adjustments, leading to unintended outcomes.
High Utilization (80%):
emissionRate = 100, adjustment = 5, benchmarkRate = 150.
Expected: 100 + 5 = 105 RAAC/block.
Actual: max(105, 150) = 150 RAAC/block.
Low Utilization (60%):
emissionRate = 100, adjustment = 5, benchmarkRate = 80.
Expected: 100 - 5 = 95 RAAC/block.
Actual: min(95, 80) = 80 RAAC/block.
The benchmarkRate overrides the utilization-based adjustment, rendering the dynamic emission logic ineffective.
Protocol Instability: Emission rates will not align with system utilization, leading to misaligned incentives.
Economic Imbalance: Over- or under-minting of RAAC tokens due to incorrect rates.
Stagnation Risk: If benchmarkRate is outdated, emission rates become unresponsive to real-time utilization changes.
manual review
Remove the benchmarkRate comparison so that the increasedRate can be used. This recommendation might not be what the protocol intend to do yet, comparing the increasedRate to the benchmarkRate will always lead to the benchmarkRate being used instead of the increasedRate
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.