Core Contracts

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

Boost delegators cannot revoke their delegated boost

Summary

The BoostController::delegateBoost() function allows users to delegate boost to another address for a specified duration. However, there is no mechanism to revoke or slash the delegated boost if the recipient misbehaves or becomes inactive before the expiration period.

Vulnerability Details

Once a user delegates a boost, it remains locked for the specified duration without any ability to revoke or slash it. Only the recipient of the delegation can remove it.
Delegators may not be able to reallocate their boost even if the recipient no longer benefits from it.

[contracts/core/governance/boost/BoostController.sol]
242 function removeBoostDelegation(address from) external override nonReentrant {
243 UserBoost storage delegation = userBoosts[from][msg.sender];
244 -> if (delegation.delegatedTo != msg.sender) revert DelegationNotFound();
245 if (delegation.expiry > block.timestamp) revert InvalidDelegationDuration();
246
247 // Update pool boost totals before removing delegation
248 PoolBoost storage poolBoost = poolBoosts[msg.sender];
249 if (poolBoost.totalBoost >= delegation.amount) {
250 poolBoost.totalBoost -= delegation.amount;
251 }
252 if (poolBoost.workingSupply >= delegation.amount) {
253 poolBoost.workingSupply -= delegation.amount;
254 }
255 poolBoost.lastUpdateTime = block.timestamp;
256
257 emit DelegationRemoved(from, msg.sender, delegation.amount);
258 delete userBoosts[from][msg.sender];
259 }

Impact

Delegators have no control over the delegated boost after delegation. If the recipient is inactive or misuses the boost, the boost remains locked until expiration, leading to inefficient allocation.

Recommendations

Allows the delegator to revoke their delegated boost under certain conditions.

Updates

Lead Judging Commences

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