Run an EigenLayer Operator (Testnet-Node)
February 7th, 2024

You have the opportunity to engage with EigenLayer’s testnet in several capacities, including as a restaker, operator, or AVS Node Operator.

“Enhancing Ethereum’s Cryptoeconomic Security with EigenLayer’s Restaking Innovation” EigenLayer is a protocol built on Ethereum that introduces restaking, a new primitive in cryptoeconomic security. This primitive enables the rehypothetication of $ETH on the consensus layer. Users that stake $ETH can opt-in to EigenLayer smart contracts to restake their $ETH and extend cryptoeconomic security to additional applications on the network. Part of EigenLayer’s potential lies in its ability to aggregate and extend cryptoeconomic security through restaking and to validate new applications being built on top of Ethereum.

Order & Configure your VPS You can establish your node by either configuring it on a personal computer or by utilizing a Virtual Private Server (VPS), which is well-suited for managing websites, applications, or other internet-based services, including nodes.

For my setup, I selected Contabo, a well-regarded provider of VPS rentals. Opting for a plan with at least 100 GB of storage is advisable to ensure sufficient space for long-term node operation.

My suggestion would be to go for the Cloud VPS M or higher option. https://contabo.com/en/

Choose Cloud VPS M or Higher Select Payment Term Region — Germany Storage Type -400 GB SSD Image — Go to Apps & Panels > Docker

Apps & Panels > Docker 5. Log in & Set a Password for your Server

Set a password 6. Object Storage — Default 7. Networking — Default 8. Add-Ons — Default

After finalizing your payment, you’ll get an email verifying your purchase. Hold tight for a follow-up email, which will provide details about your VPS, encompassing your access credentials.

You’ll need to download and use Putty, a tool that enables you to securely connect to your VPS and utilize its functionalities. Download it here https://www.putty.org/

Enter IP ADDRESS Enter the VPS IP Address then Click OPEN Login : root Password: (Enter your chosen password)

Log in using the password you set earlier. Before Proceeding, you can check the official documentation here.

Preparations Install essential components sudo apt update && sudo apt upgrade -y 2. Install Essential Codes

sudo apt install pkg-config curl git-all build-essential libssl-dev libclang-dev ufw reply Y then proceed

  1. Check if Docker is up-to-date / Docker Installation

docker version If docker is not installed, run the following command:

sudo apt-get install ca-certificates curl gnupg lsb-release Now add Docker’s official GPG key:

sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg proceed… We Are to set up Repository: (just copy and paste)

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null Let’s grant Docker file permission just in case, before updating the package index

sudo chmod a+r /etc/apt/keyrings/docker.gpg sudo apt-get update after granting, updated index, Install latest version of docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin Now install Docker compose :

sudo apt install docker-compose

Press Y then ENTER Lets verify the ENGINE INSTALLATION is successful by running the hello-world

sudo docker run hello-world You should get this.

Now check Docker compose version :

docker-compose -v

Part 1: Node Installation

  1. Let’s Install SCREEN sudo apt install screen Create new screen session

sudo screen -S Eigenlayer 2. GO LANGUAGE INSTALLATION a. Install

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

b. Extract folder

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

c. Add Go to your Environment

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

d. Verify Go bin installation

go version

  1. Install CLI from Source a. Install github eigenlayer

git clone https://github.com/Layr-Labs/eigenlayer-cli.git cd eigenlayer-cli mkdir -p build go build -o build/eigenlayer cmd/eigenlayer/main.go

b. Copy file into the system

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

c. Verify if Eigen is properly installed

eigenlayer

  1. Create and List Keys a. Create Keys

eigenlayer operator keys create --key-type ecdsa [keyname] eigenlayer operator keys create --key-type bls [keyname] example:

eigenlayer operator keys create --key-type ecdsa EkkoNodes eigenlayer operator keys create --key-type bls EkkoNodes [keyname] — This will be the name of the created key file

