πŸ—’οΈ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:

  1. Add Docker's official GPG key:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
  1. Add the repository to Apt sources:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. Install docker

  1. Check docker installation

For installing golang run following command in order:

  1. Install go

  1. Ensure go installed correctly

  1. Configure PATH

Creating EigenLayer operator

This sections repeats most important steps of this EigenLayer documentation.

Install EigenLayer CLI

  1. Install EigenLayer CLI using go

  1. 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:

More on this here.

Add reference to 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 in EXECUTOR_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