EigenLayer
Last updated
Last updated
: Operator Sets are groups 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.
This guide explains how operators can integrate with Byzantine's EigenLayer vaults. Operators are entities running infrastructure for decentralized networks within the EigenLayer ecosystem.
An Ethereum account (EOA) or smart contract (e.g multisig) that will act as the operator
Understanding of the following EigenLayer contracts:
DelegationManager
AllocationManager
Docker
Docker Compose
Linux Environment
To check if Docker is installed, run:
To install a binary inside the ~/bin
directory for latest release, run:
To download the binary in a custom location, run:
To install the eigenlayer-CLI using Go, run:
Requirements:
Go with a minimum version of 1.21
To generate the binary manually, download and compile the source code, run:
or if you have make installed, run:
Creation of ECDSA and BLS keys is required when using the EigenLayer features.
The ECDSA keypair aligns with the operator's Ethereum address, allowing interaction with Eigenlayer. The BLS key, on the other hand, is used for attestations within the EigenLayer protocol and is required when registering an AVS.
To generate encrypted ECDSA and BLS keys, run:
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.
Input Command
Run:
The tool is requesting a password to encrypt the ECDSA private key for security purposes. The password input is hidden for security reasons.
To import an ECDSA key, run:
To import a BLS key, run:
Import command
To tell the EigenLayer tool that you want to import a key, run:
Output
This is a prompt asking you to enter a password to encrypt the ECDSA private key.
To retrieve a list of the keys you have created with the EigenLayer cli tool, run:
To see the private key of the existing keys, run:
This will only work if your keys are in default location (~/.eigenlayer/operator_keys
).
If your keys is not in the default location, you can give the full path to the key file using --key-path flag. You don't need to provide the key name in that case.
Send at least 1 ETH to the “address” field referenced in your operator.yaml file.
Operators must register themselves as operators within the EigenLayer ecosystem.
The command will create two files: operator.yaml
and metadata.json
.
metadata.json
, and Upload BothUpload 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
.
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 config file to the address for your environment.
The EigenLayer Web App simulates transactions to check for contract reversions. If the delegate call will revert for any reason the button will be disabled.
To register your operator, run:
Before allocating for their first Operator Set, an Operator is required to set an ALLOCATION_DELAY
in the AllocationManager
. If an Operator is registering with EigenLayer for the first time, they will be required to provide an ALLOCATION_DELAY
during registration. It takes the amount of time specified in the ALLOCATION_CONFIGURATION_DELAY
for the Operator's ALLOCATION_DELAY
to be set initially or updated. This delay is to ensure Stakers have time to adjust to changes in their delegated Operator’s stake allocations. Stakers can withdraw their funds if an allocation is viewed as undesirable, subject to the WITHDRAWAL_DELAY
.
To Set the Allocation Delay, 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 register to Operator Set, run:
To de-register from Operator Sets, run:
Registered operators can update their metadata.
To update metadata URI:
Find the complete guide here:
Find the complete guide here:
Output
Find the complete guide here:
The name
and description
should comply with the regex mention . You can use services like to validate your fields.
Please note that a publicly accessible metadata url is required for successful registration. 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 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:
This is the command you can use to make changes or updates to the metadata of your operator. Post v0.9.0, this command will not update metadata uri. Please use command to update it.