# Run an EigenLayer Operator (Testnet-Node) **Published by:** [lailina](https://paragraph.com/@starknetpt/) **Published on:** 2024-02-07 **URL:** https://paragraph.com/@starknetpt/run-an-eigenlayer-operator-testnet-node ## Content 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 proceedCheck if Docker is up-to-date / Docker Installationdocker 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 InstallationLet’s Install SCREEN sudo apt install screen Create new screen sessionsudo 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 versionInstall CLI from Source a. Install github eigenlayergit 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 eigenlayerCreate and List Keys a. Create Keyseigenlayer 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": "", "website": "", "description": "", "logo": "https://www.example.com/logo.png", "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: earnings_receiver_address: metadata_url: eth_rpc_url: (you can use any rpc provider) private_key_store_path: /root/.eigenlayer/operator_keys/.ecdsa.key.json bls_private_key_store_path: /root/.eigenlayer/operator_keys/.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: 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: 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: 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: 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/.ecdsa.key.json Full path to local bls private key store file bls_private_key_store_path: /root/.eigenlayer/operator_keys/.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. 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= 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= 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/.ecdsa.key.json NODE_BLS_KEY_FILE_HOST=/root/.eigenlayer/operator_keys/.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. ## Publication Information - [lailina](https://paragraph.com/@starknetpt/): Publication homepage - [All Posts](https://paragraph.com/@starknetpt/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@starknetpt): Subscribe to updates