Sablier

Sablier Bob Lido Adapter Redemption Paths

Sablier Bob’s Lido adapter uses Curve as its default route for converting locked staking assets back into WETH. If low liquidity prevents the swap, the Comptroller can request a withdrawal through Lido’s slower queue. Redemption requires the vault to meet its price or expiry condition, and a queued withdrawal takes precedence.

- updated

Settlement and expiry before conversion

Bob redemption requires the vault’s price condition or configured expiry to permit release. That gives a shareholder eligibility to redeem; any remaining conversion through the adapter must also succeed. A vault can therefore reach its release condition before a pending Lido withdrawal makes its tokens available for payment.

A market price crossing alone doesn’t update the vault’s stored oracle price. The redeem function can refresh the vault’s stored oracle price during redemption, while syncPriceFromOracle refreshes it separately. Once expiry arrives, the vault reports EXPIRED regardless of its last synchronized price. These conditions differ from token vesting in Lockup, where a release schedule determines which portion has vested.

ETH, WETH and the adapter’s holdings

The Lido integration covers ETH and WETH vaults on Ethereum mainnet. Its staking position uses wstETH, the wrapped form of Lido’s stETH. Bob share tokens represent the holder’s claim on the vault’s underlying tokens and accrued yield. They don’t mean that the holder already has those underlying tokens in a wallet.

With WETH deposits, the adapter obtains stETH through Lido and wraps it into wstETH. That holding represents principal and accrued staking yield inside the adapter. A vault’s adapter cannot change after creation. Changing the token’s default adapter affects only newly created vaults, so an existing vault retains its original conversion mechanism.


Curve’s conversion path and output limit

Curve provides the default conversion without Lido’s withdrawal-queue wait when the swap satisfies the adapter’s output requirement. The adapter unwraps the vault’s entire wstETH balance to stETH, exchanges stETH for ETH in the Curve stETH/ETH pool and wraps that ETH into WETH. The adapter returns that WETH to Bob for distribution.

Slippage protection

The oracle reference

Chainlink’s stETH/ETH oracle supplies the reference for the minimum ETH output. This concerns the conversion between stETH and ETH. The vault’s price oracle serves a different purpose: determining whether its target-price condition permits redemption.

The configured tolerance

The adapter’s slippage tolerance limits how far the Curve output can fall below that reference. A price-eligible vault can still face a failed conversion if the trade can’t satisfy this limit. The Comptroller controls the tolerance, so the relevant value comes from the adapter’s configuration.

The configured tolerance (Sablier)

View full-size image

The Comptroller’s Lido queue fallback

The Lido queue supplies a fallback when low liquidity causes the Curve exchange to fail. The Comptroller can request a withdrawal after settlement or expiry, while the vault still holds staked wstETH. A valid request also requires no earlier queue request and enough tokens to meet Lido’s minimum request amount.

Starting a queued Lido withdrawal permanently disables the Curve swap for the affected vault.

Visual outline: The Comptroller’s Lido queue fallback (Sablier)

View full-size image

The request unwraps the vault’s wstETH into stETH and submits it to Lido’s withdrawal queue. Share ownership doesn’t grant the Comptroller’s request permission. The queue avoids the Curve trade’s slippage, but introduces Lido’s finalization wait.


Finalization before a Bob payout

A queued withdrawal must finalize before Bob’s redeem call can succeed. While it remains pending, redeem reverts even if the vault has settled or expired. Initiating the request records a claim in Lido’s system; it doesn’t complete the conversion into WETH or pay the Bob shareholder. Finalization enables the adapter to claim ETH and wrap it into WETH. Bob pays the shareholder through redemption.

Yield allocation and vault-specific fees

The adapter apportions recovered WETH using each holder’s recorded wstETH entitlement relative to the vault total. That ratio applies to the WETH actually recovered from unstaking, before the positive-yield fee.

The Lido adapter charges its yield fee only on positive yield.