This will prompt a password which you can use to encrypt the keys. Keys will be stored in a local disk and will be shown once keys are created. It will also show the private key only once, so that you can back it up in case you lose the password or key file. Make sure to Backup your keys. You can only see this once.

b. View Keys

eigenlayer operator keys list 5. Operator Registration a. Metadata URL Configuration

Create a Github Account Create a repository

Create a new file

Name the file “metadata.json” Paste and edit this { "name": "<OPERATOR_NAME>", "website": "<YOUR_WEBSITE>", "description": "", "logo": "https://www.example.com/logo.png", "twitter": "<YOUR_TWITTER>" } After completing your file, click on “Raw,” to get the link and paste the it into your ‘operator.yaml’ file.

ex: https://raw.githubusercontent.com/Ekkoo09/eigenlayer-Ekko-Nodes/main/metadata.json ‘do not use’ b. Navigate to the config/ folder :

cd pkg/operator/config c. Create the ‘operator.yaml’ folder :

touch operator.yaml d. Edit the config file

nano operator.yaml you will see a blank file;

You need to edit these first before pasting: address: <ADDRESS_OF_YOUR_WALLET> earnings_receiver_address: <ADDRESS_OF_YOUR_WALLET> metadata_url: <METADATA_FILE_RAW> eth_rpc_url: <API_ALCHEMY> (you can use any rpc provider) private_key_store_path: /root/.eigenlayer/operator_keys/<NAME_KEY>.ecdsa.key.json bls_private_key_store_path: /root/.eigenlayer/operator_keys/<NAME_KEY>.bls.key.json

All the below fields are required for successful operator registration.

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: <ADDRESS_OF_YOUR_WALLET>

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: <ADDRESS_OF_YOUR_WALLET>

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

This is optional, so you can leave it with the default value for un-gated delegation requests

delegation_approver_address: 0x0000000000000000000000000000000000000000

Please keep this field to 0, and it can be updated later using EigenLayer CLI

staker_opt_out_window_blocks: 0 metadata_url: <METADATA_FILE_RAW>

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: 0xc81d3963087Fe09316cd1E032457989C7aC91b19

ETH RPC URL to the ethereum node you are using for on-chain operations

eth_rpc_url: <API_ALCHEMY>

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: /root/.eigenlayer/operator_keys/<NAME_KEY>.ecdsa.key.json

Full path to local bls private key store file

bls_private_key_store_path: /root/.eigenlayer/operator_keys/<NAME_KEY>.bls.key.json

Chain ID: 1 for mainnet, 5 for Goerli, 31337 for local

chain_id: 5 see mine for reference:

Exit and Save: Press CTRL+X, then Y, and ENTER. e. Operator Registration

Before proceeding, make sure your wallet has enough gETH to register.

eigenlayer operator register operator.yaml

Enter Password f. Verify Operator status

eigenlayer operator status operator.yaml

or you can view it on the website here (will appear after a few mins) Part 2: EigenLayer AVS Operator Now that your operator is registered on Eigenlayer, you can launch the Eigenlayer node.

You will need to have 32 gETH and enough restaked gETH on your operator to rank among the top 200 validator nodes.

WARNING: As of this writing you will need at least 18,000 gEth restaked to your operator to be on the EigenDA AVS Operator.

https://testnetbridge.com/ Before Proceeding, check the AVS Operator Guide here.

  1. Installation a. Clone repo

git clone https://github.com/Layr-Labs/eigenda-operator-setup.git cd eigenda-operator-setup b. Update the .env file (Modify the sections marked with TODO to match your environment.)

nano .env sample text file.

TODO: IP of your node

NODE_HOSTNAME=<YOUR_IP>

TODO: Node Nginx config

NODE_NGINX_CONF_HOST=./resources/rate-limit-nginx.conf

TODO: Operators need to point this to a working chain rpc

NODE_CHAIN_RPC=<KEY_API> NODE_CHAIN_ID=5

TODO: Operators need to update this to their own paths

