Lido CSM+SSV+Obol (Testnet)

Overall Workflow

  1. SSV: Set up SSV node + SSV DKG services & Execution + Consensus Clients using Eth Docker

  2. Obol: Set up Obol Charon service & Validator Client using Eth Docker to import Obol-compatible validator keyshares

  3. Lido CSM: Set up a second and Dedicated Validator Client using EthPillar to import Lido CSM-compatible validator keys

Hardware Setup (Testnet)

Spin up a virtual machine on a cloud service with the following specifications using the reference page below.

  • CPU: 4 cores

  • RAM: 8GB

  • SSD: 250GB

  • OS: Ubuntu 24.04

Example:

Google Cloud

Installing ETH Docker

Go to the ETH Docker repository and to get and run the installation commands. Run the next 2 commands in sequence.

Exit your virtual machine/hardware and re-login to add your host user into the sudo & docker user group.

Enable ethd to be called from anywhere on your terminal.

SSV Setup

Follow along the prompts in the terminal UI (TUI) to:

  • Choose Hoodi Testnet >> SSV node - consensus, execution and ssv-node

  • Select yes for Do you want to participate in DKG ceremonies as an operator?

  • Once you see the screen below, select <Cancel> as we don't have our Operator ID yet.

  • Then copy your SSV node public key from your terminal output and save it on a text editor

ETH Docker TUI Navigation
  • Arrow keys & Tab key: Cycle options

  • Space bar: Select option

  • Enter: Confirm option

  • CTRL+C: Exit individual screen monitoring view

  • ESC: Quit

Register SSV Operator

  1. Go to the SSV webapp, connect your wallet, and set the network to Hoodi.

  2. Select Join as Operator >> Register Operator

  3. Paste your SSV node public key into the Operator Public Key field. Make sure there are no whitespaces in your pasted string.

  4. Keep Operator Status to Public

  5. Set the annual fee to 1.5 SSV per validator key, representing ~1.5% staking rewards fee at current $ETH and $SSV prices ($2650 & $23).

  6. Register operator and sign the transaction on your wallet

  7. Your SSV Operator ID will then be generated. Copy it and save it in a text editor file.

Setting your Operator Status to Public allows other stakers to select your SSV node as one of their DV operators, allowing them to pay you for your service. You can also easily net off the fees among your own DVT cluster members if you wish.

Complete ETH Docker Setup

Go back to the terminal of your VM.

  1. Choose Hoodi Testnet >> SSV node - consensus, execution and ssv-node

  2. Select yes for Do you want to participate in DKG ceremonies as an operator?

  3. Because you now have your SSV Operator ID, you can paste it in the requested field

  4. Select the consensus and execution client of your choice

  5. Use the provided URL for Checkpoint Sync, select yes for MEV Boost, yes for Grafana dashboards

  6. Set Rewards Address to an ERC-20 wallet address that you control (e.g., Metamask, hardware wallet)

  7. use default Graffiti, yes for generate validator keys

Start ETH Docker

Configure DKG endpoint

Find the external IP address of your VM on your Cloud account >> Console >> Compute Engine >> Look under "External IP".

Your DKG endpoint will be <EXTERNAL_IP_ADDRESS>:3030,without the pointy brackets. Note that down and save it in a text editor file.

Verify that your DKG endpoint is accessible from external sources.

Expected output:

View logs

Complete SSV Operator Metadata

Complete SSV Operator Metadata

Go back to the SSV webapp >> Connect your wallet >> Switch to Holesky network >> go to My Account and click on your SSV Operator.

Select the ... drop down at the top right >> Edit Details

Select all options under MEV Relays.

The MEV Relays are actually set in your ETH Docker config and this step is just to signal the relays that you are using.

Use all available MEV Relays so that it's easier for stakers to choose your SSV Node.

Input your DKG endpoint and append :443 at the end if you are using a Tailscale funnel.

The other fields are optional but fill them up to attract stakers to select your SSV Operator!

Obol Setup

Go back to your Home folder.

