The OperatorStakingPool::_withdraw()
function lacks the implementation of token transfer, which prevents tokens from being correctly withdrawn when invoked.
The OperatorStakingPool
contract is responsible for handling withdrawals through its withdraw()
method. However, as illustrated in the code snippet below, the internal _withdraw()
function only updates the relevant share balance without executing the actual token transfer. This omission results in the inability to withdraw tokens, despite the withdrawal process appearing to complete successfully.
The function currently updates the operator's share balance but does not execute the corresponding token transfer. As a result, operators are unable to withdraw their staked tokens, potentially causing financial losses and operational disruption.
Manual Review
To address this issue, the _withdraw()
function must include logic to transfer tokens from the contract back to the operator. Below is the recommended modification:
By adding these checks and the token transfer, the withdraw function will behave as expected, ensuring both balances and token ownership are properly updated.
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.