Core Contracts

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

Incorrect Fee Percentage Calculation in _initializeFeeTypes in FeeCollector contract

Summary

The FeeCollector::_initializeFeeTypes function contains incorrect percentage calculations for veRAACShare, burnShare, repairShare, and treasuryShare in certain fee types. The values are stored in basis points (bps), where 100% equals 10,000. However, for fee types 6 and 7, the calculations assume 500 represents 0.5%, whereas it should be 50 (since 50 bps = 0.5%). This leads to an overestimation of allocated fees.

Vulnerability Details

The issue appears in the following fee types:
https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/collectors/FeeCollector.sol#L379-L393

// Buy/Sell Swap Tax (2% total)
feeTypes[6] = FeeType({
veRAACShare: 500, // 0.5%
burnShare: 500, // 0.5%
repairShare: 1000, // 1.0%
treasuryShare: 0
});
// NFT Royalty Fees (2% total)
feeTypes[7] = FeeType({
veRAACShare: 500, // 0.5%
burnShare: 0,
repairShare: 1000, // 1.0%
treasuryShare: 500 // 0.5%
});

The intended values are 0.5% (50 bps) for veRAACShare, burnShare, and treasuryShare, but they are mistakenly set as 500 instead of 50. Same for 1% for repairShare.

Impact

The fees are allocated at 10× the intended amount, leading to an unintended distribution of funds.

Tools Used

Manual review

Recommendations

Update feeTypes[6] and feeTypes[7] to correctly reflect the intended percentages

Updates

Lead Judging Commences

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

Fee shares for fee type 6 and 7 inside FeeCollector do not total up to the expected 10000 basis points, this leads to update problems, moreover they are 10x the specifications

Support

FAQs

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