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.