EigenLayer CLI with YubiHSM2 Support
Software by Tessellated // tessellated.io
This repository contains a modified version of the Eigenlayer CLI, but which signs with a YubiHSM2.
Usage:
eigenlayer operator register \
<path to operator yaml> \
<yubihsm http connector> \
<password file for yubihsm auth key> \
<auth key id> \
<operator key id>
Example: Registering key in slot 1, using auth key in slot 0:
eigenlayer operator register /home/eigenlayer/operator.yaml localhost:12345 /secrets/yubihsm-password 0 1
Usage:
eigenlayer operator update \
<path to operator yaml> \
<yubihsm http connector> \
<password file for yubihsm auth key> \
<auth key id> \
<operator key id>
Example: Updating key in slot 1, using auth key in slot 0:
eigenlayer operator update /home/eigenlayer/operator.yaml localhost:12345 /secrets/yubihsm-password 0 1
The only modifications in this repo are to change the operator register
and operator update
commands to use the YubiHSM2. You can easily verify these changes by comparing the repository branches.
Found this helpful? Consider delegating to Tessellated on Eigenlayer!
Original README below.
EigenLayer CLI is used to manage core operator functionalities like local key management, operator registration and updates.
Operating System | Architecture |
---|---|
Linux | amd64 |
Linux | arm64 |
Darwin | amd64 |
Darwin | arm64 |
To download a binary for the latest release, run:
curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s
The binary will be installed inside the ~/bin
directory.
To add the binary to your path, run:
export PATH=$PATH:~/bin
To download the binary in a custom location, run:
curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s -- -b <custom_location>
First, install the Go programming language following the official instructions. You need at least the 1.21
version.
Eigenlayer is only supported on Linux. Make sure you install Go for Linux in a Linux environment (e.g. WSL2, Docker, etc.)
This command will install the eigenlayer
executable along with the library and its dependencies in your system:
As the repository is private, you need to set the
GOPRIVATE
variable properly by running the following command:export GOPRIVATE=github.com/Layr-Labs/eigenlayer-cli,$GOPRIVATE
. Git will automatically resolve the private access if your Git user has all the required permissions over the repository.
go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@latest
The executable will be in your $GOBIN
($GOPATH/bin
).
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
.
With this method, you generate the binary manually (need Go installed), downloading and compiling the source code:
git clone https://github.com/Layr-Labs/eigenlayer-cli.git
cd eigenlayer-cli
mkdir -p build
go build -o build/eigenlayer cmd/eigenlayer/main.go
or if you have make
installed:
git clone https://github.com/Layr-Labs/eigenlayer-cli.git
cd eigenlayer-cli
make build
The executable will be in the build
folder.
In case you want the binary in your PATH (or if you used the Using Go method and you don't have $GOBIN
in your PATH), please copy the binary to /usr/local/bin
:
# Using Go
sudo cp $GOPATH/bin/eigenlayer /usr/local/bin/
# Build from source
sudo cp eigenlayer-cli/build/eigenlayer /usr/local/bin/
Please refer to the full documentation here.
Links to specific sections are provided below.
- Create Keys
- Import Keys
- List Keys
- Export Keys
- Fund Wallet with ETH
- Register Operator
- Operator Status
- Metadata Updates
- Frequently Asked Questions
- Troubleshooting
If you see any issues in documentation please create an issue or PR here
To release a new version of the CLI, follow the steps below:
Note: You need to have write permission to this repo to release new version
-
Make sure the release version is updated here
-
In your local clone, create a new release tag using the following command:
git tag v<version> -m "Release v<version>"
-
Push the tag to the repository using the following command:
git push origin v<version>
-
This will automatically start the release process in the GitHub Actions and will create a draft release to the GitHub Releases with all the required binaries and assets
-
Check the release notes and add any notable changes and publish the release