Core Contracts

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

Inconsistent Maturity Date Validation Leading to Early Redemption Vulnerability

Summary

The contract’s redemption mechanism relies solely on the MATURITY_DATE to determine whether tokens can be redeemed. However, there is no enforcement ensuring that the MATURITY_DATE is aligned with or exceeds the auction's endTime. This discrepancy can allow users to redeem tokens prematurely if the MATURITY_DATE is set lower than the endTime.

Vulnerability Details

Maturity Date Check:
The function isRedeemable() only verifies that block.timestamp >= MATURITY_DATE. It does not compare or ensure that the MATURITY_DATE is equal to or later than the auction’s endTime.

  • Early Redemption Risk:
    If the MATURITY_DATE is set to a timestamp before the auction’s endTime, users will be able to redeem their tokens before the auction has actually concluded. This creates an inconsistency in the intended lockup period and could disrupt the economic balance or fairness designed for the auction process.

  • Potential Misconfiguration:
    Without proper validation, the MATURITY_DATE might be misconfigured during contract deployment or upgrades, leading to unintended early redemptions.

Since this will be only possible if admin wrong input. severity is Low

function isRedeemable() public view returns (bool _redeemable) {
_redeemable = (block.timestamp >= MATURITY_DATE);
}
function redeem(uint amount) external nonReentrant {
if (!isRedeemable()) {
revert BondNotRedeemable();
}
if (amount == 0) {
revert ZeroAmount();
}
uint256 totalAmount = balanceOf(msg.sender);
if (amount > totalAmount) {
revert InsufficientBalance();
}
totalZENORedeemed += amount;
_burn(msg.sender, amount);
USDC.safeTransfer(msg.sender, amount);
}

Impact

Early redeeming of tokens for Users

Tools Used

Manual Review

Recommendations

Updates

Lead Judging Commences

inallhonesty Lead Judge 3 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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