Each vault stores the yield fee that applied at creation. A change to the adapter’s global yield fee affects future vaults. Bob vault fees remain distinct from transaction gas and any interface charge. A stream-withdrawal fee doesn’t define the fee that this adapter charges on staking yield.


Conditions that determine the available route

Bob’s release condition and its adapter’s conversion state determine whether redemption can proceed. Share ownership supplies the claim that redemption pays.

  • If neither the oracle target nor expiry permits release, the vault remains locked.
  • If the Lido adapter still holds wstETH and no queue request exists, Curve remains the default conversion path.
  • If Curve can’t meet the minimum output because of low liquidity, the Comptroller can request a Lido withdrawal if the vault has settled or expired, still holds enough staked tokens to meet Lido’s minimum and has no earlier request.
  • If a queued withdrawal has started, Lido finalization controls the wait; Curve no longer provides an alternative for that vault.
  • If no adapter exists, Bob holds the deposited tokens directly and applies its native-token redemption fee.

Maintenance commitments and existing vaults

Sablier Labs stopped active product development on July 13, 2026 and committed to interface and backend maintenance for existing users through June 2028. Its contracts remain deployed while their underlying networks operate. The maintenance window doesn’t change an existing vault’s price condition, expiry or adapter. It also doesn’t remove the Comptroller permission needed to initiate the Lido queue. Community stewardship of the interface was an announced plan, so continued contract execution and future hosted access carry different dependencies.

Diagram: Sablier: Maintenance commitments and existing vaults

View full-size image

Before you start with Sablier

Can Bob shares received from another wallet carry accrued yield?

Transferred Bob shares give their new holder the associated claim on underlying tokens and accrued yield. The yield claim follows the transferred shares, so the sender can’t separately claim the yield attached to that transferred position. Redemption still follows the receiving holder’s vault conditions and adapter route.

Why can a Bob vault have multiple Lido withdrawal request IDs?

One vault can generate several Lido withdrawal requests when its withdrawal exceeds Lido’s per-request limit. The adapter splits the amount to satisfy that limit and records the request IDs against the same vault. Several IDs therefore don’t necessarily identify several Bob positions.

Can a vault creator shorten the expiry to accelerate redemption?

A Bob vault’s creator can’t change its expiry after creation. The target price and oracle also remain fixed. An adapter doesn’t introduce an early-cancellation right, and a vault configured without expiry continues to rely on its price condition to unlock redemption.

Who can update a Bob vault’s oracle price without redeeming shares?

Anyone can call syncPriceFromOracle for an ACTIVE Bob vault. The function requires a positive price from that vault’s configured oracle and updates the stored reading. It doesn’t burn shares or transfer the underlying tokens, so synchronizing the price doesn’t itself complete redemption.

What does a null vault mean during Bob redemption?

A null vault is a vault ID that doesn’t identify a created Bob vault. Interactions with that ID revert. This differs from an existing vault whose price condition remains unmet or whose Lido withdrawal hasn’t finalized; those failures concern an actual vault’s state.

How can an integration distinguish the redeemed amount from the yield fee?

Bob’s redeem function returns transferAmount for the tokens transferred to the caller and feeAmountDeductedFromYield for the fee taken from yield. The transfer amount already reflects that deduction when an adapter applies. Adding the reported fee to the payout would describe a different amount from the tokens the caller receives.

Are shareholders allowed to call the Lido adapter’s redemption function directly?

The adapter accepts processRedemption and unstakeFullAmount calls only from the Bob contract. The separate requestLidoWithdrawal function requires the Comptroller. Owning shares grants the holder a redemption claim without giving that wallet these adapter permissions.

Does a synchronized oracle price prove that the reading was fresh?

The syncPriceFromOracle function doesn’t validate oracle staleness onchain. It accepts a positive price returned by the configured oracle, so a freshly updated vault state doesn’t establish how recently that oracle produced its reading. The oracle’s data timestamp and the synchronization transaction describe different events.