Core Contracts

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

No incentives to remove expired boost delegations

Summary

Expired boost delegations in the BoostController contract remain active until manually removed, allowing recipients to maintain delegated boost beyond the intended duration.

Vulnerability Details

The removeBoostDelegation function requires manual invocation by the delegation recipient. While it checks for expiry, no automatic expiry mechanism exists:

function removeBoostDelegation(address from) external override nonReentrant {
UserBoost storage delegation = userBoosts[from][msg.sender];
> if (delegation.delegatedTo != msg.sender) revert DelegationNotFound();
> if (delegation.expiry > block.timestamp) revert InvalidDelegationDuration();
// Update pool boost totals before removing delegation
PoolBoost storage poolBoost = poolBoosts[msg.sender];
if (poolBoost.totalBoost >= delegation.amount) {
poolBoost.totalBoost -= delegation.amount;
}
if (poolBoost.workingSupply >= delegation.amount) {
poolBoost.workingSupply -= delegation.amount;
}
poolBoost.lastUpdateTime = block.timestamp;
emit DelegationRemoved(from, msg.sender, delegation.amount);
delete userBoosts[from][msg.sender];
}

Example:

  1. Bob delegates 10,000 boost to Alice for 7 days

  2. After 7 days the delegation expires but:

    • Boost remains active

    • No other removal

    • Alice can keep the boost by not calling removeBoostDelegation

Impact

High: Recipients can maintain expired boosts by not calling remove.

Recommendations

Delegation mechanism is not working correctly. The fix would be fixing the delegation mechanism and then implementing proper expiry handling.

Updates

Lead Judging Commences

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

BoostController: Users unable to remove their own expired boost delegations, creating dependency on recipients and preventing efficient reallocation of boosts

Support

FAQs

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