Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,9 @@ The vault strategy - ETH is deposited to validators and generates staking reward

</details>




## Architecture

--==PIC==--
![Basic Isolated Staking Setup by stVault](/img/stvaults/builders/architecture_basic.jpg)

## Step-by-step guide

Expand Down Expand Up @@ -285,7 +282,7 @@ In this approach, the Vault Owner creates an stVault that automatically connects

- [Supply/Withdraw ETH, Mint/Repay stETH](../../vault-owners-curators-and-stakers/basic-stvaults/supply-withdraw-mint-repay.md)
- [Control validators by the Vault Owner](../../vault-owners-curators-and-stakers/basic-stvaults/control-validators.md)
- [Rebalance](../../vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md)
- [Rebalance](../../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md)
- [Health Monitoring Guide](../../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md)
- [Health Emergency Guide](../../vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md)
- [Applying Report Guide](../../vault-owners-curators-and-stakers/basic-stvaults/apply-oracle-reports.md)

Large diffs are not rendered by default.

22 changes: 18 additions & 4 deletions run-on-lido/stvaults-new/builders/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,12 @@ export const GUIDES = {
massRedemptions: {
title: 'Mass staking product with utilizing stETH to fulfil redemptions',
link: './basic-stvaults/etf-etp-product',
description:
'A multi-staker staking product where minted stETH is used specifically to cover redemptions (ETF/ETP-like pattern).',
description: (
<>
A multi-staker staking product where {' '}
<a href="../vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth">minted stETH is used specifically to cover redemptions</a> (ETF/ETP-like pattern).
</>
),
buildingBlocks: [
{ block: 'Basis', solution: 'stVault', implementation: 'Out-of-the-box' },
{ block: 'Pooling Wrapper', solution: 'Custom', implementation: 'Custom' },
Expand Down Expand Up @@ -200,9 +204,19 @@ export const ProductGuideSelector = () => {
<p style={{ fontWeight: 600, marginBottom: '0.25rem' }}>{guide.title}</p>
<p style={{ marginBottom: '0.75rem' }}>{guide.description}</p>
<p style={{ marginBottom: '1rem', fontWeight: 600 }}>
➡️ <a href={guide.link}>Product Economy, Architecture, and Building Guide</a>
<a href={guide.link} style={{
display: 'inline-block',
backgroundColor: 'var(--ifm-color-primary)',
color: 'white',
padding: '0.75rem 1.5rem',
borderRadius: 8,
fontWeight: 700,
textDecoration: 'none',
marginBottom: '1.5rem',
}}>
Read the Product Economy, Architecture, and Building Guide →
</a>
</p>

<p style={{ fontWeight: 600, marginBottom: '0.25rem' }}>Product characteristics</p>
<table style={{ width: '100%', marginBottom: '1rem' }}>
<thead>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,16 @@ sidebar_position: 4

## Basic stVaults Architecture

--PIC--
![Basic stVaults Architecture](/img/stvaults/tech-design/architecture_stv.jpg)

--Contracts and components list--
## stVaults + DeFi Wrapper Architecture

## stVaults + De~Fi Wrapper Architecture

--PIC--

--Contracts and components list--
![stVaults + DeFi Wrapper Architecture](/img/stvaults/tech-design/architecture_stv_wrapper.jpg)

## Environments

TBD

#### Hoodi Testnet

- UI: https://stvaults-hoodi.testnet.fi/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ The utility layer provides essential tools and interfaces to streamline the depl

### System Overview

![Screenshot 2025-06-04 at 14.44.39](https://hackmd.io/_uploads/rkZnvMlEgx.png)
![DeFi Wrapper system overview](/img/stvaults/defi-wrapper/system-overview.png)

### Deposits

Expand All @@ -84,10 +84,10 @@ The main flow:
- The Wrapper funds the connected `StakingVault` through the Dashboard and mints `stvToken`.
- The Node Operator can pause deposits.
- The Node Operator or the users **must** apply a fresh report to the stVault.
![image](https://hackmd.io/_uploads/BkrxS0F_xg.png)
![Deposit flow through the Wrapper](/img/stvaults/defi-wrapper/deposits-flow.png)

2. The Node Operator deposits validators through [PDG](https://hackmd.io/@lido/stVaults-design#315-Essentials-PredepositGuarantee), or through the [PDG bypass](https://hackmd.io/@lido/stVaults-design#PDG-bypass-and-rewards-adjustment).
![image](https://hackmd.io/_uploads/r19zSAFulg.png)
![Validator deposit through PDG](/img/stvaults/defi-wrapper/pdg-deposit.png)

### Withdrawals and Emergency Exit

Expand Down Expand Up @@ -122,7 +122,7 @@ The system supports two types of rewards for users:
- Users can bring report data themselves too
- If the report is outdated, users may not be able to withdraw or receive their correct share of rewards.

![image](https://hackmd.io/_uploads/S1k5VRYdxg.png)
![Staking rewards through LazyOracle reports](/img/stvaults/defi-wrapper/staking-rewards-report.png)


#### 2. Sidecar Rewards (Obol, SSV, restaking, points, etc.)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ The Committee does not hold the role itself; it acts through EasyTrack.
- [Control validators and withdraw from the Beacon Chain](../vault-owners-curators-and-stakers/basic-stvaults/control-validators.md) — the Vault Owner's step-by-step guide
- [Validators basics](../node-operators/validators-basics.md) — watching for exit requests on the Node Operator side
- [Health monitoring guide](../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md) — keeping the stVault out of forced-exit territory
- [Rebalance guide](../vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md) — clearing a shortfall before the protocol acts
- [Rebalance guide](../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md) — clearing a shortfall before the protocol acts
2 changes: 1 addition & 1 deletion run-on-lido/stvaults-new/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ This page is a hub: it links out to product materials if you're looking for the
| 🌐 [stVaults — Product Page](https://lido.fi/stvaults) | The product pitch: what stVaults is and why it matters. Best link to share with someone who isn't technical. |
| 🏗️ [stVaults Showcase](https://lido.fi/stvaults-products-overview) | Live products already built on top of stVaults. |
| 📰 [stVaults News & Deep Dives](https://blog.lido.fi/category/lido-v3/) | Blog posts on stVaults product updates and on what's being built on top of it. |
| ⚙️ [stVaults NewsArchitecture Overview](./concepts-and-reference/architecture-overview.md) | High-level overview of the stVaults and DeFi Wrapper architecture, including smart contract addresses and interfaces. |
| ⚙️ [stVaults Architecture Overview](./concepts-and-reference/architecture-overview.md) | High-level overview of the stVaults and DeFi Wrapper architecture, including smart contract addresses and interfaces. |

## Explore the docs by role

Expand Down
3 changes: 2 additions & 1 deletion run-on-lido/stvaults-new/qualified-custodians/cactus.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@ You can find the addresses required for whitelisting in the [Custodians overview
- [Create a Basic stVault with optional liquidity](../builders/basic-stvaults/basic-isolated-staking-setup.md)
- [Health Monitoring Guide](../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md)
- [Health Emergency Guide](../vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md)
- [stVault Rebalancing](../vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md)
- [stVault Rebalancing](../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md)
- [Redemptions coverage with stETH liquidity](../vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md)
3 changes: 2 additions & 1 deletion run-on-lido/stvaults-new/qualified-custodians/copper.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,5 @@ You can find the addresses required for whitelisting in the [Custodians overview
- [Create a Basic stVault with optional liquidity](../builders/basic-stvaults/basic-isolated-staking-setup.md)
- [Health Monitoring Guide](../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md)
- [Health Emergency Guide](../vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md)
- [stVault Rebalancing](../vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md)
- [stVault Rebalancing](../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md)
- [Redemptions coverage with stETH liquidity](../vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md)
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,5 @@ You can find the addresses required for whitelisting in the [Custodians overview
- [Create a Basic stVault with optional liquidity](../builders/basic-stvaults/basic-isolated-staking-setup.md)
- [Health Monitoring Guide](../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md)
- [Health Emergency Guide](../vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md)
- [stVault Rebalancing](../vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md)
- [stVault Rebalancing](../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md)
- [Redemptions coverage with stETH liquidity](../vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md)
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ An **obligations shortfall** means the stVault owes more than the liquid ETH on

If the stVault balance covers all of that, there is no shortfall and forced exits are not possible — even if the stVault is unhealthy.

Watch the Health Factor and act while it is still above 100% — see the [Health monitoring guide](./health-monitoring-guide.md) and the [Rebalance guide](./rebalance-guide.md).
Watch the Health Factor and act while it is still above 100% — see the [Health monitoring guide](./health-monitoring-guide.md) and the [Rebalance guide](./rebalance.md).
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ There are **three ways to restore stVault Health**:

1. **Burn stETH** – Restores the reserve ratio without changing total value; keeps rewards unchanged but reduces external earnings.
2. **Add ETH** – Increases stVault value and future rewards; requires adding extra capital.
3. **[Rebalance](./rebalance-guide.md) / Wait for Forced Rebalancing** – Moves ETH to Lido Core and writes off equivalent debt; least recommended, as it lowers stVault total value and reduces future rewards.
3. **[Rebalance](./rebalance.md) / Wait for Forced Rebalancing** – Moves ETH to Lido Core and writes off equivalent debt; least recommended, as it lowers stVault total value and reduces future rewards.

## Definitions

Expand Down Expand Up @@ -116,7 +116,7 @@ User needs to top up the stVault balance (Total Value) by 1.5 ETH:

#### 3. Rebalance or do nothing and wait for forced rebalancing

⚖️ Rebalance is moving enough ETH from the stVault to Lido Core, writing off the same stETH debt 1:1 (not burned, now backed by Core). See the [Rebalance guide](./rebalance-guide.md) for how to execute it and how forced rebalancing works.
⚖️ Rebalance is moving enough ETH from the stVault to Lido Core, writing off the same stETH debt 1:1 (not burned, now backed by Core). See the [Rebalance guide](./rebalance.md) for how to execute it and how forced rebalancing works.

For this example, the required amount to be moved is 13.5 ETH:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Carry Spread shows whether the stVault economics are improving or deteriorating
- Expected yearly return is not sufficient to cover fees and Liability growth.
- Over time this tends to **erode** the Health factor and push it closer to 100%.

If the Carry Spread turns negative or the Health factor trends down toward 100%, treat this as an early warning and consider actions to improve the stVault’s economics — repaying stETH, supplying more ETH, or [rebalancing](./rebalance-guide.md).
If the Carry Spread turns negative or the Health factor trends down toward 100%, treat this as an early warning and consider actions to improve the stVault’s economics — repaying stETH, supplying more ETH, or [rebalancing](./rebalance.md).

If the Health Factor of the stVault drops below 100%, please refer to the [stVaults Health Emergency Guide](./health-emergency-guide.md).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Defines the share of the collateral that is reserved when the Vault Owner mints

### Forced Rebalance Threshold

Defines the minimum allowed ratio of Total Value to stETH Liability. Crossing it makes the stVault subject to [forced rebalancing](./rebalance-guide.md). Always lower than the Reserve Ratio.
Defines the minimum allowed ratio of Total Value to stETH Liability. Crossing it makes the stVault subject to [forced rebalancing](./rebalance.md). Always lower than the Reserve Ratio.

### Minimal Reserve

Expand Down Expand Up @@ -199,7 +199,7 @@ $$
HF = \frac{TV \times (1 - FRT)}{L} \times 100\%
$$

The stVault is healthy while `HF ≥ 100%`. Below that it becomes subject to [forced rebalancing](./rebalance-guide.md). See the [Health monitoring guide](./health-monitoring-guide.md) for the risk bands used in the Web UI.
The stVault is healthy while `HF ≥ 100%`. Below that it becomes subject to [forced rebalancing](./rebalance.md). See the [Health monitoring guide](./health-monitoring-guide.md) for the risk bands used in the Web UI.

### Available to withdraw

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
sidebar_position: 15
---

# Covering Redemptions With stETH Liquidity

An ETP/ETF product (or any other product with a similar mechanic) built on an stVault can pay out redemption requests without waiting on the validator exit queue. Minting stETH against the stVault's staked ETH turns part of an otherwise illiquid position into cash on demand, via the stETH secondary market instead of the beacon chain.

This guide covers the full cycle: minting to cover a redemption, and then clearing the stETH Liability that minting creates.

![Redemptions coverage scenarios](/img/stvaults/redemptions.jpg)

## Prerequisites

- **`MINT_ROLE` is required** — by default the Vault Owner has it; it can be delegated. See [Roles and permissions](./roles-and-permissions.md#vault-owners-delegatable-permissions-sub-roles).
- **A fresh oracle report must be applied.** Minting reverts otherwise — see [Apply oracle reports](./apply-oracle-reports.md).
- **Minting capacity must cover the redemption.** Minting is only possible within the stVault's [stETH minting capacity](./metrics.md#total-steth-minting-capacity).

## Step 1: Mint stETH to cover the redemption

Mint an amount of stETH equal to the redemption request — see [Mint stETH](./supply-withdraw-mint-repay.md#mint-steth) for the available methods (`mintShares`, `mintStETH`, `mintWstETH`). Each method takes a recipient address, which is what makes both paths below possible.

Which path applies depends on whether the Vault Owner can hold stETH on its own balance sheet.

### If the Vault Owner can hold stETH

1. **Mint** to the Vault Owner's own address.
2. **Swap** the minted stETH for ETH or for USDT/USDC on the secondary market, depending on what the redemption is denominated in.
3. **Settle the redemption** — send the proceeds to the client and close the request in your registrar system.

### If the Vault Owner cannot hold stETH (regulatory restrictions)

1. **Mint** directly to the counterparty's address — for example, a market maker with a standing agreement. Because the mint methods take a recipient address, the stETH never touches the Vault Owner's own balance sheet.
2. **Swap** — the counterparty converts the stETH to ETH or to USDT/USDC per the agreement.
3. **Settle the redemption** — the proceeds are routed to the client and the request is closed.

:::note
This path depends entirely on a prior commercial agreement with the counterparty (mint recipient, swap terms, settlement timing). Lido has no visibility into or role in that agreement — it only sees the mint transaction and its recipient.
:::

At this point the redemption is paid out, and the stVault carries a stETH Liability equal to the minted amount. The rest of this guide covers clearing it.

## Step 2: Clear the resulting stETH Liability

There are two ways to bring the stETH Liability back to zero — see [Rebalance or repay?](./rebalance.md#rebalance-or-repay) for the general trade-off. In the redemption context, they map to two situations:

| | Option A — Repay | Option B — Rebalance |
| --- | --- | --- |
| When to use | New client ETH arrives before the next redemption cycle | No new deposits are coming, or the liability needs to be cleared now |
| What is spent | stETH staked from new client deposits | ETH from the stVault's own validators |
| Total Value | unchanged | decreases |
| Future rewards | unchanged | reduced — the stVault has less ETH working |

### Option A — Repay with new client deposits

1. When clients bring in new ETH, **stake** it through Lido Core to receive stETH 1:1, or **swap** it to stETH on a secondary market.
2. **Repay** that stETH to the stVault — see [Repay (burn) stETH](./supply-withdraw-mint-repay.md#repay-burn-steth). This burns the stETH and reduces the stETH Liability by the same amount.

This is the better option economically whenever it's available — it doesn't touch the stVault's Total Value or reduce future staking rewards.

:::note
Approve the `Dashboard` contract for the stETH before repaying, and remember the ETH freed up by the repayment only becomes withdrawable after the next oracle report confirms it. The stVaults Web UI handles both automatically.
:::

### Option B — Rebalance using validator ETH

Use this when no new client ETH is expected in time, or the liability needs to be cleared as soon as possible.

1. **Check the stVault balance** against the stETH Liability. If the balance isn't enough, request a partial withdrawal from validators — stVaults use 0x02 withdrawal credentials, so this doesn't require a full validator exit.
2. **Wait for the sweep** — the withdrawn ETH lands back on the stVault balance.
3. **Rebalance** — see [Rebalance](./rebalance.md). This moves the ETH to Lido Core and writes off the same amount of stETH Liability 1:1 — all in one transaction.
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ Three flavours are available, all of them payable so funding and minting fit in
| `mintStETH` | stETH tokens (rebasing) |
| `mintWstETH` | wstETH tokens (non-rebasing), wrapped automatically |

Each takes a recipient address, so minted tokens can go straight to another address.
Each takes a recipient address, so minted tokens can go straight to another address. This may be useful for Vault Owners with restrictions on which tokens can appear on their balance sheets.

<details>
<summary>using stVaults Web UI</summary>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/stvaults/redemptions.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading