From ad2a924b91b281638602bbf74a006a316261b54e Mon Sep 17 00:00:00 2001 From: Nikita L Date: Wed, 18 Mar 2026 16:01:50 +0300 Subject: [PATCH 1/6] fix: add disconnect guide --- .../disconnect-guide.md | 294 ++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md diff --git a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md new file mode 100644 index 000000000..02972ded3 --- /dev/null +++ b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md @@ -0,0 +1,294 @@ +--- +sidebar_position: 5 +--- + +# 🔌 DeFi Wrapper Disconnect Guide + +This guide walks through the full process of disconnecting a DeFi Wrapper (pooled staking product) from the Lido protocol and distributing remaining assets to users. + +:::warning +Disconnecting a DeFi Wrapper is an irreversible operation that affects all pool users. Ensure you communicate the timeline and plan to your users well in advance. +::: + +## Overview + +1. **Assign required roles** to a trusted actor via the Timelock Controller. +2. **Exit all validators** (voluntarily or forcibly). +3. **Pause withdrawals** on the Withdrawal Queue and **finalize all pending withdrawal requests**. +4. **Pause deposits and minting** on the Pool contract. +5. **Rebalance the Staking Vault** to zero liability. +6. **Disconnect the stVault** — follow the [stVault Disconnect Guide](../../operational-and-management-guides/stvault-disconnect-guide.md) (initiate voluntary disconnect, apply oracle report, abandon Dashboard, accept ownership). +7. **Withdraw assets** from the Staking Vault and **distribute them to users** via the Distributor. + +Steps 1–5 are DeFi Wrapper-specific and covered below. Step 6 follows the standard stVault disconnect flow. Step 7 covers asset distribution and user claiming. + +--- + +## Step 1. Assign required roles + +The disconnect process requires multiple roles across the Pool, Withdrawal Queue, and Dashboard contracts. Grant these roles to a trusted actor via the Timelock Controller. + +| Role | Contract | Purpose | +| --- | --- | --- | +| `LOSS_SOCIALIZER_ROLE` | Pool | Force rebalance undercollateralized users | +| `DEPOSITS_PAUSE_ROLE` | Pool | Pause new deposits | +| `MINTING_PAUSE_ROLE` | Pool | Pause stETH minting | +| `WITHDRAWALS_PAUSE_ROLE` | Withdrawal Queue | Pause new withdrawal requests | +| `FINALIZE_ROLE` | Withdrawal Queue | Finalize pending withdrawal requests | +| `TRIGGER_VALIDATOR_WITHDRAWAL_ROLE` | Dashboard | Force validator exits | +| `REBALANCE_ROLE` | Dashboard | Rebalance the vault | + +Schedule and execute a batch transaction through the Timelock Controller to grant all roles at once: + +``` +targets: [Pool, Pool, Pool, WithdrawalQueue, WithdrawalQueue, Dashboard, Dashboard] +payloads: [ + grantRole(LOSS_SOCIALIZER_ROLE, trustedActor), + grantRole(DEPOSITS_PAUSE_ROLE, trustedActor), + grantRole(MINTING_PAUSE_ROLE, trustedActor), + grantRole(WITHDRAWALS_PAUSE_ROLE, trustedActor), + grantRole(FINALIZE_ROLE, trustedActor), + grantRole(TRIGGER_VALIDATOR_WITHDRAWAL_ROLE, trustedActor), + grantRole(REBALANCE_ROLE, trustedActor) +] +``` + +--- + +## Step 2. Exit all validators + +Exit all validators associated with the Staking Vault. This moves ETH from the Beacon Chain back to the vault balance. + +- **Voluntary exit:** Request exits through your standard validator management tooling. +- **Forced exit:** If voluntary exits are not possible, call `Dashboard.triggerValidatorWithdrawals()` from an account with `TRIGGER_VALIDATOR_WITHDRAWAL_ROLE`: + +```bash +yarn start contracts dashboard w trigger-v-w +``` + +:::info +The `triggerValidatorWithdrawals` call requires sending a small withdrawal fee (currently ~10 gwei per validator) to cover the EIP-7002 triggerable withdrawal fee. +::: + +Wait for all validator exits to complete and ETH to be swept back to the Staking Vault balance before proceeding. + +--- + +## Step 3. Pause withdrawals and finalize pending requests + +### 3.1. Pause new withdrawal requests + +Prevent users from creating new withdrawal requests by calling `WithdrawalQueue.pauseWithdrawals()` from an account with `WITHDRAWALS_PAUSE_ROLE`: + +```bash +yarn start dw c wq w pause +``` + +### 3.2. Finalize all pending withdrawal requests + +Before disconnecting, all pending withdrawal requests must be finalized. + +An oracle report may be required before finalization to update the vault state. Apply a fresh report if needed. + +Call `WithdrawalQueue.finalize(maxRequests, gasCostCoverageRecipient)` from an account with `FINALIZE_ROLE`: + +```bash +yarn start dw c wq w finalize +``` + +After finalization, verify all requests are processed — `unfinalizedRequestsNumber()`, `unfinalizedStv()`, `unfinalizedAssets()`, and `unfinalizedStethShares()` should all return `0`. + +--- + +## Step 4. Pause deposits and minting + +### 4.1. Pause deposits + +Call `Pool.pauseDeposits()` from an account with `DEPOSITS_PAUSE_ROLE`: + +```bash +yarn start dw c stv w pause-deposits +``` + +### 4.2. Pause minting + +Call `Pool.pauseMinting()` from an account with `MINTING_PAUSE_ROLE`: + +```bash +yarn start dw c stv w pause-minting +``` + +After pausing, any attempts to deposit ETH, mint stETH shares, or mint wstETH will revert. + +--- + +## Step 5. Rebalance the Staking Vault to zero liability + +### 5.1. Force rebalance undercollateralized users (if any) + +If any pool users are undercollateralized, force rebalance them by calling `Pool.forceRebalanceAndSocializeLoss()` from an account with `LOSS_SOCIALIZER_ROLE`. + +### 5.2. Rebalance the vault + +Check the current liability: + +```bash +yarn start contracts dashboard r liability-shares +``` + +Call `Dashboard.rebalanceVaultWithShares(liabilityShares)` from an account with `REBALANCE_ROLE`, passing the full `liabilityShares` amount to bring the liability to zero: + +```bash +yarn start contracts dashboard w rebalance-vault-with-shares +``` + +:::warning +The disconnect will revert with `NoLiabilitySharesShouldBeLeft` if any liability shares remain. Ensure `Dashboard.liabilityShares()` returns `0` before proceeding. +::: + +--- + +## Step 6. Disconnect the stVault + +Follow the [stVault Disconnect Guide](../../operational-and-management-guides/stvault-disconnect-guide.md) to complete the disconnection: + +1. **Initiate voluntary disconnect** — schedule and execute `Dashboard.voluntaryDisconnect()` through the Timelock Controller. Requires a fresh oracle report. +2. **Apply the next oracle report** — finalizes the disconnection. +3. **Abandon Dashboard** — call `Dashboard.abandonDashboard(newOwner)` from the Timelock Controller. +4. **Accept ownership** — call `StakingVault.acceptOwnership()` from the `newOwner` address. + +--- + +## Step 7. Withdraw assets and distribute to users + +After disconnection, remaining ETH in the vault must be distributed to pool users through the Distributor contract. + +### 7.1. Get the Distributor address + +```bash +yarn start dw c stv r DISTRIBUTOR +``` + +### 7.2. Convert vault ETH to wstETH + +The Distributor contract does not accept raw ETH, so the vault balance must be converted to wstETH first. + +Call `StakingVault.withdraw(recipient, amount)` with the **wstETH contract address** as the recipient. The wstETH contract has a `receive()` function that automatically stakes incoming ETH into stETH and mints wstETH back to the sender (the vault): + +```bash +yarn start contracts vault w withdraw +``` + +After this call, the vault holds wstETH tokens (not ETH). + +:::info +Make sure you account for the Initial Connect Deposit (1 ETH) that was unlocked after disconnect — it is now part of the available balance. +::: + +### 7.3. Transfer wstETH to the Distributor + +Send the wstETH from the vault to the Distributor contract using `collectERC20`: + +```bash +yarn start contracts vault w collect-erc20 +``` + +### 7.4. Add wstETH as a supported distribution token + +If wstETH is not yet registered in the Distributor, add it: + +```bash +yarn start dw uc distributor w add-token +``` + +### 7.5. Generate the Merkle tree, upload to IPFS, and set the root + +The CLI provides a single command that handles the entire distribution flow: + +1. Calculates each user's share based on their time-weighted pool token balance. +2. Builds a Merkle tree mapping each user to their cumulative claimable amount. +3. Transfers tokens to the Distributor contract (if not already transferred). +4. Uploads the Merkle tree to IPFS (optional, via `--upload`). +5. Sets the Merkle root and CID on-chain. + +```bash +yarn start dw uc distributor w distribute : \ + --upload \ + --output-path ./distribution.json +``` + +**Options:** + +| Option | Description | +| --- | --- | +| `--blacklist ` | Addresses to exclude from distribution | +| `--from-block ` / `--to-block ` | Block range for processing transfer events | +| `--output-path ` | Path to save the distribution JSON | +| `--upload [pinningUrl]` | Upload the Merkle tree to an IPFS pinning service | +| `--skip-transfer` | Skip transferring tokens to the Distributor (if already done in step 7.3) | +| `--skip-set-root` | Generate the tree without setting the root on-chain | +| `--skip-write` | Skip writing the distribution JSON to file | + +:::info +Since tokens were already transferred in step 7.3, use `--skip-transfer` to avoid a duplicate transfer: + +```bash +yarn start dw uc distributor w distribute : \ + --skip-transfer \ + --upload +``` +::: + +The caller must have `MANAGER_ROLE` on the Distributor contract. + +### 7.6. Verify the distribution + +Check the Distributor state: + +```bash +yarn start dw uc distributor r state +``` + +--- + +## User: claiming funds + +After the operator has distributed assets and published the Merkle tree, users can claim their share. + +### Claiming from the Distributor + +Users claim their wstETH allocation by providing a Merkle proof. The proof can be obtained from the Merkle tree published on IPFS (referenced by the CID on the Distributor contract). + +Preview the claimable amount: + +```bash +yarn start dw c distributor r previewClaim +``` + +Claim: + +```bash +yarn start dw c distributor w claim +``` + +Check already claimed amounts: + +```bash +yarn start dw c distributor r claimed +``` + +### Claiming ETH from previously requested withdrawals + +If the user had requested withdrawals before the disconnect, those requests were finalized by the operator during [Step 3](#step-3-pause-withdrawals-and-finalize-pending-requests). The ETH is ready but still held by the Withdrawal Queue — the user must explicitly claim it to receive it in their wallet: + +```bash +# Claim a single request +yarn start dw c wq w claim-withdrawal + +# Claim multiple requests +yarn start dw c wq w claim-withdrawals +``` + +:::info +The Withdrawal Queue remains functional for claims even after the pool is disconnected. Users can claim at any time. +::: From 0a2c15a78ae9a2655ef118d3a7a81d546c7fbc5c Mon Sep 17 00:00:00 2001 From: Nikita L Date: Wed, 18 Mar 2026 17:42:31 +0300 Subject: [PATCH 2/6] fix: distribute command add space --- .../pooled-staking-product/disconnect-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md index 02972ded3..7124b443d 100644 --- a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md +++ b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md @@ -212,7 +212,7 @@ The CLI provides a single command that handles the entire distribution flow: 5. Sets the Merkle root and CID on-chain. ```bash -yarn start dw uc distributor w distribute : \ +yarn start dw uc distributor w distribute \ --upload \ --output-path ./distribution.json ``` @@ -233,7 +233,7 @@ yarn start dw uc distributor w distribute : Since tokens were already transferred in step 7.3, use `--skip-transfer` to avoid a duplicate transfer: ```bash -yarn start dw uc distributor w distribute : \ +yarn start dw uc distributor w distribute \ --skip-transfer \ --upload ``` From fb3828e315052314f9e70bc891acc59d592afe80 Mon Sep 17 00:00:00 2001 From: Nikita L Date: Fri, 27 Mar 2026 14:13:54 +0300 Subject: [PATCH 3/6] fix: update docs for buiders --- .../pooled-staking-product/disconnect-guide.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md index 7124b443d..b50e97c88 100644 --- a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md +++ b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md @@ -187,7 +187,13 @@ Make sure you account for the Initial Connect Deposit (1 ETH) that was unlocked ### 7.3. Transfer wstETH to the Distributor -Send the wstETH from the vault to the Distributor contract using `collectERC20`: +First, retrieve the wstETH balance of the vault: + +```bash +yarn start account r info +``` + +Then send the wstETH from the vault to the Distributor contract using `collectERC20`, passing the retrieved ``: ```bash yarn start contracts vault w collect-erc20 @@ -243,12 +249,17 @@ The caller must have `MANAGER_ROLE` on the Distributor contract. ### 7.6. Verify the distribution -Check the Distributor state: +Check the Distributor state to confirm the distribution was successful: ```bash yarn start dw uc distributor r state ``` +Verify the following fields in the output: +- **Merkle Root** — must be a non-zero value, indicating the Merkle tree has been set +- **CID** — must contain a valid IPFS CID, confirming the distribution data was uploaded to IPFS. You can open the CID via an IPFS gateway to inspect which tokens and amounts were distributed +- **Last Processed Block** — shows the block number at which the distribution was made + --- ## User: claiming funds From e5b4b6cfce38a60728baa5bf32817a15174e079f Mon Sep 17 00:00:00 2001 From: Evgeny Taktarov Date: Fri, 27 Mar 2026 12:38:46 +0100 Subject: [PATCH 4/6] fix: update disconnect guide --- .../disconnect-guide.md | 84 +++++++++++-------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md index b50e97c88..b349ee10e 100644 --- a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md +++ b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md @@ -28,15 +28,15 @@ Steps 1–5 are DeFi Wrapper-specific and covered below. Step 6 follows the stan The disconnect process requires multiple roles across the Pool, Withdrawal Queue, and Dashboard contracts. Grant these roles to a trusted actor via the Timelock Controller. -| Role | Contract | Purpose | -| --- | --- | --- | -| `LOSS_SOCIALIZER_ROLE` | Pool | Force rebalance undercollateralized users | -| `DEPOSITS_PAUSE_ROLE` | Pool | Pause new deposits | -| `MINTING_PAUSE_ROLE` | Pool | Pause stETH minting | -| `WITHDRAWALS_PAUSE_ROLE` | Withdrawal Queue | Pause new withdrawal requests | -| `FINALIZE_ROLE` | Withdrawal Queue | Finalize pending withdrawal requests | -| `TRIGGER_VALIDATOR_WITHDRAWAL_ROLE` | Dashboard | Force validator exits | -| `REBALANCE_ROLE` | Dashboard | Rebalance the vault | +| Role | Contract | Purpose | +| ----------------------------------- | ---------------- | ----------------------------------------- | +| `LOSS_SOCIALIZER_ROLE` | Pool | Force rebalance undercollateralized users | +| `DEPOSITS_PAUSE_ROLE` | Pool | Pause new deposits | +| `MINTING_PAUSE_ROLE` | Pool | Pause stETH minting | +| `WITHDRAWALS_PAUSE_ROLE` | Withdrawal Queue | Pause new withdrawal requests | +| `FINALIZE_ROLE` | Withdrawal Queue | Finalize pending withdrawal requests | +| `TRIGGER_VALIDATOR_WITHDRAWAL_ROLE` | Dashboard | Force validator exits | +| `REBALANCE_ROLE` | Dashboard | Rebalance the vault | Schedule and execute a batch transaction through the Timelock Controller to grant all roles at once: @@ -211,29 +211,29 @@ yarn start dw uc distributor w add-token The CLI provides a single command that handles the entire distribution flow: -1. Calculates each user's share based on their time-weighted pool token balance. +1. Calculates each user's share based on their balance at the time of distribution. 2. Builds a Merkle tree mapping each user to their cumulative claimable amount. 3. Transfers tokens to the Distributor contract (if not already transferred). -4. Uploads the Merkle tree to IPFS (optional, via `--upload`). -5. Sets the Merkle root and CID on-chain. +4. Sets the Merkle root and CID on-chain. +5. Saves file locally so you can upload and pin to IPFS provider of choice ```bash yarn start dw uc distributor w distribute \ - --upload \ + --mode=snapshot \ --output-path ./distribution.json ``` **Options:** -| Option | Description | -| --- | --- | -| `--blacklist ` | Addresses to exclude from distribution | -| `--from-block ` / `--to-block ` | Block range for processing transfer events | -| `--output-path ` | Path to save the distribution JSON | -| `--upload [pinningUrl]` | Upload the Merkle tree to an IPFS pinning service | -| `--skip-transfer` | Skip transferring tokens to the Distributor (if already done in step 7.3) | -| `--skip-set-root` | Generate the tree without setting the root on-chain | -| `--skip-write` | Skip writing the distribution JSON to file | +| Option | Description | +| --------------------------------------------- | ------------------------------------------------------------------------- | +| `--blacklist ` | Addresses to exclude from distribution | +| `--from-block ` / `--to-block ` | Block range for processing transfer events | +| `--output-path ` | Path to save the distribution JSON | +| `--upload [pinningUrl]` | Upload the Merkle tree to an IPFS pinning service | +| `--skip-transfer` | Skip transferring tokens to the Distributor (if already done in step 7.3) | +| `--skip-set-root` | Generate the tree without setting the root on-chain | +| `--skip-write` | Skip writing the distribution JSON to file | :::info Since tokens were already transferred in step 7.3, use `--skip-transfer` to avoid a duplicate transfer: @@ -241,8 +241,9 @@ Since tokens were already transferred in step 7.3, use `--skip-transfer` to avoi ```bash yarn start dw uc distributor w distribute \ --skip-transfer \ - --upload + --mode=snapshot \ ``` + ::: The caller must have `MANAGER_ROLE` on the Distributor contract. @@ -256,39 +257,50 @@ yarn start dw uc distributor r state ``` Verify the following fields in the output: + - **Merkle Root** — must be a non-zero value, indicating the Merkle tree has been set - **CID** — must contain a valid IPFS CID, confirming the distribution data was uploaded to IPFS. You can open the CID via an IPFS gateway to inspect which tokens and amounts were distributed - **Last Processed Block** — shows the block number at which the distribution was made +### 7.7 Upload distribution to IPFS and pin the file + +When uploading the distribution to IPFS it's important to set CID to v0 format. + --- ## User: claiming funds -After the operator has distributed assets and published the Merkle tree, users can claim their share. +After the operator has distributed assets and published the Merkle tree, users can claim their share on the UI. + +:::info +For `stvStrategyPool` users must perform first step of withdrawal via UI to request funds back from underlying DeFi-strategy to proxy balance. +::: + +### Claiming with UI -### Claiming from the Distributor +Even when vault is disconnected users will be able to use UI: -Users claim their wstETH allocation by providing a Merkle proof. The proof can be obtained from the Merkle tree published on IPFS (referenced by the CID on the Distributor contract). +- request and claim withdrawals from underlying strategy vaults +- claim any previous claimable withdrawals from pool's `WithdrawalQueue` +- claim any distributed funds. In case of `stvStrategyPool` token are distributed to proxies but funds can be claimed via UI -Preview the claimable amount: +### Claiming with CLI -```bash -yarn start dw c distributor r previewClaim -``` +If you want you can claim funds on behalf of the users via CLI, but this will produce 1 transaction per user per token(batch transactions are supported via CLI and WalletConnect) Claim: ```bash -yarn start dw c distributor w claim +yarn start dw uc distributor w claim ``` -Check already claimed amounts: +You can adjust command with options: -```bash -yarn start dw c distributor r claimed -``` +- `--recipients [addresses...]` - listing only specific address to claim for +- `--tokens [addresses...]` - listing only specific tokens to claim +- `--print-only` - only print planned claim -### Claiming ETH from previously requested withdrawals +### Claiming ETH from previously requested withdrawals with CLI If the user had requested withdrawals before the disconnect, those requests were finalized by the operator during [Step 3](#step-3-pause-withdrawals-and-finalize-pending-requests). The ETH is ready but still held by the Withdrawal Queue — the user must explicitly claim it to receive it in their wallet: From ffc2106ea64bd0254405a7dfd87d08fd22126560 Mon Sep 17 00:00:00 2001 From: Nikita L Date: Thu, 2 Apr 2026 15:05:20 +0300 Subject: [PATCH 5/6] fix: review comments --- .../disconnect-guide.md | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md index b349ee10e..1665ef014 100644 --- a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md +++ b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md @@ -139,7 +139,7 @@ yarn start contracts dashboard r liability-shares Call `Dashboard.rebalanceVaultWithShares(liabilityShares)` from an account with `REBALANCE_ROLE`, passing the full `liabilityShares` amount to bring the liability to zero: ```bash -yarn start contracts dashboard w rebalance-vault-with-shares +yarn start contracts dashboard w rebalance-shares ``` :::warning @@ -173,6 +173,12 @@ yarn start dw c stv r DISTRIBUTOR The Distributor contract does not accept raw ETH, so the vault balance must be converted to wstETH first. +First, retrieve the available balance of the vault: + +```bash +yarn start contracts vault r available-balance +``` + Call `StakingVault.withdraw(recipient, amount)` with the **wstETH contract address** as the recipient. The wstETH contract has a `receive()` function that automatically stakes incoming ETH into stETH and mints wstETH back to the sender (the vault): ```bash @@ -196,7 +202,7 @@ yarn start account r info Then send the wstETH from the vault to the Distributor contract using `collectERC20`, passing the retrieved ``: ```bash -yarn start contracts vault w collect-erc20 +yarn start contracts vault w collect-erc20 ``` ### 7.4. Add wstETH as a supported distribution token @@ -242,6 +248,7 @@ Since tokens were already transferred in step 7.3, use `--skip-transfer` to avoi yarn start dw uc distributor w distribute \ --skip-transfer \ --mode=snapshot \ + --output-path= ``` ::: @@ -302,7 +309,15 @@ You can adjust command with options: ### Claiming ETH from previously requested withdrawals with CLI -If the user had requested withdrawals before the disconnect, those requests were finalized by the operator during [Step 3](#step-3-pause-withdrawals-and-finalize-pending-requests). The ETH is ready but still held by the Withdrawal Queue — the user must explicitly claim it to receive it in their wallet: +If the user had requested withdrawals before the disconnect, those requests were finalized by the operator during [Step 3](#step-3-pause-withdrawals-and-finalize-pending-requests). The ETH is ready but still held by the Withdrawal Queue — the user must explicitly claim it to receive it in their wallet. + +First, retrieve the user's withdrawal request IDs: + +```bash +yarn start dw c wq r withdrawalRequestsOf +``` + +Then claim the withdrawal(s): ```bash # Claim a single request From 1705a33536d004e94f81c9065473eed27c65da05 Mon Sep 17 00:00:00 2001 From: Nikita L Date: Thu, 2 Apr 2026 15:24:06 +0300 Subject: [PATCH 6/6] fix: added stv-steth for pause-deposits and pause-minting commands --- .../pooled-staking-product/disconnect-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md index 1665ef014..a91c973c3 100644 --- a/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md +++ b/run-on-lido/stvaults/building-guides/pooled-staking-product/disconnect-guide.md @@ -107,7 +107,7 @@ After finalization, verify all requests are processed — `unfinalizedRequestsNu Call `Pool.pauseDeposits()` from an account with `DEPOSITS_PAUSE_ROLE`: ```bash -yarn start dw c stv w pause-deposits +yarn start dw c stv-steth w pause-deposits ``` ### 4.2. Pause minting @@ -115,7 +115,7 @@ yarn start dw c stv w pause-deposits Call `Pool.pauseMinting()` from an account with `MINTING_PAUSE_ROLE`: ```bash -yarn start dw c stv w pause-minting +yarn start dw c stv-steth w pause-minting ``` After pausing, any attempts to deposit ETH, mint stETH shares, or mint wstETH will revert.