Comment on page
Operator Installation
- Docker: Ensure that Docker is installed on your system. To download Docker, follow the instructions listed here.
- Docker Compose: Make sure Docker Compose is also installed and properly configured. To download Docker Compose, follow the instructions listed here.
- Linux Environment: EigenLayer is supported only on Linux. Ensure you have a Linux environment, such as Docker, for installation.
- If you choose to install eigenlayer-cli using the Go programming language, ensure you have Go installed, version 1.21 or higher. You can find the installation guide here.
On a native Linux system, you can use the lsb_release -a command to get information about your Linux distribution.
Check for Docker
If you are not using a native Linux system and want to use EigenLayer, you can check if Docker is installed:
- Open a terminal or command prompt.
- Run the following command to check if Docker is installed and running:
css
docker --version
If Docker is installed and running, EigenLayer can be used within a Docker container, which provides a Linux environment.
By following these steps, you can determine if you have a suitable Linux environment for EigenLayer installation.
The Eigenlayer CLI tool versions are managed using GitHub releases.
To install it, you can download the binary directly from the release assets manually, or by using the following command, replacing <VERSION> and <ARCH> with the appropriate values.
curl -L https://github.com/NethermindEth/eigenlayer/releases/download/<VERSION>/eigenlayer-linux-<ARCH> --output eigenlayer
chmod +x ./eigenlayer
"Linux/amd64" signifies a Linux operating system variant tailored for computers using the prevalent amd64 (x86-64) architecture, which is widely used in desktops and servers, supporting both 32-bit and 64-bit software, with 64-bit being the prevalent choice for modern systems.
curl -L https://github.com/NethermindEth/eigenlayer/releases/download/v0.4.3/eigenlayer-linux-amd64 --output eigenlayer
chmod +x ./eigenlayer
"Linux/arm64" refers to a version of the Linux operating system that is specifically designed to run on computers using the ARM64 architecture, which is commonly used in mobile devices, embedded systems, and some server environments.
curl -L https://github.com/NethermindEth/eigenlayer/releases/download/v0.4.3/eigenlayer-linux-arm64 --output eigenlayer
chmod +x ./eigenlayer
Note: If you are using Ubuntu 20.04 you can also use the following command to install the binary.
curl -L https://github.com/NethermindEth/eigenlayer/releases/download/v0.4.3/eigenlayer-linux-amd64-ubuntu-20-04
--output eigenlayer
chmod +x ./eigenlayer
curl -L https://github.com/NethermindEth/eigenlayer/releases/download/v0.4.3/eigenlayer-linux-arm64-ubuntu-20-04
--output eigenlayer
chmod +x ./eigenlayer
Now we’re going to install the eigenlayer-CLI using Go. The following command will install eigenlayer’s executable along with the library and its dependencies in your system.
go install github.com/NethermindEth/eigenlayer/cmd/eigenlayer@latest
Now we’re going to verify that the installation has been printed in the correct path.
go install github.com/NethermindEth/eigenlayer/cmd/eigenlayer@latest
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:
export GOBIN=$GOPATH/bin
export PATH=$GOBIN:$PATH
Changes made to a profile file may not apply until the next time you log into your computer. To apply the changes immediately, run the shell commands directly or execute them from the profile using a command such as source $HOME/.profile.
To pursue this installation method you need to have Go. Please ensure that you installed Go with a minimum version of 1.21 here.
With this method, you generate the binary manually, downloading and compiling the source code.
git clone https://github.com/NethermindEth/eigenlayer.git
cd eigenlayer
mkdir -p build
go build -o build/eigenlayer cmd/eigenlayer/main.go
or if you have make installed:
git clone https://github.com/NethermindEth/eigenlayer.git
cd eigenlayer
make build
The executable will be in the build folder.
In case you want the binary in your PATH (or if you used the Go method and you don't have $GOBIN in your PATH), please copy the binary to /usr/local/bin:
ECDSA keypair corresponds to the operator Ethereum address and key for interacting with Eigenlayer. The BLS key is used for attestation purposes within the EigenLayer protocol. Only 1 BLS key can be registered per Operator entity in EigenLayer. Only 1 BLS key should be paired with only 1 ECDSA key and vice versa.
There is a fixed 1 to 1 relationship between the ECDSA key and the BLS key. You can't re-use any kind of key with any other kind of key. Once registered you can't change the BLS key associated with ECDSA key.
Generate encrypted ECDSA and BLS keys using the CLI:
eigenlayer operator keys create --key-type ecdsa [keyname]
eigenlayer operator keys create --key-type bls [keyname]
[keyname]
- This will be the name of the created key file. It will be saved as<keyname>.ecdsa.key.json
or<keyname>.bls.key.json
.
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.
eigenlayer operator keys create --key-type ecdsa test
The tool is requesting a password to encrypt the ECDSA private key for security purposes. The password input is hidden for security reasons.
? Enter password to encrypt the ecdsa private key:
ECDSA Private Key (Hex): b3eba201405d5b5f7aaa9adf6bb734dc6c0f448ef64dd39df80ca2d92fca6d7b
Please backup the above private key hex in safe place.
Key location: /home/ubuntu/.eigenlayer/operator_keys/test.ecdsa.key.json
Public Key hex: f87ee475109c2943038b3c006b8a004ee17bebf3357d10d8f63ef202c5c28723906533dccfda5d76c1da0a9f05cc6d32085ca1af8aaab5a28171474b1ad0aa68
Ethereum Address 0x6a8c0D554a694899041E52a91B4EC3Ff23d8aBD5
You can import existing ECDSA and BLS keys using the CLI, which are required for operator registration and other on-chain operations. This is useful if you already have an address which you want to use as your operator.
To import an ECDSA key, use the command:
eigenlayer operator keys import --key-type ecdsa [keyname] [privatekey]
.
To import a BLS key, use the command:
eigenlayer operator keys import --key-type bls [keyname] [privatekey]
.[keyname]
is the name of the imported key file, and it will be saved as<keyname>.ecdsa.key.json
or<keyname>.bls.key.json
.privatekey
is the private key of the key you wish to import.- For BLS keys, it should be a large number.
- For ECDSA keys, it should be in hex format.
This part of the command tells the EigenLayer tool that you want to import a key.
eigenlayer operator keys import --key-type ecdsa test 6842fb8f5fa574d0482818b8a825a15c4d68f542693197f2c2497e3562f335f6
This is a prompt asking you to enter a password to encrypt the ECDSA private key.
? Enter password to encrypt the ecdsa private key: *******
ECDSA Private Key (Hex): 6842fb8f5fa574d0482818b8a825a15c4d68f542693197f2c2497e3562f335f6
Please backup the above private key hex in safe place.
Key location: /home/ubuntu/.eigenlayer/operator_keys/test.ecdsa.key.json
Public Key hex: a30264c19cd7292d5153da9c9df58f81aced417e8587dd339021c45ee61f20d55f4c3d374d6f472d3a2c4382e2a9770db395d60756d3b3ea97e8c1f9013eb1bb
Ethereum Address 0x9F664973BF656d6077E66973c474cB58eD5E97E1
This will initiate a password prompt that you can use to encrypt the keys. The keys will be stored on your local disk and will be displayed after they are created.
The private key will also be shown only once, enabling you to create a backup in case you forget the password or lose the key file.
This is the command you can use to retrieve a list of the keys you have created with the EigenLayer cli tool.
eigenlayer operator keys list
When you run the Eigenlayer operator keys list command, it will display a list of all the keys that were generated using this specific command, along with their corresponding public keys.
This information can be useful for managing and identifying the keys you've created. Public keys are typically used for encryption, authentication, and verifying digital signatures.
Follow the instructions in Obtaining Testnet ETH to fund a web3 wallet with Goerli ETH. Send at least 1 Goerli ETH to the “address” field referenced in your operator-config.yaml file. This ETH will be used to cover the gas cost for operator registration in the subsequent steps.
A sample YAML configuration file and metadata are provided. To register, please fill in the required metadata in the
metadata.json
file. Metadata file also requires a logo of your operator. Please ensure that images are also uploaded to a publicly hosted link. We only support .png
images for now. Once the metadata url is available, fill that in the operator configuration yaml file. You may also generate an operator configuration files using the commands mentioned in this section. Complete the necessary information to register your operator. Ensure that if you're using
local_keystore
as the signer, you provide the path to the keys created in the previous sectionNote: Please ensure that when adding your metadata_url link to operator configuration, the link is a publicly hosted link that can be accessed for registration.
The EigenLayer CLI requires access to an Ethereum RPC node in order to post registration. Please plan to either leverage an RPC node provider or run your own local RPC node to reference in operator-config.yaml.
An example list of providers is available here for your reference. You may locate one using Chainlist Goerli.
For operator registration in a Goerli environment, you need to set the Slasher and BLS public key compendium contract as follows.
The Operator CLI requires two sets of keys (ECDSA and BLS) for two different purpose. For ECDSA, this is an Operator Ethereum address and key for interacting with Eigenlayer. For the BLS key, this is a key that is used for attestation on EigenLayer.
# 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
This is the command you can use to register your operator.
Note: ECDSA and BLS keys are required for operator registration. You may choose to either create your own set of keys using the EigenLayer CLI (recommended for first time users) or import your existing keys (recommended for advanced users who already have keys created) as outlined in the previous section.
eigenlayer operator register operator-config.yaml
This is the command you can use to inquire about the registration status of your operator.
eigenlayer operator status operator-config.yaml
This is the command you can use to make changes or updates to the metadata of your operator.
eigenlayer operator update operator-config.yaml
This command allows you to create a sample configuration file as a starting point for setting up operator registration and metadata.
This is useful when you want to generate a new configuration file.
eigenlayer operator config create
It will create two files:
operator.yaml
and metadata.json.
After completing the necessary information in
metadata.json
, please upload it to a publicly accessible location and then provide the URL in operator.yaml
. A valid metadata URL is essential for a successful registration.