Skip to content

Commit

Permalink
Copy of restaking mainnet reorg (#181)
Browse files Browse the repository at this point in the history
Co-authored-by: Wes Foyd <[email protected]>
  • Loading branch information
dabit3 and wesfloyd authored Apr 8, 2024
1 parent 95a7296 commit a43dbf9
Show file tree
Hide file tree
Showing 46 changed files with 173 additions and 422 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"position": 1,
"label": "Liquid Restaking"
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Restake LSTs
---
sidebar_position: 1
---


# Restake LSTs

## Restake with Liquid Staking Tokens
**Step 1:** Open the EigenLayer App and connect your Web3 wallet. Visit EigenLayer on the Ethereum Mainnet at app.eigenlayer.xyz.

**Step 1:** Open the EigenLayer App and connect your Web3 wallet, making sure you are connected to the Ethereum Mainnet network. Visit EigenLayer on the Ethereum Mainnet at [**app.eigenlayer.xyz**](https://app.eigenlayer.xyz/)**.**
![](/img/googleusercontentbackup/OZIhNy0g6_p2e6kR0yF9BJxHQcdhHNEnQSWwBokS3tSy2cd9bUyU0tve-ApItvVm7bJHKHum1T_2tgZhwa_LSyi7ScQdALSsUQioM0qMxZWcqWKhmtIQ7xcdOGtTOT6Uf18KnCs_zWgbXHLOtUqguSI.png)

**Step 2:** Select the token you want to restake.

Expand All @@ -14,12 +17,7 @@ If this is your first time depositing a token on EigenLayer, you'll need to **Ap

**Step 4:** Once the token Approval transaction is confirmed, you will be prompted to confirm the **Deposit** transaction.

**Step 5:** Confirm the **Deposit** transaction via your wallet.

If successful, you will see the corresponding increase in your Restaked balance in the app:
**Step 5:** Confirm the **Deposit** transaction via your wallet. Observe the corresponding increase in your Restaked balance in the app:

![](/img/googleusercontentbackup/J5g4XOmz3hOOeQG2w6gFtPxzKLiyPq06v8pBQ2BNITHkfzVX1F26lm_Sf0qCxtIL-bTUye7w573yJub5S6iOA8xtJmOIjZybgLXiCM8YFZHj_6UFc2LEv8HLFmNO7OOLP0c1MmGnCBL7bH_DhsOLPBU.png)

**Step 6:** Monitor your Staking Rewards & Restaked Ratio on the [homepage](http://app.eigenlayer.xyz/).


Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
---
sidebar_position: 2
---


# Withdraw from EigenLayer

:::info
All funds unstaked from EigenLayer go through a 7-day escrow period before being able to be withdrawn. Thus after you initiate (queue) the withdrawal, you must wait 7-days before being able to withdraw your assets.
All funds unstaked from EigenLayer will go through an escrow period before being eligible to be fully withdrawn.
:::

**Step 1:** Navigate to the **Unstake tab**, enter your withdrawal amount, and click **Unstake**.

**Step 1:** Navigate to the Unstake tab, enter your withdrawal amount, and click **Next**.

**Step 2:** Click **Confirm** when prompted by your wallet. Once the transaction confirms, you should see your Restaked balance move to Unstaking.

![](/img/restake-guides/lst-m1-mainnet-withdrawal1.png)
![](/img/googleusercontentbackup/Ol33uK-uNL7K5vXmWDyI_eVWQOT75Jx7kR9Q75Qn5547ExC0KwfBFn6SikZgfOIYqU2od1OSjXlsA9WXpDa653AXPc38mNQ9ESmSZX0pPxGnleA9QFOgSTpCEYzkzr051HyJwlvMMNpfdS_BBvxARz0.png)

**Step 3:** Your withdrawal is now in escrow. Wait for the escrow period to complete.
**Step 3:** Your withdrawal is now in escrow. **Wait** for the escrow period to complete.

**Step 4:** Once the escrow completes, you'll see the balance under Available to withdraw. Click **Withdraw** to finalize the process.

![](/img/restake-guides/lst-m1-mainnet-withdrawal2.png)
![](/img/googleusercontentbackup/VXO97JjR5VLDR8u0afZ6g9bq2zDScyP_UyQ4tkkc8J2IYWgfUIOUxIm08micsb8_kIne-aftSKuzwHBpoJV0NUGbWil-Zw0fUHdYUMgte5k6DbEj8dxpSvLT3V3k_DS78BO6c9GG3nDids7LGOyLbME.png)

![](/img/googleusercontentbackup/RLMOGvPSu2_BPRIu4o32LZIKFgSOySe8tatR67-pGsFPZxVmk1RSLvkNT_FHXcZUDtP8eINc2EQUG3y4X0yVM7l6Ly1q2iE8v1j6VDr7vI1wtR4GqKBsrLgc9pUwMvzu9UeXQbsumCSlGPNRiX9-1vA2.png)
![](/img/googleusercontentbackup/RLMOGvPSu2_BPRIu4o32LZIKFgSOySe8tatR67-pGsFPZxVmk1RSLvkNT_FHXcZUDtP8eINc2EQUG3y4X0yVM7l6Ly1q2iE8v1j6VDr7vI1wtR4GqKBsrLgc9pUwMvzu9UeXQbsumCSlGPNRiX9-1vA.png)
Original file line number Diff line number Diff line change
@@ -1,21 +1,33 @@
---
description: How to restake and withdraw with Native Staking
sidebar_position: 2
title: Native Restaking
---

# Native Restaking

Native Restaking is the process of pointing an Ethereum validator's [withdrawal credentials](https://notes.ethereum.org/@launchpad/withdrawals-faq#Q-What-are-withdrawals) to the user's [EigenPod](./create-eigenpod/README.md). You must operate an Ethereum Validator node in order to participate in Native Restaking. To learn more or set up your Ethereum Validator please follow this link from the[ Ethereum Foundation](https://launchpad.ethereum.org/).
Native restaking describes the process of changing an Ethereum validator's[ withdrawal credentials](https://notes.ethereum.org/@launchpad/withdrawals-faq#Q-What-are-withdrawals) to EigenLayer's smart contracts. You must operate an Ethereum Validator node in order to participate in Native Restaking. To learn more or set up your Ethereum Validator please follow this link from the[ Ethereum Foundation](https://launchpad.ethereum.org/).

:::warning
Please read this entire guide before launching your new validator or integrating your existing validator.

Before you deploy a new validator you must plan to either:

:::info
Please read this entire guide before launching your new validator or integrating your existing validator. Before you deploy a new validator you must plan to either:
- Initially provision the withdrawal credentials to your EigenPod address (created on the next page).
- Initially provision the withdrawal credentials to an 0x00 address. You can then later modify your withdrawal credentials to your EigenPod address. Note that you can only change the withdrawal credential for 0x00 validators once.
- Initially provision the withdrawal credentials to an 0x00 address. You can then later modify your withdrawal credentials to your EigenPod address.

:::

Native Restaking on EigenLayer consists of the following actions:
1. [Verify Validator Withdrawal Prefix](validator-eligibility-withdrawal-prefix.md)
1. For existing 0x01 validators you need to [exit your validators](./withdrawal-flow/withdrawing-a-validator-from-consensus-layer.md).
1. [Create EigenPod](./create-eigenpod/README.md).
1. Deploy New Validators and [Set Withdrawal Credentials](repointing-a-validators-withdrawal-credentials.md) to your EigenPod or provision as 0x00 prefix to change later.
1. If deployed as 0x00 prefix you will need to [Set Withdrawal Credentials](repointing-a-validators-withdrawal-credentials.md) Credentials to your EigenPod.
1. [Withdraw from EigenLayer](./withdrawal-flow/README.md).

1. Create New EigenPod, Set Withdrawal Credentials, Enable Restaking
1. Upgrade Existing EigenPod
1. Withdraw from EigenLayer

### Stage 1 EigenPods Upgrade Requirement

Existing Stage 1 EigenPods will need to be **Upgraded** in order to be **actively restaked**. After the Eigenlayer contracts are updated for Stage 2 the EigenPod's "Current Restaked" amount will be moved to "Awaiting Restake" and the "Upgrade EigenPod" button will be clickable. EigenPods can then become actively Restaked by following the instructions in Upgrade Existing Eigenpod(link).


### Deposit and Withdrawal Costs

Native Restaking Deposit and Withdrawal transactions will incur additional gas fees due to the required proof verification. Restaking with EigenLayer requires proof of beacon chain staking and active validator status. This proof is generated off chain during Deposit and Withdrawal then verified on chain. The verification process will incur a gas fee of approximately 200k gas + a fixed fee per proof that will be around 0.01 ETH. Please plan and budget accordingly for associated costs.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
sidebar_position: 7
---

# Confirming Validator Withdrawal and Execution Addresses (Optional)
# Confirm Validator Withdrawal and Execution Addresses (Optional)

Verifying your Validator’s Withdrawal and Execution addresses can help ensure you have configured your Native Restaking with EigenLayer safely. The instructions below will help you ensure that your Withdrawal address is set to your EigenPod and that your Execution address (aka “Fee Recipient”) is not set to your EigenPod.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
sidebar_position: 1
---

# Create EigenPod and Set Withdrawal Credentials

An [EigenPod](https://github.com/Layr-Labs/eigenlayer-contracts/blob/master/docs/core/EigenPodManager.md) is a smart contract managed by users, designed to facilitate the EigenLayer protocol in monitoring and managing balance and withdrawal statuses. Please review the following considerations when planning your EigenPod and validator operations:
Expand All @@ -7,17 +11,21 @@ An [EigenPod](https://github.com/Layr-Labs/eigenlayer-contracts/blob/master/docs
- The address that deploys an EigenPod becomes the owner of the contract and gains permission for restaking and withdrawal operations.
- Ownership of an EigenPod cannot be transferred.

**Step 1:** Open the[ EigenLayer App](https://holesky.eigenlayer.xyz/) and connect your Web3 wallet, making sure you are connected to Ethereum mainnet.
**Step 1:** Open the [EigenLayer App](https://app.eigenlayer.xyz/) and connect your Web3 wallet, making sure you are connected to Ethereum mainnet.

![](/img/googleusercontentbackup/HNaZjUx0-Tp6xqPD7T6BVccmiXiwbTLD2g4jw4R87xpGw_XsTAqXXJ1eYIBOeYKZOaQ0RcYBsOr3OrZL0xUG8l6xumGHqAbByRFYHe6Qoe5zeUgHL2fYCWnCi1SNNgIkTIdj8db9t3LHVsAJi6qA5Ys.png)

**Step 2:** Review the Terms of Service & Privacy Policy. Click Sign to continue and accept the transaction in your wallet to continue.
**Step 2:** Review the Terms of Service & Privacy Policy. Click **Sign** to continue and accept the transaction in your wallet to continue.

![](/img/googleusercontentbackup/NAjPWmiVugcK4LBKRe-Sj8bZKf5c9oR-hRmvr0jeQg3XN-eUdlasEru71Zjb59p30QnF-7fUbflVfEMxnfqC9HdQJXV2zpo3E7x1HgJm91bNybpzYbo4er1cPO8fv514uyZVcdT6Xu8GVFQHA6iT1pI.png)

<img src="/img/overview/eigenlayer-arch-v2.png" width="75%"
style={{ margin: '50px'}}>
</img>

![](/img/googleusercontentbackup/iLPD5MfrJT8krjQtly8sUUiqKtpTWXD58Ajp_jfKNTnNcV07s8TD-A2H0GLyPOmTHvFUWGho7qjICYzzhAvpyTwJh_Mpiq_k6lMWsNL7H5ns9OCVRa6MnjMpFpNDkNakfdTPVRcElFSfslcVJTHByN0.png)

**Step 3:** Click **Create EigenPod**
**Step 3:** Click **Create EigenPod** to continue.

![](/img/googleusercontentbackup/JmrdFSRiYNSe_77cpb8ut3ZEH4FIgyO1D4Sm76QM3mi6agrvsXQ1_I6t_CVnZ3hP3YRFrVGPvHWo7rQFxhYylYSO02XTQ02wKFjpRdN1auJDmGJAdJJ6ubmAJ0XfbiEbeH_4n9Aq0VDMBkD_I4g-n_0.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 4
sidebar_position: 3
---

# Enable Restaking
Expand All @@ -10,18 +10,18 @@ After your Beacon chain ETH balance has been proven and verified on chain, you w
This process can take **up to 4 hours** after your validators have entered the active state on the beacon chain. You may use [beaconcha.in](https://beaconcha.in) as a reference during this process.
:::

**Step 1:** Click Restake from the Beacon Chain Ether page.
**Step 1:** Click **Restake** from the Beacon Chain Ether page.

![](/img/testnet-restake-guides/enable-restake-1.png)
![](/img/restake-guides/enable-restake-1.png)

**Step 2:** Observe the app is fetching beacon chain proofs and validating them on-chain.

![](/img/googleusercontentbackup/TEQS3Nkjxf9NYe382VZ4UqYatO1r0QAtYvLYVmDavOhl7KkD-xyVamKulgxXVIFPe96u0VCs-gVbQ2UR7Oh-ZuktcHYP0Gfozqq2ZRFEpLhct9GXssVXf5ZZui9MmEKubqwekKrg2mPU9wZrDf8ZzPU.png)

![](/img/testnet-restake-guides/enable-restake-2.png)
![](/img/restake-guides/enable-restake-2.png)

**Step 3:** Confirm the transaction via your Web3 wallet.
**Step 3:** **Confirm** the transaction via your Web3 wallet.

**Step 4:** Observe your Beacon Chain Restaked and Total Restaked balances have increased accordingly.

![](/img/testnet-restake-guides/enable-restake-3.png)
![](/img/restake-guides/enable-restake-3.png)
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
sidebar_position: 2
---

# Repoint Validator Withdrawal Credentials
# Set Validator Withdrawal Credentials

:::info
If you do not know your withdrawal prefix, please review [Validator Withdrawal Prefix](validator-eligibility-withdrawal-prefix.md "mention") before starting this guide.
Expand Down Expand Up @@ -30,7 +30,7 @@ ethdo validator credentials get --validator=VALIDATOR_INDEX

5. Finally, navigate to the your EigenPod dashboard on the EigenLayer app and check that the number of restaked validators matches the number of validators whose withdrawal credentials you repointed:

![validator](/img/testnet-restake-guides/native-stake-repoint-1.png)
![validator](/img/restake-guides/native-stake-repoint-1.png)

### Option 2: Consensus Client

Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
---
sidebar_position: 3
sidebar_position: 2
---

# Upgrade EigenPod
# EigenPod Upgrade Guide

If your EigenPod was created prior to Stage 2, you will need to upgrade your EigenPod per the steps below. Otherwise, please proceed to the [Enable Restaking section](enable-restaking.md).
If your EigenPod was created prior to Stage 2, you will need to upgrade your EigenPod per the steps below.

EigenLayer Phase 2 enables proving of the state of your validators from the beacon chain to EigenLayer smart contracts to confirm the amount restaked. As a result EigenPods that were created prior to M2 contract upgrades are required to have their balances reset to zero, then generate the proofs through the EigenLayer app in order to ensure proof accounting is accurate.
EigenLayer Stage 2 enables proving the state of your validators from the beacon chain to EigenLayer smart contracts to confirm the amount restaked. As a result EigenPods that were created prior to M2 contract upgrades are required to have their balances reset to zero, then generate the proofs through the EigenLayer app in order to ensure proof accounting is accurate.

**Step 1:** Click Upgrade EigenPod
**Step 1:** Click **Upgrade EigenPod**.

![](/img/googleusercontentbackup/61Hr6KpClvZphbwp8ErDsDHuOKZ6MtLpWKCrjPFtfX7oedLGTZKEf8oDSr-5lBAuIXHsPCU6Zu3pfn5GRSQVGMr_3ZyWYGDwEHG33lqVoOx-b0VwNt_Z8Zd1Oa7UizNFBWlJKpFPx9sRR71VLajWlPI.png)

**Step 2:** Review the fee recipient warning and click Continue.
**Step 2:** Review the fee recipient warning and click **Continue**.

![](/img/googleusercontentbackup/HINccC3vXwq1qQWgwQXNBpKqrpKcNPv16EabLwJEIB0wTfajaCIOdZM0HChbBkzuAA8WnqCb2sSGEOLmKUaOOUgS_w75sJdNRnw2PC0fflk9TE2ZHvcIeBSqMC4ier_W6ziVGzAwXgpMIwdtEyEt814.png)

**Step 3:** Review the disclaimer that you are about to trigger a withdrawal of Consensus Rewards from your EigenPod. Click Confirm
**Step 3:** Review the disclaimer that you are about to trigger a withdrawal of Consensus Rewards from your EigenPod. Click **Confirm** to continue.

![](/img/googleusercontentbackup/iW-3_ywJeXlzjnKCZu8lvKKeZVgkOVGuWp_UZKih70iiN-dnVDZwRB0_BnVrScAzjvR_MXe4COzw7u-QdO2si1MpAJuhljHjNekQ7KeDOSzRiz3nrytVd5LbbuaMVqd_AuXUVZ4DsiW5HlXcSZtL6xM.png)

Expand Down
Loading

0 comments on commit a43dbf9

Please sign in to comment.