Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Invalid

Utilization Rate Always Zero Due to Precision Loss

Summary

The calculateUtilizationRate function is responsible for determining the utilization rate of a reserve, which is later used to compute borrow rates. However, due to precision loss in the computation, the function always returns zero. This issue arises from the usage of rayDiv when dividing totalDebt by totalLiquidity + totalDebt, beacause totaDebt always is smaller than sum of totalDebt + totalLiquidty, so result of this calculation always is zero, and utiliztion rate always is 0 despite that it isn't.

Affected Code

function calculateUtilizationRate(uint256 totalLiquidity, uint256 totalDebt) internal pure returns (uint256) {
if (totalLiquidity < 1) {
return WadRayMath.RAY; // 100% utilization if no liquidity
}
// @audit utilizationRate always would be zero
uint256 utilizationRate = totalDebt.rayDiv(totalLiquidity + totalDebt).toUint128();
return utilizationRate;
}

Root Cause

  1. Potential Underflow Issue: always totalDebt is smaller than totalLiquidity + totalDebt, the division result would have a zero value.

Impact

  • Zero Utilization Rate: This results in incorrect interest rate calculations.

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement
inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!