The boost delegation system in the BoostController::delegateBoost
and BoostController::delegateBoost
has a critical design flaw where delegations are not associated with specific pools, and delegation removal incorrectly uses recipient addresses as pool addresses. This breaks the boost accounting system and leads to incorrect state updates.
The BoostController::delegateBoost
also allow double delegation.
The issue arises because:
In the BoostController::delegateBoost
there is no reference to the pool that will be used to delegate the boost to the recipient.
msg.sender
is the delegation recipient (user address), poolBoosts
mapping expects a valid pool address, this will updates metrics on non-existent or wrong pool.
The issues are connected because:
Delegations aren't associated with specific pools and the pool metrics are updated using wrong addresses
System can not track pool-specific delegations because there is not pool associted to the boost
Broken Delegation-Pool Association: since delegations aren't linked to any pool, there is no way to track which pool's boost is being delegated and then the system will not be able to properly manage pool-specific delegations and will not also be able to enforce pool-specific boost limits. which will create disconnection between delegation and pool accounting systems
Protocol Functionality Impact:
Delegation system becomes effectively isolated from pool system and can't enforce pool-specific boost rules on delegations, therefore , there is no way to properly account for delegated boost in pool metrics this breaks intended boost delegation mechanics.
Unable to Remove Delegations Properly:
poolBoosts[msg.sender]
will always be empty/uninitialized, so no actual pool boost reduction occurs
Manual code review
Redesign the delegation system to properly reference pools addding the pool address to the params in the delegateBoost function:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.