Node operators are required to stake their LSTs into OperatorStakingPool contract. However, the operators are unable to withdraw the staked funds from contract. The flow of removing operators also has the same issue.
The function OperatorStakingPool#withdraw() is expected to allow node operators to withdraw staked LST from the contract. However, after internal accounting is done in internal function _withdraw, the contract does not call LST contract to transfer tokens. The issue causes node operators lose all staked funds from contracts.
The function OperatorStakingPool#removeOperators() also has the same issue that call to internal function _withdraw()
Update the test withdraw should work correctly in test file operator-staking-pool.test.ts as below:
Run the test and it failed.
It means that the LST balance of the operator does not change
Operators lose all staked LST in OperatorStakingPool
Manual
Add logic to call LST contract to transfer token
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.