🗒️Node Operators Guide
Setup your operator in Ditto AVS
Ditto operator checklist
Docker: ensure docker is installed on your system. To download Docker, follow the instructions listed here.
Golang: required for installing EigenLayer CLI. To download Go, follow the instructions listed here.
Preparation
This step provides commands to install Docker and Golang on Ubuntu Linux. If you already installed them or this installation method not applicable to you see the links above.
For installing docker run this commands in order:
Add Docker's official GPG key:
Add the repository to Apt sources:
Install docker
Check docker installation
For installing golang run following command in order:
Install go
Ensure go installed correctly
Configure PATH
Creating EigenLayer operator
This sections repeats most important steps of this EigenLayer documentation.
Install EigenLayer CLI
Install EigenLayer CLI using go
Check EigenLayer CLI installation
Generate keys
Generate encrypted ECDSA and BLS keys using the CLI:
Attention: SAVE PASSWORD FOR USE LATER
[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.
Output
The Ethereum Address
is the address of your operator.
You can add this wallet to metamask by ECDSA Private Key
.
List existing keys
You can list existing keys using
View Private key (recovery)
You can view(recovery) ECDSA and BLS private keys using the CLI:
Fund ESDSA wallet
Send at least 1 ETH to the “address” field referenced in your operator.yaml file. This ETH will be used to cover the gas cost for operator registration in the subsequent steps.
If you are deploying to Testnet, please follow the instructions in Obtaining Testnet ETH to fund a web3 wallet with HolEth.
Create operator config
Run to create operator.yaml
During creation you will be prompted to input those parameters
Operator address — address you got from generating ecdsa key
Earning address — can leave it empty, default to operator address. This address where you earning will be transferred to.
ETH RPC url — RPC url of the node. More on that in here.
Network — the network you want to create your operator on. More on this here.
Signer type — select
local_keystore
.
After completion you will have operator.yaml
looking like this:
Create metadata
Publish metadata to github
In order to register operator on EigenLayer you need to have a publicly accessible metadata file.
Best way to do so is creating Github repository.
In your github repository upload logo in png format and following manifest replacing placeholders with valid values:
Add reference to operator.yaml
operator.yaml
Fill the metadata_url
field in your operator.yaml
file with the link to your manifest.json
Register operator on EigenLayer
Run the following command to register your operator on EigenLayer:
You should get a link to your operator page on succesfull creation.
Registering operator in Ditto AVS
Pull Ditto Entry Point docker container
Add required ENV variables
Run this commands to add required ENV variables:
In EXECUTOR_PRIVATE_KEY
you can specify your wallet private key or generate new using this command:
Register on Ditto AVS
node-url
— RPC url of the node. More on that in here.contract-addr
— Specifies the address of the Ditto Entry Point contract. See here.
Set delegated signer
node-url
— RPC url of the node. More on that in here.contract-addr
— Specifies the address of the Ditto Entry Point contract. See here.address
— Address of executor, private key for which you provided inEXECUTOR_PRIVATE_KEY
.
Launch operator
Finally run docker container to start your operator:
You need some amount of ETH to start.
node-url
— RPC url of the node. More on that in here.contract-addr
— Specifies the address of the Ditto Entry Point contract. See here.
You can read more on Ditto operator here.
Monitor logs
To access operator logs run:
Ensure there are no errors and operator started polling for updates (it can take some time for it to start).
Deregistering operator in Ditto AVS
Graceful shutdown and deactivation
On graceful shutdown operator will deactivate automaticly. However if you need to force deactivate use this command.
node-url
— RPC url of the node. More on that in here.contract-addr
— Specifies the address of the Ditto Entry Point contract. See here.
ATTENTION! Wait until rearrangement happens (epoch increment). You could attach to container logs. Firstly, you’ll observe not executor messages, then it will become either Not my turn to execute or info about active workflows in case if it is your turn. You’re now in a forever loop, being a part of the executors network. Congrats ^^
Deregister operator
Run this command to deregister operator from Ditto AVS.
Reference
Networks
List of available networks with chainId.
Mainnet - 1
Holesky - 17000
Currently Ditto AVS supports only Holesky testnet.
RPC nodes
Used to make contract calls, send transactions, and receive real-time updates via WebSocket connections. The node can be a local full node, a hosted node, or a service provider’s endpoint (e.g., Infura, Alchemy, Quicknode). Ensure that the node has the necessary access and permissions for your operations.
Example url: wss://mainnet.infura.io/ws/v3/YOUR-PROJECT-ID
.
Example lists of RPC node providers:
Ditto entry point address
List of addresses of the Ditto entry point.
Currently only holesky.
Holesky — 0x5FD0026a449eeA51Bd1471E4ee8df8607aaECC24
Last updated