Core Contracts

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

Missing Performance Fee Distribution in GaugeController::distributeRevenue Function

Summary

The distributeRevenue function is designed to allocate revenue to different stakeholders. It splits the provided amount into:

  • 80% allocated to veRAAC holders (veRAACShare)

  • 20% allocated as a performance fee (performanceShare)

However, the function only distributes the veRAACShare to the respective gauges and completely ignores the performanceShare allocation. This results in the performance fee remaining unallocated, which contradicts the intended behavior.

Vulnerability Details

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
revenueShares[gaugeType] += veRAACShare;
_distributeToGauges(gaugeType, veRAACShare);
emit RevenueDistributed(gaugeType, amount, veRAACShare, performanceShare);
}

The function calculates performanceShare = 20% of amount, but does nothing with it. The performanceShare remains unallocated, potentially causing fund mismanagement if untracked.

Since performanceShare is not explicitly distributed or stored in a trackable variable, these funds may remain stuck in the contract without a retrieval mechanism.

The event RevenueDistributed(gaugeType, amount, veRAACShare, performanceShare); is emitted, misleading observers into believing that the performance fee has been allocated, when in reality, it has not been handled.

Impact

Users relying on fee distributions may be impacted, as stakeholders expecting performance fees will not receive them.

Tools Used

Manual Review

Recommendations

Modify the distributeRevenue function to properly allocate the performance fee to an appropriate recipient.

Updates

Lead Judging Commences

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