Core Contracts

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

Incorrect Fee Allocation in FeeCollector:_initializeFeeTypes

Summary

The _initializeFeeTypes function sets various fee distributions in the Fee Collector contract. However, there is a misconfiguration in the feeTypes[6] (Buy/Sell Swap Tax) and feeTypes[7] (NFT Royalty Fees), where the fee percentages do not match the intended NatSpec documentation.

Vulnerability Details

function _initializeFeeTypes() internal {
// Protocol Fees: 80% to veRAAC holders, 20% to treasury
feeTypes[0] = FeeType({
veRAACShare: 8000, // 80%
burnShare: 0,
repairShare: 0,
treasuryShare: 2000 // 20%
});
// Lending Fees: Interest income distribution
feeTypes[1] = FeeType({
veRAACShare: 7000, // 70%
burnShare: 0,
repairShare: 0,
treasuryShare: 3000 // 30%
});
// Performance Fees: 20% from yield products
feeTypes[2] = FeeType({
veRAACShare: 6000, // 60%
burnShare: 0,
repairShare: 0,
treasuryShare: 4000 // 40%
});
// Insurance Fees: 3% from NFT loans
feeTypes[3] = FeeType({
veRAACShare: 5000, // 50%
burnShare: 0,
repairShare: 2000, // 20%
treasuryShare: 3000 // 30%
});
// Mint/Redeem Fees
feeTypes[4] = FeeType({
veRAACShare: 6000, // 60%
burnShare: 0,
repairShare: 2000, // 20%
treasuryShare: 2000 // 20%
});
// Vault Fees
feeTypes[5] = FeeType({
veRAACShare: 7000, // 70%
burnShare: 0,
repairShare: 0,
treasuryShare: 3000 // 30%
});
// 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%
});
}

Expected vs. Actual Allocation for feeTypes[6] (Buy/Sell Swap Tax)

Share Type Expected (%) Expected (BP) Actual (%) Actual (BP)
veRAACShare 0.5% 50 5.0% 500
burnShare 0.5% 50 5.0% 500
repairShare 1.0% 100 10.0% 1000
treasuryShare 0% 0 0% 0

Expected vs. Actual Allocation for feeTypes[7] (NFT Royalty Fees)

Share Type Expected (%) Expected (BP) Actual (%) Actual (BP)
veRAACShare 0.5% 50 5.0% 500
burnShare 0.0% 0 0.0% 0
repairShare 1.0% 100 10.0% 1000
treasuryShare 0.5% 50 5.0% 500

The contract will overallocate fees to veRAAC holders, the burn mechanism, and repair fund in feeTypes[6] (Buy/Sell Swap Tax).

The contract will overallocate fees to veRAAC holders, the treasuryShare, and repair fund in feeTypes[7] (NFT Royalty Fees).

Impact

Incorrect fee distributions for Buy/Sell Swap Tax in _processDistributions

Incorrect fee distributions for NFT Royalty Fees in _processDistributions

Tools Used

Manual Review

Recommendations

Fix the Incorrect Fee Assignments in _initializeFeeTypes by adjusting feeTypes[6] and feeTypes[7] to match the documented NatSpec values.

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 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.