How to setup and run an EigenDA (Testnet) node the first AVS on EigenLayer.
EigenLayer: Introduces a new primitive Restaking which enables staked ETH to be used as crypto-economic security for protocols other than Ethereum, in exchange for additional protocol fees and rewards.
Node Operator: within EigenLayer are individuals or organizations that play an active role in the EigenLayer protocol. By registering within EigenLayer, they enable ETH stakers to delegate their staked assets, whether in the form of native ETH or LSTs. The Node Operators then opt-in to provide a range of services to AVSs, enhancing the overall security and functionality of their networks.
Operator CLI: EigenLayer CLI is used to manage core operator functionalities like local key management, operator registration and updates.
Actively Validated Services (AVS): Any system that requires its own distributed validation semantics for verification, such as sidechains, data availability layers, new virtual machines, keeper networks, oracle networks, bridges, threshold cryptography schemes, and trusted execution environments.
If you have Restaked ETH on EigenLayer Testnet, you can delegate to AVS operators here: You must have LSTs Restaked or be Native Restaking on Goerli Testnet to be able to Delegate.
Select your Operator
Delegate ‘your restaked balance’
EigenDA: the first actively validated service (AVS) to launch on EigenLayer, by EigenLabs. EigenDA is on Testnet and expected to Launch on Mainnet 2024.
A secure, high throughput, and decentralized data availability (DA) service built on top of Ethereum using the EigenLayer restaking primitive. Restakers will be able to delegate stake to node operators performing validation tasks for EigenDA in exchange for service payments, and rollups will be able to post data to EigenDA in order to access lower transaction costs, higher transaction throughput, and secure composability across the EigenLayer ecosystem, with security and throughput designed to horizontally scale with the amount of restake and operators opted into servicing the protocol.
EigenDA Docs here, this guide is designed to take you step by step on setup and running EigenDA.
Hardware Requirements
Linux Operating System: Ubuntu 20.04 LTS is the standard across the space, most testing and development is done with this version, LTS means Long term support.
Update System once installed
sudo apt update && sudo apt upgrade -y
Install dependencies
sudo apt install build-essential curl git jq make tar clang pkg-config libssl-dev gcc -y
Docker and Docker compose
Full Install instructions for Docker here and Docker Compose here. The following is the recommended method.
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
remove the install script and add $USER to docker group, to allow use without sudo
sudo rm -r get-docker.sh
sudo usermod -aG docker $USER
Restart a new shell, this is to allow the adding $USER to docker group.
Check installed with (if correct will output version)
docker --version
This script should also install docker compose plugin, which you can check with the following command
docker compose version
Install Go
Golang (Go) is an open source programming language, to Install. Eigen CLI requires version 1.21 or later.
wget -q -O - https://git.io/vQhTU | bash -s -- --version 1.21.5
This script is made by golang and installs PATH
 variables to .bashrc
 and Go binary to $HOME/.go
 and $HOME/go/bin
Run source $HOME/.bashrc
 to take effect, confirm installed with go version
 which should return the version installed
#to remove installation
wget -q -O - https://git.io/vQhTU | bash -s -- --remove
EigenLayer CLI and EigenDA require a connection to a Goerli ETH node endpoint, it is setup by default to use a node hosted on the same device as EigenDA or the endpoint will need to be changed to a public one. (example found here)
eth_rpc_url: http://localhost:8545
To setup an Ethereum Node
An easy and quick deployment using Nethermind Sedge, a one-click setup tool for Ethereum validators and nodes. Github
Build from source
git clone https://github.com/Layr-Labs/eigenlayer-cli.git
cd eigenlayer-cli
make build
copy the binary to /usr/local/bin
so it is available in the $PATH
sudo cp bin/eigenlayer /usr/local/bin
Call CLI to check
eigenlayer help
Keys will be created locally to manage Ethereum Transactions for registering/managing operator account.
Create Keys
KEYNAME=<ANY-NAME>
eigenlayer operator keys create --key-type ecdsa $KEYNAME
eigenlayer operator keys create --key-type bls $KEYNAME
This will prompt a password input which you can use to encrypt the keys, backup the keys stored in .eigenlayer/operator_keys/
and the password used.
Take Note of the Ethereum Address as it will be useful for funding.
NOTE: Keys can be imported with an existing private key.
View Keys
eigenlayer operator keys list
Fund Wallet
Fund with at least 5 Goerli ETH, this will be used to pay for fee required to register operator and steps later.
Create Configuration Files
eigenlayer operator config create
gate stakers approval
: Select No if you wish for anyone to be able to delegate
ETH rpc url
: Default is localhost, if you are running an Ethereum node locally, otherwise place endpoint here.
This will create the configuration files metadata.json
and operator.yaml
in the $HOME directory.
Edit metadata
Metadata file also requires a logo of your operator. Please ensure that images are also uploaded to a publicly hosted link. only .png
images are supported for now.
Metadata example
metadata_url: https://example.com/metadata.json
# Metadata
{
"name": "Some operator",
"website": "https://www.example.com",
"description": "I operate on some data",
"logo": "https://www.example.com/logo.png",
"twitter": "https://x.com/example"
}
Edit operator config
nano operator.yaml
Contract Addresses:
# 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
Register Operator
eigenlayer operator register operator.yaml
Check Status
eigenlayer operator status operator.yaml
To Update Metadata
eigenlayer operator update operator-config.yaml
At this Stage we should have a EigenLayer CLI installed and the ‘Node Operator’ Registered.
Install EigenDA
git clone https://github.com/Layr-Labs/eigenda-operator-setup.git
cd eigenda-operator-setup
Modify ENV
Manually update the .env
file downloaded in the steps above.
nano .env
Modify the sections marked with TODO
to match your environment.
NODE_HOSTNAME= <your public ip address>
NODE_NGINX_CONF_HOST=./resources/rate-limit-nginx.conf
EIGENLAYER_HOME=${USER_HOME}/.eigenlayer
EIGENDA_HOME=${EIGENLAYER_HOME}/eigenda
Create Directories
mkdir -p $HOME/.eigenlayer/eigenda/logs
mkdir -p $HOME/.eigenlayer/eigenda/db
Open Ports
NODE_RETRIEVAL_PORT=32004
NODE_DISPERSAL_PORT=32005
These ports require access to the public internet. Port Forward these ports from your router if running locally.
To limit traffic from the EigenLabs hosted Disperser you can restrict your node's ingress traffic to the following IPs 3.221.120.68/32, 52.2.226.152/32, 18.214.113.214/32
To do so create a /eigenda-operator-setup/resources/ip-limit-nginx.conf
file
server {
listen 32005;
http2 on;
location / {
allow 3.221.120.68/32;
allow 52.2.226.152/32;
allow 18.214.113.214/32;
deny all;
grpc_set_header X-Real-IP $remote_addr;
grpc_pass grpc://da-node:32004;
}
}
EigenDA operator set: has a cap that limits the maximum number of active Operator nodes in the network in order to maintain the desired network performance and limit the L1 gas cost for aggregating signatures.
The Churn Approver: is responsible for managing the active set of Operator nodes in the EigenDA network.
Operator Delegation: the active set is determined by the highest delegation to operators, as such to be in the active your operator must have a minimum stake. Delegation is done by EigenLayer restakers, visit goerli.eigenlayer.xyz/avs/eigenda
To successfully register the Operator account you must have the minimum stake delegated for entry the active set (currently 120 Operators, set to increase soon), and enough (goerli) ETH for fees otherwise the command will fail.
Opt-In to EigenDA
./run.sh opt-in
NOTE: the registration script, deploys a docker container that to remove has to be done manually.
Potential Errors:
If the account does not meet the minimum stake required to Opt-in your will be meet with the following error, the solve the ‘node-operator’ will need more delegation.
If the account in .eigenlayer/operator-keys
does not have enough ETH for gas, it will result in this error.
If you can’t Opt-in, you can still proceed to run the DA node (next step), you just won’t be in the active set.
Run EigenDA
From eigenda-operator-setup
directory
docker compose up -d
this will start a container for eigenda-operator-setup-reverse proxy-1
and eigenda-native-node
, check running containers with docker ps -a
If the EigenDA is running without error, you should see logs like so after a while
Logs for the NGINX ‘reverse proxy’ should look like so
Stop EigenDA
cd eigenda-operator-setup
docker compose down
Edit EigenDA version
Latest version can be found here:
Open .env
to change container tag
nano .env
Edit the Version according to latest release for Variable MAIN_SERVICE_IMAGE
Restart EigenDA
docker compose up -d
NOTE: the above method is simply to update the docker image, there may be additional configuration changes, to implement you can update the repo entirely and work through edits again or have a look at changes on GitHub.