rETH unstake may revert if not enough ETH are available in the pool making the unstaking impossible.
The unstakeEth function of BridgeRouter especially for rETH, and assumed it can always burn rETH for ETH, but this is not always the case.
User unstake scenario:
User tries to unstake their current position.
Assume calculated share of user position in Reth is greater than the available collateral present in the Rocket Pool protocol.
Call to unstake will revert because withdraw from Reth will fail.
According to rETH docs:
It's possible that if node operators have put all of the staking pool to work on the Beacon chain, then the liquidity pool won't have enough balance to cover your unstaking.
This means, any unstake in BridgeReth will be reverted, which blocks the unstaking.
Pointing to the similar issue (and its duplicates) in code4rena categorized as High issue:
https://github.com/code-423n4/2023-03-asymmetry-findings/issues/210
rETH unstake may revert if not enough ETH are available in the pool making the unstaking impossible.
Manual analysis
Add a check to swap Reth for ETH in uniswap if the burn function from the Reth contract fails.
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.