Skip to content

Instantly share code, notes, and snippets.

@zmanian
Created March 1, 2026 09:27
Show Gist options
  • Select an option

  • Save zmanian/a7567efd7fb54330b06f0237a7b67a26 to your computer and use it in GitHub Desktop.

Select an option

Save zmanian/a7567efd7fb54330b06f0237a7b67a26 to your computer and use it in GitHub Desktop.
Real Yield ETH -- Withdrawals Blocked: Root Cause & Required Strategist Rebalance

Real Yield ETH -- Withdrawals Blocked: Root Cause & Resolution

Date: 2026-03-01 Cellar: Real Yield ETH (0xb5b29320d2dde5ba5bafa1ebcd270052070483ec) Chain: Ethereum Mainnet Status: Users cannot withdraw. Strategist rebalance required.


Summary

Users cannot withdraw from the Real Yield ETH cellar because totalAssetsWithdrawable() returns 1 wei (effectively zero), despite the cellar holding ~85.4 ETH in total assets. The root cause is that nearly all assets (~74.7 ETH) are deposited into the TurboSTETH cellar (0xfd6db5011b171b05e1ea3b92f9eacaeeb055e971), which the withdrawal path does not treat as a liquid position. A strategist rebalance to redeem TurboSTETH shares back to WETH will immediately resolve the issue.


Current On-Chain State

Metric Value
totalAssets() 85.43 ETH
totalAssetsWithdrawable() 1 wei (~0 ETH)
totalSupply() 72.97 shares
isShutdown() false
isPaused() false
shareLockPeriod() 600s (10 min)

Asset Deployment Breakdown

Position Type Asset Balance Withdrawable via redeem()?
#199 -- TurboSTETH Cellar-in-cellar TurboSTETH shares 74.68 shares (~85.4 ETH) No -- adaptor not on withdrawal path
#163 -- wstETH ERC20 wstETH 0.098 wstETH (~0.11 ETH) Yes
#186, #187, #185 -- Uni V3 LP positions WETH pairs ~10.66 ETH (estimated) No -- illiquid LP NFTs
#101 -- WETH (holding) ERC20 WETH 0 ETH Yes (but empty)
#156, #190 -- Aave aTokens aWETH v2/v3 0 ETH Yes (but empty)
#102 -- cbETH ERC20 cbETH 0 Yes (but empty)
#103 -- rETH ERC20 rETH 0 Yes (but empty)

87.5% of assets sit in TurboSTETH. The holding position (WETH) is empty.


Why Users Are Blocked

When a user calls redeem(), the cellar iterates through its credit positions and attempts to pull assets from ones marked as liquid/withdrawable. The TurboSTETH adaptor (position #199) does not appear on the cellar's withdrawal path -- its withdrawableFrom() returns 0 or reverts. This means the cellar cannot pull assets from TurboSTETH during a user-initiated redemption, even though TurboSTETH itself is fully liquid.

The UI catches the resulting Cellar__IlliquidWithdraw revert and shows: "You are attempting to withdraw beyond the liquid reserve. Please submit a withdraw request via the withdraw queue."


TurboSTETH Is Fully Liquid

TurboSTETH can return the funds immediately:

TurboSTETH Metric Value
totalAssets() 128.53 ETH
totalAssetsWithdrawable() 116.90 ETH (91% liquid)
maxRedeem(RYETH cellar) 74.68 shares (full balance)
previewRedeem(74.68 shares) 85.43 WETH
isShutdown() false

There is more than enough liquidity in TurboSTETH to cover a full redemption of the Real Yield ETH cellar's shares.


Required Action

Strategist must call callOnAdaptor to redeem TurboSTETH shares to WETH

Prerequisites (all verified as met):

  • TurboSTETH adaptor (0x3B5CA5de4d808Cd793d3a7b3a731D3E67E707B27) is in the cellar's adaptorCatalogue
  • Adaptor is trusted in the Sommelier registry (0x3051e76...)
  • Cellar is not shutdown or paused
  • TurboSTETH has sufficient liquidity (116.9 ETH withdrawable vs 74.7 needed)
  • maxRedeem confirms full balance is redeemable

Execution path:

  1. Seven Seas / Veda submits a callOnAdaptor governance proposal on the Sommelier chain
  2. The call targets adaptor 0x3B5CA5de4d808Cd793d3a7b3a731D3E67E707B27 to redeem all 74,678,454,069,894,764,608 TurboSTETH shares
  3. The Sommelier chain relays the call via the Gravity Bridge (owner: 0x69592e6f9d21989a043646fE8225da2600e5A0f7) to the cellar on Ethereum mainnet
  4. TurboSTETH returns ~85.43 WETH to the Real Yield ETH cellar
  5. WETH lands in the holding position (#101)
  6. totalAssetsWithdrawable() updates to reflect ~85.4 ETH
  7. Users can redeem() directly

Optional follow-up

After the rebalance, users should be able to withdraw their full positions. The WithdrawalWarningBanner in the UI already states Real Yield ETH is "fully available for withdrawal" -- this rebalance would make that claim accurate on-chain.


Contact

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment