diff --git a/run-on-lido/stvaults-new/builders/basic-stvaults/basic-isolated-staking-setup.md b/run-on-lido/stvaults-new/builders/basic-stvaults/basic-isolated-staking-setup.md index 1788bd049..74ddcacf3 100644 --- a/run-on-lido/stvaults-new/builders/basic-stvaults/basic-isolated-staking-setup.md +++ b/run-on-lido/stvaults-new/builders/basic-stvaults/basic-isolated-staking-setup.md @@ -112,12 +112,9 @@ The vault strategy - ETH is deposited to validators and generates staking reward - - - ## Architecture ---==PIC==-- +![Basic Isolated Staking Setup by stVault](/img/stvaults/builders/architecture_basic.jpg) ## Step-by-step guide @@ -197,7 +194,7 @@ To perform this step, the Node Operator of the newly created vault must already #### 1.3. After that, the **Vault Owner**, in one transaction, accepts the stETH minting parameters and fees (by accepting the tier), supplies 1 ETH as collateral for connection to Lido Core, and initiates the connection to Lido Core. -This is a permissioned operation. By default, this permission belongs to the Vault Owner, who can delegate it to other addresses (multiple supported, including the Vault Owner’s own address). [Read more about roles](../../vault-owners-curators-and-stakers/basic-stvaults/roles-and-permissions.md). +This is a permissioned operation. By default, this permission belongs to the Vault Owner, who can delegate it to other addresses (multiple supported, including the Vault Owner’s own address). [Read more about roles](../../concepts-and-reference/roles-and-permissions.md). **Parameters and addresses needed for this step:** @@ -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) \ No newline at end of file diff --git a/run-on-lido/stvaults-new/builders/basic-stvaults/etf-etp-product.md b/run-on-lido/stvaults-new/builders/basic-stvaults/etf-etp-product.md index b26c28773..9a1b2242c 100644 --- a/run-on-lido/stvaults-new/builders/basic-stvaults/etf-etp-product.md +++ b/run-on-lido/stvaults-new/builders/basic-stvaults/etf-etp-product.md @@ -1,5 +1,292 @@ --- sidebar_position: 2 +title: 'Mass Staking Product with Redemptions via stETH' --- -# ETF/ETP product with redemptions covered by stETH and following rebalancing (touching stETH and not touching stETH) +# Mass Staking Product with Utilizing stETH to Fulfil Redemptions + +## Product value proposition +Staking rewards through a chosen Node Operator, with [quick redemption coverage with stETH liquidity](../../vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md). + +## Product characteristics +| Parameter | Value | +| -- | -- | +| Number of stakers | Multiple | +| stETH minting capability | yes, to cover redemptions | + +## Building blocks +| Building block | Solution | Implementation | +| -- | -- | -- | +| Basis | stVault | Out-of-the-box | +| Pooling Wrapper | Custom | Custom | +| User Interface | Custom | Custom | + +## Economy model and calculator +The vault strategy - ETH is deposited to validators and generates staking rewards; stETH is minted on demand by the Vault Owner. + +
+ Economy calculation example + + + + As an calculation example, let's consider a staking setup with a single Node Operator, and full utilization of available stETH Minting Capacity. + + ### Annualized Economics Breakdown + +

Staking Rewards

+ +
+ Gross Staking Rewards + + 3.2 ETH +
+ + Validators generate staking rewards on top of the 100 ETH deposited to the Beacon Chain. + e.g., 3.2% Staking APR. + +
+ Node Operator Fee + + - 0.096 ETH +
+ Set per stVault through consensus between the Vault Owner and the Node Operator. + e.g., 3% out of Gross Staking Rewards earned. + +
+ Lido Fee + + - 0.1728 ETH +
+ In this example, the annual Lido Fee approximately equals 6% of the Lido Core Gross APR and can be calculated by + the equation: + Lido Fee = 6% * 3.2% Lido Core Gross APR * 90 stETH = 0.1728 ETH; + e.g., Lido Core Gross APR ~ 3.2%. + +

stETH Liability + Growth

+ +
+ Minted stETH Rebase + + 2.592 stETH +
+ The stVault’s liquidity is provided in stETH, a rebasing token — its balance updates daily to reflect accrued staking + rewards. + To ensure the Vault Owner’s repayment amount is always accurately represented, the minted stETH liability adjusts daily in + line with stETH’s rebasing mechanics. + This is primarily a technical adjustment, as the liability increase is offset by the rewards the Vault Owner earns as a + holder of stETH. + e.g., stETH APR ~ 2.88%. + +

