The removeBoostDelegation
function in BoostController.sol
can only be called by the pool to remove a user’s boost. This results in incorrect boost values until the function is called by the pool. Additionally, a user may be unable to delegate their boost to another pool if the original pool does not execute removeBoostDelegation
.
The removeBoostDelegation
function currently restricts its execution to the pool that received the delegation. This means users cannot manually revoke their delegation, leaving them dependent on the pool to release their boost. This behavior introduces two issues:
Until removeBoostDelegation
is called, the boost values remain incorrect.
If the ability to delegate more boost than available is fixed, a user may be entirely blocked from delegating again until the pool voluntarily removes the delegation.
The relevant code snippet:
The function checks that msg.sender
is the pool that received the boost delegation and prevents any other caller from executing the removal, including the user who originally delegated the boost.
Users may get locked into a boost delegation if the pool does not actively call removeBoostDelegation
.
Until the pool removes the delegation, boost values remain incorrect.
If an issue allowing excess delegation is fixed, users may be completely unable to re-delegate their boost until the pool executes the function.
Manual code review
Allow users to call removeBoostDelegation
themselves, ensuring they can revoke their own delegation when needed. This can be achieved by modifying the function to permit either the delegating user or the pool to execute it.
This ensures that users can remove their own delegations while maintaining security constraints.
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.