Core Contracts

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

RToken Fails to Properly Scale Token Amounts with Interest Index

Summary

The RToken contract fails to maintain proper scaling of token amounts relative to the interest index throughout its lifecycle, affecting both minting and burning operations. This breaks the core interest accrual mechanism of the protocol.

Vulnerability Details

The contract incorrectly handles scaled amounts in two critical operations:

  1. During Minting (Deposits):

function mint(...) external override onlyReservePool returns (bool, uint256, uint256, uint256) {
// Correctly calculates scaled amount
uint256 amountScaled = amountToMint.rayDiv(index);
// But ignores it and mints original amount instead
mint(onBehalfOf, amountToMint.toUint128());
}
  1. During Burning (Withdrawals):

function burn(...) external override onlyReservePool returns (uint256, uint256, uint256) {
// Calculates scaled amount with interest
uint256 amountScaled = amount.rayMul(index);
// But transfers original amount, ignoring accrued interest
IERC20(assetAddress).safeTransfer(receiverOfUnderlying, amount);
}

Example scenario:

Initial State:
Index = 1.0
User deposits 100 crvUSD

Current Implementation:

  1. Deposit (Index = 1.0):

    • Calculates scaled = 100/1.0 = 100

    • Mints 100 rTokens (incorrect)

  2. Time passes, Index = 1.1

    • User balance shows: 100 1.1 = 110 crvUSD

  3. Withdrawal: ( exact rTokens = 100)

    • Burns 100 rTokens

    • Receives 100 crvUSD (missing interest)

    • Cannot withdraw remaining 10 crvUSD interest

  4. Withdrawal: ( user balance = 110 )

    • Burns 110 rTokens -> will revert

Impact

Users lose accrued interest due to improper scaling

Tools Used

Manual Review

Recommendations

Consistently use scaled amounts throughout the minting and burning cycle to account for any interest accrued

Updates

Lead Judging Commences

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

DebtToken::mint miscalculates debt by applying interest twice, inflating borrow amounts and risking premature liquidations

RToken::burn transfers original deposit amount (amount) to users instead of amount plus interest (amountScaled), causing loss of all accrued interest on withdrawals

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

DebtToken::mint miscalculates debt by applying interest twice, inflating borrow amounts and risking premature liquidations

RToken::burn transfers original deposit amount (amount) to users instead of amount plus interest (amountScaled), causing loss of all accrued interest on withdrawals

Support

FAQs

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