Cluster Creation

  1. Go to the Obol Hoodi Launchpad, scroll down and select "Create a distributed validator alone"

  2. Read and click through the Advisories

  3. Input your cluster details as follows

    1. Cluster Name: Any

    2. Cluster Size: 4

    3. Validators: 1

    4. Withdrawal & Fee Recipient Address: Your own wallet address

Example screenshot

  1. Create your cluster by signing an onchain transaction on your wallet

  2. Copy the resulting "Create Cluster" command generated on the Obol Launchpad and run it on your terminal.

Example command
The following folders and files will be created:
  • cluster

    • node0

      • charon-enr-private-key cluster-lock.json deposit-data.json validator_keys

        • keystore-0.json keystore-0.txt

    • node1

      • charon-enr-private-key cluster-lock.json deposit-data.json validator_keys

        • keystore-0.json keystore-0.txt

    • node2

      • charon-enr-private-key cluster-lock.json deposit-data.json validator_keys

        • keystore-0.json keystore-0.txt

    • node3

      • charon-enr-private-key cluster-lock.json deposit-data.json validator_keys

        • keystore-0.json keystore-0.txt

Preparing your cluster

Set the necessary permissions to your newly generated Obol ENR private key and cluster file.

Copy the following files from one of the cluster folders (e.g., node0) above into the ~/eth-docker/.eth folder and set the necessary permissions.

Edit the .env file of Eth Docker.

In the COMPOSE_FILE line:

  • Append :lido-obol.yml and :cl-shared.yml

  • Edit the "consensus"-cl-only.yml file to "consensus".yml. e.g., From nimbus-cl-only.yml to nimbus.yml

Example:

Press CTRL+W, type "CL_NODE" and hit ENTER.

  • Change the CL_NODE line to http://charon:3600 (from http://consensus:5052)

Example:

CTRL+O, ENTER, CTRL+X to save and exit.

Restart ETH Docker

Print the generated password of your Obol validator key shard and copy the output to your clipboard.

After all your services running via Docker "warmed up" for ~5 minutes, import your validator key shard and paste the password when prompted.

Monitoring Charon

Print the logs of the Obol Charon & Validator Client.

Lido CSM Setup

Go to the Coincashew website and copy the latest 1-line installation command and paste it into your terminal.

Then, type + enter ethpillar and follow along the prompts in the terminal UI (TUI) to:

  1. Select the Nimbus-Nethermind option

  2. Wait for the installation to be done and then select 2 - Hoodi for your network (Press "2" & ENTER)

  3. Select the 4 - Lido CSM Validator Client only option

  4. Enter http://127.0.0.1:5052 as your Consensus Client endpoint

  5. Generate validator keys to participate in the Lido CSM

    • Do not choose to disable internet connection when prompted

    • Select Hoodi

    • Enter the Lido's CSM Withdrawal Vault address as the Withdrawal Address: 0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2

    • Set the password for your validator keys

    • Save the 24-word mnemonic securely

  6. Import the generated validator keys onto your validator client

Copy the deposit data generated by the command below for uploading onto the Lido CSM Widget.

Example output:

View logs

Run the ethpillar command and select the view logs option

ETHPillar TUI Navigation
  1. Arrow keys & Tab key: Cycle options

  2. Space bar: Select option

  3. Enter: Confirm option

  4. CTRL+B, then D: Exit split-screen monitoring view

  5. CTRL+C: Exit individual screen monitoring view

  6. exit command (type "exit" and enter in terminal) : Exit current terminal

Exiting validator keys

Lido CSM

Find the file path of your validator keystores.

Copy the output file path.

  • Run ethpillar and navigate to validator client >> 20 Generate Voluntary Exit Messages (VEM) and input the file path of your validator keystore.

  • Then, run ethpillar and navigate to validator client >> 21 Broadcast Voluntary Exit Messages (VEM) and input the file path of your validator keystore.

Enter the password set for your validator keystore when prompted.

You can only exit your validator keystores after they have been activated on the Ethereum beacon chain.

Securing your device

Firewall Rules

Make sure to also configure port forwarding on the ports allowed above.

Advanced networking

Other Security SOPs

Networking & network securityDevice level security setup

Support

Last updated