EigenLayer Node Guide

Etwf...G6Ct
26 Jan 2024
108



Decoding EigenLayer: The ETH Revolution with Restaking


While EigenLayer is widely recognized by now and doesn’t require an extensive introduction, let’s keep it short. Having raised a total of $64.50M in two seed rounds, EigenLayer is supported by renowned venture capital firms such as Coinbase Ventures and Blockchain Capital.
EigenLayer, a groundbreaking protocol developed on the Ethereum network, introduces a novel cryptoeconomic security feature known as restaking. This innovative primitive allows for the reuse of ETH on the consensus layer. Users, whether staking ETH directly or with a liquid staking token (LST), have the option to participate in EigenLayer smart contracts. By doing so, they can restake their ETH or LST, expanding the scope of cryptoeconomic security to other applications on the network and unlocking opportunities for additional rewards.

This guide is designed to assist you in the fundamental aspects of establishing and maintaining your EigenLayer node in the Testnet. We’ll cover the essential requirements for your node, explore my preferred hosting option, provide tips for ensuring smooth operations, and more. Consider this guide as your educational resource to learn and comprehend the process of setting up and managing your EigenLayer node effectively.




Part 1: Order and configure your VPS


This is the hardware configuration needed to set up an Lava node:



Open an account for a VPS server at https://www.digitalocean.com/ and get your $200 free credit.

After opening a membership, click create new in the create droplets section.

Keep the server information this way

Under Choose an image, click marketplace and select docker

Then select the server properties that we will install in this way

Create a password for yourself

Then click on create droplet and create a server.


Part 2: Connect to your VPS via SSH


Download and install most recent edition of PuTTY by visiting the official website

You will find the IP adress of your VPS in the second email. Launch PuTTY, enter the IP address of your VPS and click “Open”:

Once the server interface is open, you will be prompted to provide login details; simply enter “root” as the user and use your chosen password:
Congratulations! You are now successfully logged into your server.

Part 3: Obtain Goerli ETH (aka goETH) via Alchemy Goerli Faucet

Note that part 4, 5, and 6 are fully optional. However, engaging in them may qualify you for an airdrop if EigenLayer decides to reward early Testnet users. I believe it’s also a good strategy to delegate your re-staked ETH to your node, thereby increasing the number of delegators. Feel free to skip them if you’d rather and proceed directly to Part 7.

First, we’ll require some $ETH on the Goerli Testnet. As we’ll need an Alchemy account for the next steps, it’s advisable to create one for free if you haven’t done so already. Once logged into your account, you can request tokens from the Goerli Faucet, allowing us to claim 0.02 Goerli ETH per day through this faucet. Simply enter your wallet address and click on “Send me ETH”:

You also have the option to use the Paradigm Goerli Faucet or Bridge Mainnet (L1) ETH to Goerli ETH via LayerZero.

Part 4: Swap goETH for stETH (Lido Staked Ether)

Once you have goETH in your wallet, proceed by initiating a transaction to the stETH token contract address, specifying the desired amount of stETH you wish to swap.

The currently deployed contract address for Lido and stETH token proxy is 0x1643E812aE58766192Cf7D2Cf9567dF2C37e9B7F. Now, open your Metamask wallet and click on “send”:


Next, paste the contract address in your wallet transaction. In Metamask you will see “Warning: you are about to send to a token contract which could result in a loss of funds.”. Click “I Understand,” enter the desired amount for the swap, and confirm the transaction. Leave a portion of $ETH for covering gas fees.

For the last step, click “Import tokens” in Metamask, and input the stETH token address (0x1643E812aE58766192Cf7D2Cf9567dF2C37e9B7F) into your wallet. This will allow you to view the available stETH tokens.

Part 5: Re-Stake Your ETH


Visit https://goerli.eigenlayer.xyz/token, and select “Lido Staked Ether.” Input the desired amount you wish to restake, and then click on “Deposit”

Once the transaction is successful, you will see the amount of restaked stETH:



Step 6: Create a New Application in the Alchemy Dashboard

Next we have to open a our Alchemy Dasboard, go to the “Apps” tab and click “Create new app”:


Configure the app with the specified settings and proceed to click “Create app.” We’ll be needing this app shortly.

Step 7: Install the Necessary Components on the VPS


Login to the terminal with Putty and complete the following steps


Preparations

To continue, we can update the packages by running the following commands in the terminal. The first part of the command (sudo apt update) updates the package lists for upgrades, and the second part (sudo apt upgrade -y) actually performs the upgrades with the “-y” flag allowing for automatic confirmation of prompts during the upgrade process:

sudo apt update && sudo apt upgrade -y


Let’s begin by installing Docker:

sudo apt install docker.io


