# EigenDA AVS Node (Testnet) **Published by:** [GLCstaked](https://paragraph.com/@glcstaked/) **Published on:** 2023-12-17 **URL:** https://paragraph.com/@glcstaked/eigenda-avs-node-testnet ## Content 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.EigenCloudBuild verifiable apps - Run AVS infrastructure - Stake hundreds of assets - Scale with EigenDahttps://www.eigencloud.xyzNode 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.Delegating to AVS OperatorsIf 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 Operatorhttps://goerli.eigenlayer.xyz/operatorDelegate ‘your restaked balance’Become an AVS OperatorEigenDA: 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 RequirementsThese are the initial requirements today, medium and small nodes will come later with reduced requirements1. Prepare Server - DependenciesLinux 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.Ubuntu 20.04.6 LTS (Focal Fossa)CD images for Ubuntu 20.04.6 LTS (Focal Fossa)https://releases.ubuntu.comUpdate System once installedsudo apt update && sudo apt upgrade -y Install dependenciessudo 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 sudosudo 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 commandInstall 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 2. Setup Ethereum Node (Goerli)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. GithubSedge documentation Documentation | Sedge documentationTechnical Documentation For Sedgehttps://docs.sedge.nethermind.io3. Install Eigen CLIBuild from sourcegit 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 $PATHsudo cp bin/eigenlayer /usr/local/bin Call CLI to checkeigenlayer help this just confirms that it is installed correctly, so it can be used in the next steps4. Create KeysKeys will be created locally to manage Ethereum Transactions for registering/managing operator account. Create KeysKEYNAME=<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 Keyseigenlayer 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.5. Register OperatorCreate Configuration Fileseigenlayer 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.ExampleThis 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 examplemetadata_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 confignano 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 Operatoreigenlayer operator register operator.yaml Check Statuseigenlayer operator status operator.yaml To Update Metadataeigenlayer operator update operator-config.yaml 6. Install EigenDA AVSAt this Stage we should have a EigenLayer CLI installed and the ‘Node Operator’ Registered. Install EigenDAgit 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 Directoriesmkdir -p $HOME/.eigenlayer/eigenda/logs mkdir -p $HOME/.eigenlayer/eigenda/db 7. PortsOpen 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 fileserver { 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; } } 8. Operator Opt-InEigenDA 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 If you successfully Opt-in you should see the followingNOTE: 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.Account does not meet minimum stakeIf the account in .eigenlayer/operator-keys does not have enough ETH for gas, it will result in this error.Not enough ETH in account to Opt-InIf 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.9. Run EigenDA NodeRun EigenDA From eigenda-operator-setup directorydocker 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 whileEigenDA logsLogs for the NGINX ‘reverse proxy’ should look like soNGINX logsUpdating EigenDAStop EigenDAcd eigenda-operator-setup docker compose down Edit EigenDA version Latest version can be found here: Open .env to change container tagnano .env Edit the Version according to latest release for Variable MAIN_SERVICE_IMAGE Restart EigenDAdocker 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. ## Publication Information - [GLCstaked](https://paragraph.com/@glcstaked/): Publication homepage - [All Posts](https://paragraph.com/@glcstaked/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@glcstaked): Subscribe to updates