Core Contracts

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

FeeType 6 and 7 won't be able to be updated by `FEE_MANAGER_ROLE` on FeeController

Vulnerability Details

At FeeController:updateFeeType() any account with the FEE_MANAGER_ROLE can update the percentages for each fee type.

The problem is that some fee types won't be able to be re-set to a desired value != 100% due to the following check in the code:

// Declared as constant => BASIS_POINTS = 10000 == 100%
if (newFee.veRAACShare + newFee.burnShare + newFee.repairShare + newFee.treasuryShare != BASIS_POINTS) {
revert InvalidDistributionParams();
}

The system does want to have some of the types smaller than 100% as it can be seen on constructor()::_initializeFeeTypes() (called here) where fee types with indexes 6 and 7 are meant to have only a total sum of 2%. See comments here.

Impact

The FEE_MANAGER_ROLE won't be able to properly update to desired values fee types of indexes 6 and 7, these ones are:

  • 6 = Buy/Sell tax

  • 7 = NFT Royalty fees

Recommendations

Exclude indexes 6 and 7 from the adding up to BASIS_POINTS check.

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.