Once the installation is complete, verify the version using the following command. The Docker version should be a minimum of 24.0.5.

docker --version


Next, let’s proceed with the installation of Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


Use chmod to change the permissions of the Docker Compose directory:

sudo chmod +x /usr/local/bin/docker-compose


Verify the Docker Compose version; it should be 1.29.2:

docker-compose --version


Let’s install GO. Please check the website for any newer version and adjust the version number if necessary:

wget https://golang.org/dl/go1.21.6.linux-amd64.tar.gz

Next, we’ll proceed to extract the archive:

tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz


And set the Export Path:

export PATH=$PATH:/usr/local/go/bin


Finally, check the GO version. It should match the version mentioned earlier:

go version


Part 8: Install the EigenLayer binaries

Let’s proceed with the installation of EigenLayer binaries. Ensure to execute the commands one by one, as entering them all at once may lead to errors. The final command serves no functional purpose; its purpose is to make sure you won’t receive the “command eigenlayer not found” error message.

git clone https://github.com/NethermindEth/eigenlayer.git

cd eigenlayer

mkdir -p build

go build -o build/eigenlayer cmd/eigenlayer/main.go

cp ./build/eigenlayer /usr/local/bin/

sudo cp ./build/eigenlayer /usr/local/bin/

eigenlayer


Part 9: Create private keys

You can generate your ECDSA and BLS encrypted private keys using the command-line interface (CLI). ECDSA and BLS are two widely utilized algorithms in security protocols and the blockchain domain to uphold data integrity and confidentiality. Both keys are essential for operator registration and various on-chain operations. Replace <YOUR_NAME> with the desired name for your keys. ECDSA key:

eigenlayer operator keys create --key-type ecdsa <YOUR_NAME>


You will be asked to set a password; please choose a secure one. Afterward, ensure to backup the key file (found in /root/.eigenlayer/operator_keys/<YOUR_NAME>.ecdsa.key.json), your Public Key hex, and Ethereum Address securely.
Now create the BLS key:

eigenlayer operator keys create --key-type bls <YOUR_NAME>


You will be prompted to select a password once more; choose a secure one. Once again, back up your key file (located in /root/.eigenlayer/operator_keys/<YOUR_NAME>.bls.key.json) and your BLS Public Key.


Part 10: Add The ECDSA Accounts To Metamask

Now, add the ECDSA Key to Metamask. First, click on “add account or hardware wallet,” then “import account,” and select “Private key”
Then we import our wallet with the ecdsa information we created and saved previously.

To obtain the public keys, execute the following command, we will need them later:

eigenlayer operator keys list


Part 11: Create Metadata File in Github

Now, you’ll either need to create a new GitHub account or log into your existing GitHub account. After logging in, click on the “New repository” button and create a new repository with the specified settings. Feel free to input any desired details; just ensure that the repository is set to public.


Upon being redirected to the next page, click on the hyperlink that says “creating a new file”:

Next, name the file “metadata.json” and paste the information which you will find below:

Here you can copy the content of metadata.json:

{
"name": "<NAME>",
"website": "<WEBSITE>",
"description": "<DESCRIPTION>",
"logo": "example.com/logo.png",
"twitter": "<TWITTER>"
}


In the final step, open the file you just created, click the “raw” button, and save the URL:

Part 12: Prepare your operator-config.yaml file

Now we are going to prepare the operator-config.yaml file which is very important. Here we will define all the properties which for our operator node. First you should open a text editor of your choice and prepare the content of this file which we will later save on our VPS.

  • adress / earnings_receiver_address → Ethereum address for your operator from the ECDSA key
  • metadata_url → Provide the URL to your raw metadata file from part 11
  • eth_rpc_url → Go to your Alchemy Dashboard, choose the App created in part 7, click on “API Key,” and copy the value from the “HTTPS” field
  • private_key_store_path / bls_private_key_store_path → Replace <NAME_KEY> with the name you have chosen in Part 9


Keep the default values for all other fields.

# All the below fields are required for successful operator registration.