USER_HOME=/root/ EIGENLAYER_HOME=/root/.eigenlayer EIGENDA_HOME=/root/.eigenlayer/eigenda/

NODE_LOG_PATH_HOST=/root/.eigenlayer/eigenda/logs NODE_G1_PATH_HOST=/root/eigenda-operator-setup/resources/g1.point NODE_G2_PATH_HOST=/root/eigenda-operator-setup/resources/g2.point NODE_DB_PATH_HOST=/root/.eigenlayer/eigenda/db NODE_CACHE_PATH_HOST=/root/eigenda-operator-setup/resources/cache

TODO: Operators need to update this to their own keys

NODE_ECDSA_KEY_FILE_HOST=/root/.eigenlayer/operator_keys/<NAME_WALLET>.ecdsa.key.json NODE_BLS_KEY_FILE_HOST=/root/.eigenlayer/operator_keys/<NAME_WALLET>.bls.key.json

TODO: The ip provider service used to obtain a node's public IP [seeip (default), ipify)

NODE_PUBLIC_IP_PROVIDER=seeip

TODO: Operators need to add password to decrypt the above keys

NODE_ECDSA_KEY_PASSWORD= NODE_BLS_KEY_PASSWORD= modify the parts between <…>

c. Create local folders which are required by EigenDA:

mkdir -p $HOME/.eigenlayer/eigenda/logs mkdir -p $HOME/.eigenlayer/eigenda/db d. Opt-in into EigenDA

In order to opt-in into EigenDA as an Operator, you must meet the following delegated TVL requirements:

Have a minimum of 32 ETH delegated. Have more than 1.1x current lowest-stake Operator in the active Operator set. Please see EigenDA Churn Approver for more detail. The operator to churn out has less than 10.01% of the total stake Execute the following command to opt-in to EigenDA AVS:

./run.sh opt-in e. Run EigenDA

Start the docker containers:

docker compose up -d If you have successfully opted in to EigenDA and correctly running your EigenDA software, you should see the following logs for your EigenDA container:

If you have successfully opted in to EigenDA and correctly running your EigenDA software, you should see the following logs for your EigenDA container: OPTIONAL Upgrade your node Pull the latest repo

cd eigenda-operator-setup git pull Pull the latest docker images

docker compose pull Stop the existing services

docker compose down Start your services again

docker compose up -d That’s it! Make sure to follow EigenLayer’s Socials to stay updated.

Twitter: https://twitter.com/eigenlayer

Let’s Connect Thank you for spending time reading my article. If you’d like to delve deeper into the topics and have further questions or just want to say hi, don’t hesitate to reach out.

Find me on:

Twitter: @EkkoNodes Support My Work If the node running guides I provide have helped you and you wish to support the continuation and enhancement of this resource, any contribution is greatly appreciated. Below is my dedicated wallet address for those who would like to contribute:

0xCE84bab3ade470A64B7EA26e7940e3149C7Fd016

About Me Hello! I’m Ekko Nodes. After years crunching numbers as an Accountant, I decided to take a leap into the vibrant world of crypto, blockchain, and Web3. With an eye for potential and a knack for discovery, I’m on a quest to unearth the most intriguing projects, the latest airdrops, and the newest nodes in the blockchain universe. My journey is one of constant learning, fueled by my passion for writing, researching, and all things tech. If you’re eager to explore the dynamic landscape of digital currencies and decentralized technologies, let’s embark on this adventure together.

Disclaimer The insights shared here are for educational and entertainment purposes only and are not to be taken as financial advice. Each individual’s journey in the crypto space is unique, and it’s crucial to conduct thorough research and consider seeking professional counsel before making investment decisions. Stay curious, tread carefully, and tailor your choices to fit your personal circumstances.

Making Node Setup Effortless.

Subscribe to lailina
Receive the latest updates directly to your inbox.
Nft graphic
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from lailina

Skeleton

Skeleton

Skeleton