stVault Bottom + Line

+
+ stVault Bottom Line + + + 0.3392 ETH +
+
+ stVault Efficiency + + 0.3392% +
+ A positive stVault Efficiency indicates that the Node Operator’s performance is sufficient to cover the growth of the + stETH Liability. + + + ### stETH Usage Outside the stVault + + The Vault Owner generates primary profit via higher validation performance than Lido Core APR plus rewards received as + a stETH holder. + - **+ 0.3392%** — stVault Efficiency upside + - **+ 2.592%** — minted stETH APR (normalized to stVault Total Value 100 ETH) + +
+ Total APR + + 2.9312% +
+ +
+ + +
+ +## Architecture + +![Basic Isolated Staking Setup by stVault](/img/stvaults/builders/architecture_etp.jpg) + +## Redemptions coverage by stETH + +There are several possible options to cover redemptions with stETH liquidity, depending on specific requirements and limitations. All of them are described in this doc — [Redemptions coverage with stETH liquidity](../../vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md). + +## Step-by-step guide + +➡️ URLs and Smart Contract addresses are listed on [Environments](../../concepts-and-reference/architecture-overview#environments) + +Creating an stVault is permissionless. There are two main ways to do it: + +1. Two-step process (recommended): initiated by the Node Operator and completed by the Vault Owner. +2. One-step process (for experienced Vault Owners / Stakers): create the stVault and supply 1 ETH in a single transaction. + +### Parameters needed to create an stVault: + +1. **Node Operator address** — a unique, immutable identifier of the Node Operator within stVaults, used in protocol logic such as calculating per-operator stETH minting terms and limits. It designates the Node Operator that provides validation services for the stVault and also manages ETH deposits from the stVault balance to validators, as well as handling validator exits when required. +2. **Node Operator Manager address**. One of the two administrative roles in an stVault. From the Node Operator perspective, this role manages permissions and can update key vault parameters. Multiple addresses are supported. +3. **Vault Owner address**. One of the two administrative roles in an stVault. From the Vault Owner (Staker) perspective, this role manages permissions and can update key vault parameters. Multiple addresses are supported. +4. **Node Operator Fee**. The share of gross staking rewards that the Node Operator charges for providing validation services. Expressed in basis points [0 (0%) .. 10,000 (100%)]. +5. **Confirmation Lifetime**. The key parameter of the multi-role confirmation mechanism. It defines the maximum time interval between proposal and confirmation. This mechanism is used to update certain stVault parameters by requiring consensus between the two stVault representatives: the Vault Owner and the Node Operator Manager. Measured in seconds [86,400 sec (24 hours) .. 25,920,000 sec (30 days)]. For security reasons, it is strongly recommended to keep it as short as possible, ideally the minimum 86,400 sec. + +### 1. Two-step process (recommended) + +This approach enables a Node Operator to create an stVault without providing their own ETH. It is recommended because it prevents ETH commingling and streamlines the experience for Stakers and Vault Owners. + +#### 1.1. **Node Operator** creates an stVault that is not yet connected to Lido Core. + +Creating an stVault is a permissionless operation, but in this two-step process it is usually performed by the Node Operator. + +
+ by Command-line Interface + ```bash + yarn start vo w create-vault create-without-connecting --defaultAdmin --nodeOperator --nodeOperatorManager --confirmExpiry --nodeOperatorFeeRateBP 1 + ``` + Note down the addresses of the created **Vault** and **Dashboard** contracts — these are the key contracts of your newly created stVault. +
+
+ using Etherscan UI + 1. Open **Etherscan** and navigate to the **VaultFactory** contract — find its address on the [Environments](../../concepts-and-reference/architecture-overview#environments) page. + 2. Go to the **Contract** tab → **Write Contract**. + 3. Click **Connect to Web3** and connect your wallet in the dialog window. + 4. Find the method `createVaultWithDashboardWithoutConnectingToVaultHub` in the list, fill out the fields, and click **Write**. + - You can leave `_roleAssignments = []`. + 5. Sign the transaction in your wallet. + 6. Click **View your transaction** and wait for it to be executed. + 7. Open the **Logs** tab, scroll to the **DashboardCreated** event, and note down the addresses of the created **Vault** and **Dashboard** contracts — these are the key contracts of your newly created stVault. +
+ +#### 1.2. When an stVault is created, the Node Operator may optionally propose a tier with more favorable stETH minting terms than the Default tier. + +To perform this step, the Node Operator of the newly created vault must already have individual tiers assigned. Otherwise, the stVault will remain limited to the Default tier option `(tierID = 0)`. + +**Parameters needed for this step:** + +- `VaultAddress`: the address of the `Vault` contract. +- `TierID`: the ID of the tier to which the stVault will be connected. +- `RequestedShareLimit`: the requested absolute stETH minting limit for the stVault, expressed in shares. This value cannot exceed the tier’s stETH limit. [Learn more about shares and stETH / wstETH tokens](/guides/lido-tokens-integration-guide#steth-internals-share-mechanics). + +
+ by Command-line Interface + ```bash + yarn start contracts operator-grid w ct + ``` +
+
+ using Etherscan UI + 1. Open **Etherscan** and navigate to the **Operator Grid** contract — find its address on the [Environments](../../concepts-and-reference/architecture-overview#environments) page. + 2. Since this contract is a proxy, complete the verification steps once (if not done before): + - Go to **Contract → Code**. + - Click **More options**. + - Select **Is this a proxy?**. + - Click **Verify** in the dialog. + - Return to the contract details page. + 3. Open the **Contract** tab → **Write as Proxy**. + 4. Click **Connect to Web3** and connect your wallet in the dialog window. + 5. Find the `changeTier` method in the list, fill out the fields, and click **Write**. + 6. Sign the transaction in your wallet. + 7. Click **View your transaction** and wait for it to be executed. +
+ +#### 1.3. After that, the **Vault Owner**, in one transaction, accepts the stETH minting parameters and fees (by accepting the tier), supplies 1 ETH as collateral for connection to Lido Core, and initiates the connection to Lido Core. + +This is a permissioned operation. By default, this permission belongs to the Vault Owner, who can delegate it to other addresses (multiple supported, including the Vault Owner’s own address). [Read more about roles](../../concepts-and-reference/roles-and-permissions.md). + +**Parameters and addresses needed for this step:** + +- `VaultAddress`: the address of the `Vault` contract. +- `TierID`: the ID of the tier to which the stVault will be connected. +- `RequestedShareLimit`: the requested absolute stETH minting limit for the stVault, expressed in shares. This value cannot exceed the tier’s stETH limit. [Learn more about shares and stETH / wstETH tokens](/guides/lido-tokens-integration-guide#steth-internals-share-mechanics). +- `payableAmount`: the amount of ETH to supply in the same transaction; minimum is **1 ETH**. +- `currentSettledGrowth`: the amount of unaccounted growth accrued on the vault while it was disconnected; 0 for newly created vaults via the create-without-connecting method. Settled growth is the part of the total growth that has already been charged by the node operator or is not subject to fee (exempted), such as unguaranteed or side deposits, and consolidations accrued while the vault was disconnected. + +
+ using stVaults Web UI + 1. Open the stVaults Web UI (see [Environments](../../concepts-and-reference/architecture-overview#environments)) + + 2. Connect wallet on the "My Vaults" page. + + 3. Open an stVault overview page at `https:///vaults/` + + ![Connect and accept tier](/img/stvaults/guide-basic-stvault/guide_1_scr_8.png) + + 4. Review parameters and click "Approve and supply 1 ETH". + + 5. Sign transaction in the wallet. + +
+
+ by Command-line Interface + ```bash + yarn start contracts dashboard w connect-and-accept-tier -f + ``` +
+
+ using Etherscan UI + 1. Open **Etherscan** and navigate to the **Dashboard** contract by its address (provided in the results of stVault creation, see step 1.1). + 2. Since this contract is a proxy, complete the verification steps once (if not done before): + - Go to **Contract → Code**. + - Click **More options**. + - Select **Is this a proxy?**. + - Click **Verify** in the dialog. + - Return to the contract details page. + 3. Open the **Contract** tab → **Write as Proxy**. + 4. Click **Connect to Web3** and connect your wallet in the dialog window. + 5. Find the `connectAndAcceptTier` method in the list, fill out the fields, and click **Write**. + - fill out the `payableAmount` field with '1' to supply `1 ETH` in the same transaction. + - set the `_currentSettledGrowth` field to '0' for a newly created vault like in this scenario (if the stVault is newly created but had side deposits before connecting, settled growth must be set accordingly before the connection). + 6. Sign the transaction in your wallet. + 7. Click **View your transaction** and wait for it to be executed. +
+ +### 2. One-step process (for experienced Vault Owners / Stakers) + +In this approach, the Vault Owner creates an stVault that automatically connects to Lido Core, enabling stETH minting. This requires supplying 1 ETH, which will be locked as collateral for the connection to Lido Core. All completed in a single transaction, so despite being a permissionless operation, it is usually performed by the Vault Owner of the future stVault. + +
+ using stVaults Web UI + 1. Open the stVaults Web UI (see [Environments](../../concepts-and-reference/architecture-overview#environments)) + 2. Connect wallet on the "My Vaults" page. + 3. Click "Create vault". + + ![Create vault](/img/stvaults/guide-basic-stvault/guide_1_scr_9.png) + + 4. Fill out the form and click "Continue". + 5. Sign transaction in the wallet. + +
+
+ by Command-line Interface + ```bash + yarn start vo w create-vault create --defaultAdmin --nodeOperator --nodeOperatorManager --confirmExpiry --nodeOperatorFeeRateBP 1 + ``` +
+
+ using Etherscan UI + 1. Open **Etherscan** and navigate to the **VaultFactory** contract — find its address on the [Environments](../../concepts-and-reference/architecture-overview#environments) page. + 2. Go to the **Contract** tab → **Write Contract**. + 3. Click **Connect to Web3** and connect your wallet in the dialog window. + 4. Find the method `createVaultWithDashboard` in the list, fill out the fields, and click **Write**. + - `_payableAmount (ether)` must be at least **1 ETH**. + - You can leave `_roleAssignments = []`. + 5. Sign the transaction in your wallet. + 6. Click **View your transaction** and wait for it to be executed. + 7. Open the **Logs** tab, scroll to the **DashboardCreated** event, and note down the addresses of the created **Vault** and **Dashboard** contracts — these are the key contracts of your newly created stVault. +
+ +## Useful links + +- [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.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) diff --git a/run-on-lido/stvaults-new/builders/index.mdx b/run-on-lido/stvaults-new/builders/index.mdx index b72c97a99..d97790465 100644 --- a/run-on-lido/stvaults-new/builders/index.mdx +++ b/run-on-lido/stvaults-new/builders/index.mdx @@ -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 {' '} + minted stETH is used specifically to cover redemptions (ETF/ETP-like pattern). + + ), buildingBlocks: [ { block: 'Basis', solution: 'stVault', implementation: 'Out-of-the-box' }, { block: 'Pooling Wrapper', solution: 'Custom', implementation: 'Custom' }, @@ -200,9 +204,19 @@ export const ProductGuideSelector = () => {

{guide.title}

{guide.description}

- ➡️ Product Economy, Architecture, and Building Guide + + Read the Product Economy, Architecture, and Building Guide → +

-

Product characteristics

@@ -261,7 +275,6 @@ export const ProductGuideSelector = () => { # 🛠️ Builders - ## 📎 Guide Selector Answer a few questions below to find the guide that fits your product. @@ -269,33 +282,28 @@ Answer a few questions below to find the guide that fits your product. ## 🧱 Building blocks - + ![Building Blocks](/img/stvaults/builders/building_blocks.png) - + ### Staking with stVaults -An **stVault** is an isolated, non-custodial staking primitive with its own withdrawal credentials, controlled by its Owner, who picks a Node Operator once at creation — an immutable choice with no access to the vault's principal. +An **stVault** is an isolated, non-custodial staking primitive with its own withdrawal credentials, controlled by the Vault Owner, who picks a Node Operator once at creation — an immutable choice with no access to the vault's principal. ### Liquidity by stETH -An stVault owner can optionally, overcollateralized mint stETH against staked ETH — unlocking liquidity without unstaking, and enabling any downstream DeFi strategy. +An stVault owner can optionally, overcollateralized mint **stETH** against supplied ETH — unlocking liquidity without unstaking, and enabling any downstream DeFi strategy. ### Pooling by DeFi Wrapper -The **DeFi Wrapper** is a no-/low-code toolkit turning a single stVault into a multi-user, tokenized pool, deployed and governed via the stVaults CLI and a Timelock contract. +The **DeFi Wrapper** is a no-/low-code toolkit that allows builders creating multi-user staking products based on stVault: deployment via the stVaults CLI and and governance through the Timelock contract. -:::info DeFi Wrapper trade-off: no Management Web UI for the Vault Owner - -The trade-off for fast deployment: no management Web UI (operations run via CLI/contract calls), plus a Timelock execution delay on governance. - ::: - ### Whitelisting by DeFi Wrapper -DeFi Wrapper pools support an on-chain allowlist restricting depositors, set at deployment and managed by an Allow List Manager — a connected DeFi strategy can keep its own separate allowlist too. +DeFi Wrapper pools support an **on-chain allowlist** restricting depositors, that enables creating single-user and multi-user staking products based on DeFi Wrapper. ### Connector to EarnETH -The **Lido EarnETH** connector auto-deposits a pool's minted stETH into Mellow-based DeFi strategies, adding extra yield on top of staking rewards — enabled at deployment, no custom integration needed. +The DeFi Wrapper has a built-in connector to **Lido EarnETH**: as ETH is supplied to the vault, stETH is minted automatically and sent into EarnETH, adding extra yield on top of staking rewards — enabled at deployment, no custom integration needed. ### DeFi Wrapper embeddable widget diff --git a/run-on-lido/stvaults-new/concepts-and-reference/architecture-overview.md b/run-on-lido/stvaults-new/concepts-and-reference/architecture-overview.md index 9a799bc70..9bed8c1c3 100644 --- a/run-on-lido/stvaults-new/concepts-and-reference/architecture-overview.md +++ b/run-on-lido/stvaults-new/concepts-and-reference/architecture-overview.md @@ -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/ diff --git a/run-on-lido/stvaults-new/concepts-and-reference/defi-wrapper-technical-design.md b/run-on-lido/stvaults-new/concepts-and-reference/defi-wrapper-technical-design.md index 760682b4d..ba670876b 100644 --- a/run-on-lido/stvaults-new/concepts-and-reference/defi-wrapper-technical-design.md +++ b/run-on-lido/stvaults-new/concepts-and-reference/defi-wrapper-technical-design.md @@ -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 @@ -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 @@ -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.) diff --git a/run-on-lido/stvaults-new/concepts-and-reference/exit-validators-permissions.md b/run-on-lido/stvaults-new/concepts-and-reference/exit-validators-permissions.md index df8aa6740..7c404a6dc 100644 --- a/run-on-lido/stvaults-new/concepts-and-reference/exit-validators-permissions.md +++ b/run-on-lido/stvaults-new/concepts-and-reference/exit-validators-permissions.md @@ -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 diff --git a/run-on-lido/stvaults-new/concepts-and-reference/how-quarantine-works.md b/run-on-lido/stvaults-new/concepts-and-reference/how-quarantine-works.md index cb3f2df5c..f2c067c81 100644 --- a/run-on-lido/stvaults-new/concepts-and-reference/how-quarantine-works.md +++ b/run-on-lido/stvaults-new/concepts-and-reference/how-quarantine-works.md @@ -94,5 +94,5 @@ Nothing releases the quarantine on its own. If step 4 is not sent, the amount st ## Related - [Apply oracle reports](../vault-owners-curators-and-stakers/basic-stvaults/apply-oracle-reports.md) — how `updateVaultData` works and how to check report freshness -- [Metrics](../vault-owners-curators-and-stakers/basic-stvaults/metrics.md#total-value) — what Total Value includes +- [Metrics](../concepts-and-reference/metrics.md#total-value) — what Total Value includes - [Consolidations](../node-operators/consolidations.md) — the most common reason for a quarantine diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/metrics.md b/run-on-lido/stvaults-new/concepts-and-reference/metrics.md similarity index 96% rename from run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/metrics.md rename to run-on-lido/stvaults-new/concepts-and-reference/metrics.md index 859b16759..55100574e 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/metrics.md +++ b/run-on-lido/stvaults-new/concepts-and-reference/metrics.md @@ -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](../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md). Always lower than the Reserve Ratio. ### Minimal Reserve @@ -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](../vault-owners-curators-and-stakers/basic-stvaults/rebalance.md). See the [Health monitoring guide](../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md) for the risk bands used in the Web UI. ### Available to withdraw @@ -382,7 +382,7 @@ Carry Spread is the Health Factor trend indicator: a positive spread raises the ## Restoring an unhealthy stVault -Three metrics show how much of each corrective action is needed to bring the Utilization Ratio back to 100%. See the [Health emergency guide](./health-emergency-guide.md) for a worked comparison. +Three metrics show how much of each corrective action is needed to bring the Utilization Ratio back to 100%. See the [Health emergency guide](../vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md) for a worked comparison. ### ETH to rebalance @@ -416,5 +416,5 @@ $$ ## Related -- [Health monitoring guide](./health-monitoring-guide.md) — which of these to watch and how often +- [Health monitoring guide](../vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md) — which of these to watch and how often - [CLI metrics calculation reference](https://lidofinance.github.io/lido-staking-vault-cli/metrics-calculation) — the off-chain methodology in full diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/roles-and-permissions.md b/run-on-lido/stvaults-new/concepts-and-reference/roles-and-permissions.md similarity index 100% rename from run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/roles-and-permissions.md rename to run-on-lido/stvaults-new/concepts-and-reference/roles-and-permissions.md diff --git a/run-on-lido/stvaults-new/faq.md b/run-on-lido/stvaults-new/faq.md index 7bc181301..91475d0fc 100644 --- a/run-on-lido/stvaults-new/faq.md +++ b/run-on-lido/stvaults-new/faq.md @@ -3,3 +3,56 @@ sidebar_position: 6 --- # 🙋‍♂️ F.A.Q. + +
+Can I mint stETH before my validator is active? + +Yes. You can mint stETH right after supplying ETH to your stVault — you don't need an active validator, or even a validator at all, to mint. + +The nuance shows up on the other side: once you've minted, how you deposit that ETH to a validator depends on the deposit method, because minted ETH is locked as collateral and can no longer be withdrawn from the vault. + +- The [**full PDG flow**](./node-operators/pdg#full-cycle-trustless-path-through-pdg) deposits directly from the stVault Balance without withdrawing ETH first, so this way stays available even when your minting capacity is fully utilized. +- The [**PDG shortcut**](./node-operators/pdg#pdg-shortcut) works by withdrawing ETH from the vault and side-depositing it to the validator — which isn't possible once that ETH is locked as collateral for minted stETH. + +This also affects when queued (not-yet-active) ETH counts toward your minting capacity: + +- **If the validator is already active**, ETH sitting in the activation queue is counted by the Oracle as part of the stVault [Total Value](./concepts-and-reference/metrics.md#total-value), so any deposit method — full PDG flow, PDG shortcut, or any other side-deposit — works fine. +- **If the validator doesn't exist yet**, the accounting Oracle doesn't count such ETH as part of stVaults Total Value so it's not possible to mint stETH against this ETH, until the validator is activated and its balance is proven by the Oracle. + +The technical detailese are explained in the [Predeposit Guarantee guide](./node-operators/pdg.md). +
+ +
+Does fee settlement impact stETH Minting Capacity or Liability? + +No. Settling Node Operator or Lido fees changes neither your stETH Minting Capacity nor your stETH Liability. + +This is because undisbursed fees are already subtracted from Total Value before the [Reserve Ratio](./concepts-and-reference/metrics.md) is applied — whether or not they've been paid out yet: + +In simplified terms, stETH Minting Capacity can be calculated as: +``` +stETH minting capacity = +(Total Value − undisbursed Node Operator fees − unsettled Lido fees) × (1 − Reserve Ratio) +``` +*For the exact calculation, including Minimal Reserve and other constraints, see the [stETH Minting Capacity formula](./concepts-and-reference/metrics.md#total-steth-minting-capacity).* + +Example: +- Total Value = 100 ETH +- Reserve Ratio = 5% +- Undisbursed Node Operator fees = 1 ETH +- Unsettled Lido fees = 1 ETH +``` +stETH minting capacity = (100 − 1 − 1) × (1 − 5%) = 93.1 stETH +``` + +While these fees remain part of stVault Total Value (i.e. not yet paid out), that ETH still participates in validation — so it keeps contributing to capital efficiency even though it's already excluded from your minting capacity. + +Now settle 1 ETH of fees: that ETH leaves the stVault balance, and Total Value drops by the same amount: + +``` +stETH minting capacity = (99 − 1) × (1 − 5%) = 93.1 stETH +``` + +The result is identical — the fee amount was already excluded from the calculation before settlement. That's why paying out fees has no effect on either metric. + +
\ No newline at end of file diff --git a/run-on-lido/stvaults-new/index.md b/run-on-lido/stvaults-new/index.md index 37a7bbc2e..154f565a9 100644 --- a/run-on-lido/stvaults-new/index.md +++ b/run-on-lido/stvaults-new/index.md @@ -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 diff --git a/run-on-lido/stvaults-new/node-operators/consolidations.md b/run-on-lido/stvaults-new/node-operators/consolidations.md index 1cc099baf..4ce5ef69c 100644 --- a/run-on-lido/stvaults-new/node-operators/consolidations.md +++ b/run-on-lido/stvaults-new/node-operators/consolidations.md @@ -180,7 +180,7 @@ For detailed CLI options, see [stVault operations documentation](https://lidofin - [ValidatorConsolidationRequests contract](/contracts/validator-consolidation-requests) - [Dashboard contract](/contracts/dashboard) -- [stVaults Roles and Permissions](../vault-owners-curators-and-stakers/basic-stvaults/roles-and-permissions.md) +- [stVaults Roles and Permissions](../concepts-and-reference/roles-and-permissions.md) - [Apply oracle reports](../vault-owners-curators-and-stakers/basic-stvaults/apply-oracle-reports.md) - [EIP-7251: Increase the MAX_EFFECTIVE_BALANCE](https://eips.ethereum.org/EIPS/eip-7251) - [stVaults CLI documentation](https://lidofinance.github.io/lido-staking-vault-cli/) diff --git a/run-on-lido/stvaults-new/qualified-custodians/cactus.md b/run-on-lido/stvaults-new/qualified-custodians/cactus.md index d7626a76e..f4f809785 100644 --- a/run-on-lido/stvaults-new/qualified-custodians/cactus.md +++ b/run-on-lido/stvaults-new/qualified-custodians/cactus.md @@ -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) \ No newline at end of file +- [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) \ No newline at end of file diff --git a/run-on-lido/stvaults-new/qualified-custodians/copper.md b/run-on-lido/stvaults-new/qualified-custodians/copper.md index abcc3bd8b..e08308bed 100644 --- a/run-on-lido/stvaults-new/qualified-custodians/copper.md +++ b/run-on-lido/stvaults-new/qualified-custodians/copper.md @@ -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) \ No newline at end of file +- [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) \ No newline at end of file diff --git a/run-on-lido/stvaults-new/qualified-custodians/fireblocks.md b/run-on-lido/stvaults-new/qualified-custodians/fireblocks.md index e32c5e40a..73fa158f8 100644 --- a/run-on-lido/stvaults-new/qualified-custodians/fireblocks.md +++ b/run-on-lido/stvaults-new/qualified-custodians/fireblocks.md @@ -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) \ No newline at end of file +- [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) \ No newline at end of file diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/control-validators.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/control-validators.md index 40c57000a..f127af5bf 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/control-validators.md +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/control-validators.md @@ -21,7 +21,7 @@ There are two ways to get ETH back from validators: | Node Operator | Exit validators directly | the Node Operator address, non-delegable | | stVaults Committee, Lido DAO | Force a full exit | only while the stVault has an obligations shortfall | -All Vault Owner permissions above are held by the admin by default and can be delegated — see [Roles and permissions](./roles-and-permissions.md). +All Vault Owner permissions above are held by the admin by default and can be delegated — see [Roles and permissions](../../concepts-and-reference/roles-and-permissions.md). ## Request a validator exit @@ -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). diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md index a3d9c24cf..7d058e564 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-emergency-guide.md @@ -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 @@ -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: diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md index 2bf122f73..3a1134fb9 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/health-monitoring-guide.md @@ -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). diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/rebalance.md similarity index 98% rename from run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md rename to run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/rebalance.md index 981a3b5bd..3f8315943 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/rebalance-guide.md +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/rebalance.md @@ -22,7 +22,7 @@ Repaying is the better option whenever the stETH can be acquired — see [Supply ## Before you start -- **`REBALANCE_ROLE` is required** — by default the Vault Owner has it; it can be delegated. See [Roles and permissions](./roles-and-permissions.md). +- **`REBALANCE_ROLE` is required** — by default the Vault Owner has it; it can be delegated. See [Roles and permissions](../../concepts-and-reference/roles-and-permissions.md). - **A fresh oracle report must be applied.** The call reverts with `VaultReportStale` otherwise. The Web UI handles this automatically; via CLI or Etherscan the report has to be applied first — see [Apply oracle reports](./apply-oracle-reports.md). - **The ETH must be on the stVault balance, not on validators.** If most of the stVault's ETH is staked, request validator exits first and wait for the ETH to be swept back. diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md new file mode 100644 index 000000000..153fbe9b5 --- /dev/null +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/redemptions_coverage_with_steth.md @@ -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](../../concepts-and-reference/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](../../concepts-and-reference/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. \ No newline at end of file diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/supply-withdraw-mint-repay.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/supply-withdraw-mint-repay.md index 241a1bdc6..4cc567744 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/supply-withdraw-mint-repay.md +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/supply-withdraw-mint-repay.md @@ -15,7 +15,7 @@ All four are permissioned on the [`Dashboard`](/contracts/dashboard) contract. B | Mint | `MINT_ROLE` | | Repay (burn) | `BURN_ROLE` | -An address holding `DEFAULT_ADMIN_ROLE` can perform all of them without granting itself the sub-roles — see [Roles and permissions](./roles-and-permissions.md). +An address holding `DEFAULT_ADMIN_ROLE` can perform all of them without granting itself the sub-roles — see [Roles and permissions](../../concepts-and-reference/roles-and-permissions.md). :::warning Withdrawing and minting depend on the current stVault state. Make sure a fresh oracle report is applied to your stVault before you start — see [Apply oracle reports](./apply-oracle-reports.md). @@ -66,7 +66,7 @@ To be withdrawable, ETH has to be both: - **Liquid** — sitting on the stVault balance, not on validators. ETH on validators must be withdrawn from the Beacon Chain first. - **Unlocked** — not reserved as collateral for the stETH liability, as the minimal reserve, for pending [Lido redemptions](../../concepts-and-reference/stvaults-detailed-technical-design.md#2-redemptions), or for unpaid fees. -See [Metrics](./metrics.md) for the full breakdown and where to find the current number. +See [Metrics](../../concepts-and-reference/metrics.md) for the full breakdown and where to find the current number.
using stVaults Web UI @@ -99,7 +99,7 @@ See [details and examples](https://lidofinance.github.io/lido-staking-vault-cli/ ## Mint stETH -Once ETH is supplied, stETH can be minted against it on demand. Unlike Lido Core, stVaults allow minting only within the stVault's [stETH minting capacity](./metrics.md). +Once ETH is supplied, stETH can be minted against it on demand. Unlike Lido Core, stVaults allow minting only within the stVault's [stETH minting capacity](../../concepts-and-reference/metrics.md). Three flavours are available, all of them payable so funding and minting fit in one transaction: @@ -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.
using stVaults Web UI diff --git a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/validate-setup.md b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/validate-setup.md index 21fef2e21..f9130a558 100644 --- a/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/validate-setup.md +++ b/run-on-lido/stvaults-new/vault-owners-curators-and-stakers/basic-stvaults/validate-setup.md @@ -50,7 +50,7 @@ Both admin roles and every sub-role are readable on the `Dashboard` contract. Ch - **`NODE_OPERATOR_MANAGER_ROLE` is the operator's address** you agreed on. - **No sub-role was granted to an address you do not recognise.** The factory accepts a list of role assignments at creation, so sub-roles can already be in place before you ever see the stVault. An admin can perform every operation in its scope anyway, so any sub-role holder is an extra key to your stVault. -Roles can be changed later, so a surprise here is recoverable — see [Roles and permissions](./roles-and-permissions.md). +Roles can be changed later, so a surprise here is recoverable — see [Roles and permissions](../../concepts-and-reference/roles-and-permissions.md).
using stVaults Web UI @@ -115,7 +115,7 @@ yarn start contracts dashboard read node-operator-fee-recipient