# To learn more about operator fields
# https://github.com/Layr-Labs/eigenlayer-contracts/blob/92ccacc868785350973afc15e90a18dcd39fbc0b/src/contracts/interfaces/IDelegationManager.sol#L21:
operator:
  # This is the standard Ethereum address format (ex: 0x6a8c0D554a694899041E52a91B4EC3Ff23d8aBD5) of your operator
  # which is the ecdsa key you created or imported using EigenLayer CLI
  address: Your Adress
  # This is the standard Ethereum address format (ex: 0x6a8c0D554a694899041E52a91B4EC3Ff23d8aBD5)
  # This is the address where your operator will receive earnings. This could be same as operator address
  earnings_receiver_address: Your Adress
  # This is the standard Ethereum address format (0x...)
  # This is the address which operator will use to approve delegation requests from stakers.
  # if set, this address must sign and approve new delegation from Stakers to this Operator
  # For now, you can leave it  with the default value for un-gated delegation requests
  # Once we enable gated delegation requests, you can update this field with the address of the approver
  delegation_approver_address: 0x0000000000000000000000000000000000000000
  # Please refer to this link for more details on this field https://github.com/Layr-Labs/eigenlayer-contracts/blob/92ccacc868785350973afc15e90a18dcd39fbc0b/src/contracts/interfaces/IDelegationManager.sol#L33:
  # Please keep this field to 0, and it can be updated later using EigenLayer CLI
  staker_opt_out_window_blocks: 0
  metadata_url: Your Github adress

# EigenLayer Slasher contract address
# This will be provided by EigenLayer team
el_slasher_address: 0xD11d60b669Ecf7bE10329726043B3ac07B380C22 

# Address of BLS Public Key Compendium contract
# This will be provided by EigenLayer team
bls_public_key_compendium_address: Your ecdsa adress

# ETH RPC URL to the ethereum node you are using for on-chain operations
eth_rpc_url: your alcehmy hhtps
# Signer Type to use
# Supported values: local_keystore
signer_type: local_keystore

# Full path to local ecdsa private key store file
private_key_store_path: your Key location
# Full path to local bls private key store file
bls_private_key_store_path: your Key location
# Chain ID: 1 for mainnet, 5 for Goerli, 17000 for holesky, 31337 for local
chain_id: 5


Part 13: Create your operator-config.yaml

In this step, enter these commands, making sure to execute them one by one:

cd cli/operator/config/

touch operator-config.yaml

nano operator-config.yaml

Now, copy the contents of the operator-config.yaml file prepared in your text editor into your VPS. It should resemble the following. To save this file, press “CTRL + X” and then enter:

Part 14: Register Your EigenLayer Node

We’re almost there! :-) Now, let’s proceed with registering our node. Please note that we require a minimum of 1 Goerli ETH in the “address” field referenced in your operator-config.yaml file. This ETH will cover the gas cost for the operator registration in the following steps. As acquiring 1 ETH from the Goerli faucet would take 50 days, I suggest bridging 0.0001 “real” ETH (which is less than 1$ including transaction costs) from Optimism or Arbitrum to receive 1.1 Goerli ETH on the Goerli Testnet using https://testnetbridge.com/


Now, execute the following command to officially register your EigenLayer node:

eigenlayer operator register operator-config.yaml


When prompted, enter the passwords for your ECDSA private key and your BLS private key. If the registration is successful, your output should resemble the following:


In the final step, execute the following command to verify the status of your node:

eigenlayer operator status operator-config.yaml


Your output should look like this:

Part 15a: Test — Alchemy Dashboard

To make sure everything worked fine, go to your Alchemy Dashboard, select the App you created there are requests coming in:
To ensure everything worked as intended, navigate to your Alchemy Dashboard, select the App you created, and check for incoming requests.


Part 15b: Test — EigenLayer AVS-List

In the last step, let’s explore the EigenLayer Goerli Dashboard. Navigate to “Operator,” and search for your node. If you’ve also delegated some of your re-staked ETH from Steps 4, 5, or 6, your node summary should look like this. You can further exchange goETH for various tokens like rETH (Rocket Pool goETH), ETHx (Stader), ankrETH (Ankr), LsETH (Liquid Staked ETH), mETH (Mantle ETH), and delegate them to your node. This allows you to explore and experiment with different Liquid Staking Token (LST) protocols.


Please note that following this guide may not guarantee your position among the exclusive 200 active validators. To assess the current Total Value Locked (TVL) of the top 200 operators, visit the AVS page and sort by TVL Ascending. Examine the first 200 operators and their ETH TVL delegation. As of the latest information, you would require a minimum of 11,413.115 GoerliETH, approximately 1.01 “real” ETH, to surpass the TVL of the last node in this list. Given the substantial investment required, and considering the limited availability of GoerliETH, it’s acceptable if your node doesn’t participate as an active validator in the EigenLayer network at this point. Credit to @drakeondigital for inspiring this post — consider following him on Twitter. Stay informed about EigenLayer by monitoring updates on Twitter and joining their Discord community for the latest news and information. For troubleshooting, consult the official documentation first, and if needed, seek assistance in the “support-operators” channel on the official Discord server or feel free to reach out to me directly.

-----

For more information please contact us. Thank you for your support @ilaNihas


Write & Read to Earn with BULB

Learn More

Enjoy this blog? Subscribe to CoinRain

16 Comments

B
No comments yet.
Most relevant comments are displayed, so some may have been filtered out.