Core Contracts

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

Missing performanceFees Update and Misallocation of Revenue Shares in distributeRevenue::GaugeController.sol

Summary

The distributeRevenue function splits incoming revenue (amount) into two portions: veRAACShare (80% for veRAAC holders) and performanceShare (20% as a performance fee). veRAACShare is incorrectly added to revenueShares[gaugeType] and incorrectly distributed to gauges via _distributeToGauges, the performanceShare is calculated but not recorded in performanceFees or distributed separately.

The documentation below indicates performanceShare Amount distributed to gauges, veRAACShare Amount distributed to veRAACToken holdersbut it’s never implemented this way, misaligning the function with its intended revenue-sharing design.

/**
* @notice Emitted when revenue is distributed to gauges
* @param gaugeType Type of the gauge
* @param amount Total amount distributed
* @param veRAACShare Amount distributed to veRAACToken holders
* @param performanceShare Amount distributed to gauges
*/
event RevenueDistributed(
GaugeType indexed gaugeType,
uint256 amount,
uint256 veRAACShare,
uint256 performanceShare
);

Vulnerability Details

distributeRevenue::GaugeController.sol

function distributeRevenue(
GaugeType gaugeType,
uint256 amount
) external onlyRole(EMERGENCY_ADMIN) whenNotPaused {
if (amount == 0) revert InvalidAmount();
uint256 veRAACShare = amount * 80 / 100; // 80% to veRAAC holders
uint256 performanceShare = amount * 20 / 100; // 20% performance fee //@q performanceFees not updated
>> revenueShares[gaugeType] += veRAACShare;
>> _distributeToGauges(gaugeType, veRAACShare);
emit RevenueDistributed(gaugeType, amount, veRAACShare, performanceShare);
}

Impact

Incorrect allocation of fees

Function does not follow the documentation design

Tools Used

Manual

Recommendations

performanceShare should be well updated and used in_distributeToGauges(gaugeType, peformanceShare)and veRAACShare should be distributed properly

Updates

Lead Judging Commences

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

GaugeController.distributeRevenue calculates 20% performance fee but never transfers or allocates it to any recipient, causing loss of funds

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

GaugeController.distributeRevenue calculates 20% performance fee but never transfers or allocates it to any recipient, causing loss of funds

Support

FAQs

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

Give us feedback!