Core Contracts

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

Incorrect totalSupply calculation in DebtToken

Summary :

The total supply should reflect the total debt including accrued interest, which means it should use rayMul with the current index, not rayDiv.

Vulnerability Details :

Using rayDiv reduces the total supply value instead of increasing it with accumulated interest, which is incorrect for a debt token.

In DebtToken.sol, totalSupply is calculated using rayDiv:

function totalSupply() public view override returns (uint256) {
return super.totalSupply().rayDiv(ILendingPool(_pool).getNormalizedDebt());
}

While individual user debt is correctly calculated using rayMul:

function balanceOf(address account) public view override returns (uint256) {
return super.balanceOf(account).rayMul(ILendingPool(_pool).getNormalizedDebt());
}

This creates inconsistency between:

  • Individual debt calculations (correct)

  • Total protocol debt (incorrect)

Example scenario:

  1. Total debt = 1000 tokens

  2. Interest index = 1.1

  3. Current implementation: 1000.rayDiv(1.1) ≈ 909 tokens

  4. Correct calculation: 1000.rayMul(1.1) = 1100 tokens

  5. Results in 191 tokens of unaccounted debt

Impact :

The current rayDiv implementation would lead to incorrect total debt calculations and potential protocol accounting issues.

Tools Used :

Manuel review.

Recommendations :

Update totalSupply to use rayMul.

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

DebtToken::totalSupply incorrectly uses rayDiv instead of rayMul, severely under-reporting total debt and causing lending protocol accounting errors

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

DebtToken::totalSupply incorrectly uses rayDiv instead of rayMul, severely under-reporting total debt and causing lending protocol accounting errors

Support

FAQs

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