EigenLayer Operators Guide
Last updated
Last updated
This guide explains how operators can integrate with Byzantine's EigenLayer vaults. Operators are entities running infrastructure for decentralized networks within the EigenLayer ecosystem.
: Operator Sets are groups of operators responsible for securing an AVS (Autonomous Verifiable Service) and earning rewards. Each AVS defines one or more Operator Sets that operators can choose to join. By joining an Operator Set, operators take on the responsibility of securing the system and gain access to its rewards, as well as the risk of slashing penalties. (cf. )
: Number of blocks required for an Operator's allocation to become active in an Operator Set for a specific Strategy.
: Number of blocks between an operator's request to deallocate stake from an Operator Set for a strategy and the deallocation becoming effective.
: Magnitude tracks Operator's allocations within Operator Sets. It represents proportions of an Operator’s stake delegations for a particular Strategy. The initial value of the total magnitude is 1x1018.
An Ethereum account (EOA) or smart contract (e.g multisig) that will act as the operator. If you don't have operator account yet, it will be possible to create the operator's keys on the step
Understanding of the following EigenLayer contracts:
DelegationManager
AllocationManager
Docker
Docker Compose
Linux Environment
Go ≥ 1.21 (if you choose to install eigenlayer-cli using the Go programming language)
To check if Docker is installed, run:
To install a binary inside the ~/bin
directory for latest release, run:
The binary will be installed inside the ~/bin
directory. To add the binary to your path, run:
To install the eigenlayer-CLI using Go, run:
To check if the GOBIN is not in your PATH, you can execute echo $GOBIN
from the Terminal. If it doesn't print anything, then it is not in your PATH. To add GOBIN to your PATH, add the following lines to your $HOME/.profile
:
To generate the binary manually, download and compile the source code, run:
or if you have make installed, run:
The executable will be in the build
folder.
In this section, you will register your operator Ethereum address as an Eigen Layer operator. You will have to prepare beforehand some data tied to your operator:
an Allocation Delay: The number of blocks required for an Operator's allocation to become active in an Operator Set.
a metadata URI: a URI for the operator's metadata, i.e. a link providing more details on the operator (name, website, logo, twitter, ...)
The command will create two files:
operator.yaml
metadata.json
metadata.json
Upload the logo of the operator (only .png
file within 1MB in size) to a publicly accessible location and set the url in your metadata.json
file.
The metadata.json
must be less than 4KB in size. Upload the file to a publicly accessible location and set that url in operator.yaml
.
For Mainnet Operators - the metadata.json
and operator logo.png
files MUST be hosted via github.com repositories specifically. Caveat: gist.github.com hosted files are not permitted. These requirements do not apply to Testnet Operators.
The EigenLayer CLI requires access to an Ethereum RPC node in order to post registration.
Please find example lists of RPC node providers here:
Ensure that your Operator server can reach your RPC provider at this point. You may run the following command from your Operator server: curl -I [your_server_url]
DelegationManager
Contract AddressYou must configure the correct DelegationManager
contract address for your environment.
Set the value for el_delegation_manager_address
in your operator.yaml
config file to the address for your environment.
To register your operator, run:
If you are using the eigenlayer-cli you must check that the --caller-address
has been imported or created on the cli environment
If not already done, set the Allocation Delay by running:
To register to Operator Set, run:
To Set Allocations per Operator Set and Strategy, run:
Use the csv in the below format to set multiple allocations in one transaction, where update.csv
will look like:
To view all your allocations, run:
To de-register from Operator Sets, run:
Registered operators can update their metadata (if they change their restaking strategy or update their website)
This is the command you can use to make changes or updates to the metadata of your operator.
Find the complete guide here:
In case you want the binary in your PATH (or if you used the method and you don't have $GOBIN in your PATH), please copy the binary to /usr/local/bin
:
If you don't yet have your operator key, you can use the to generate one
Find the complete guide here:
Find the complete guide here:
a Delegation Approver: an address who approves new delegations from Stakers to this Operator. If this address is left as the zero (0x000...) then all new delegations to this operator will be automatically approved without the need for any signature. This parameter allows operators to have permissioned and approved delegations. Learn
Find the complete guide here:
The name
and description
should comply with the regex mention . You can use services like to validate your fields.
An example operator.yaml file is provided for your reference here: .
When using Github for hosting please ensure you link to the raw file (), rather than the github repo URL ().
Navigate to and locate the Proxy address for DelegationManager
for your environment (Mainnet, Testnet).
Operators have the option to set delegationApprover when they register. If the delegationApprover
is set to a nonzero value, then the delegationApprover
address will be required sign its approval of new delegations from Stakers to this Operator. If the default value is left as the zero address (0x000...) then all new delegations will be automatically approved without the need for any signature. Please see for more detail.
your own set of keys using the EigenLayer CLI (if you have not previously created keys).
your existing keys (if you have previously created keys).
Find the complete guide here: