SSV + Lido CSM (WIP)
This guide is used as reference material for in-person workshops with mainly non-technical audiences
Credits
This guide references the ideas and work of one of the Lido Community Staking members, @ivans_music. Check out his original work below!
WIP. DO NOT USE YET
Hardware (Holesky)
Spin up a virtual machine on a cloud service with the following specifications using the reference page below.
CPU: 4 cores
RAM: 16GB
SSD: 250GB
OS: Ubuntu 24.04
Tip: Open these reference pages in a new tab/window so that you can switch between them easily
Installing ETH Docker
Each cluster member will need to spin up an SSV node using ETH Docker. Refer to the page below to install it. Come back to this page right before the ethd config
command is run,
Follow along the prompts in the terminal UI (TUI) to:
Choose
Holešovice 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
Register SSV Operator
Go to the SSV webapp, connect your wallet, and set the network to Holesky.
Select
Join as Operator
>>Register Operator
Paste your SSV node public key into the
Operator Public Key
field. Make sure there are no whitespaces in your pasted string.Keep
Operator Status
to PublicSet the annual fee to 1.5 SSV per validator key, representing ~1.5% staking rewards fee at current $ETH and $SSV prices ($2650 & $23).
Register operator and sign the transaction on your wallet
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.
Choose
Holešovice Testnet
>>SSV node - consensus, execution and ssv-node
Select
yes
for Do you want to participate in DKG ceremonies as an operator?Because you now have your
SSV Operator ID
, you can paste it in the requested fieldSelect the consensus and execution client of your choice
Use the
provided URL
for Checkpoint Sync, selectyes
for MEV Boost,yes
for Grafana dashboardsSet
Rewards Address
to an ERC-20 wallet address that you control (e.g., Metamask, hardware wallet)use default
Graffiti,yes
for generate validator keys
Customise ETH Docker Settings
Open up the ETH Docker .env
file for editing.
Add all MEV Relays
Add #
to the start of the MEV_RELAYS=
line.
Copy the string below and paste it in the next line, under the current #MEV_RELAYS=
line.
This enables your SSV Node to use all MEV Relays which maximises MEV rewards for stakers using SSV.
Change SSV DKG Port
Change the SSV_DKG_PORT=
to 443 (from 3030).
CTRL+O
, ENTER
, CTRL+X
to save and exit.
Configure DKG endpoint
Find the external IP address of your VM on your Google Cloud account >> Console >> Compute Engine >> Look under "External IP".
Your DKG endpoint will be <EXTERNAL_IP_ADDRESS>:443
,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:
Start ETH Docker
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 is just to signal the relays that you are using.
All cluster members must use the same relays to avoid missing block proposals due to a lack of consensus!
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!
Create a Safe Multi-Sig Wallet
Cluster leader collects the wallet addresses of all cluster members to assign each of them as signers of this multi-sig wallet
Next, create a Safe multi-sig wallet on Holesky for your cluster here: https://holesky-safe.protofire.io/
Connect your wallet >> Input your cluster name & select Holesky network
Add all wallet addresses of your cluster as signers. Choose any name for each signer. Select your signing threshold.
The recommended signing thresholds are 3/4, 4/5, 5/6, 5/7, 6/8, 7/9, & 7/10.
Create Splitter Contract
Create a Splitter contract for your cluster here: https://app.splits.org/
Connect your wallet >> Create new contract >> Set the network to
Holesky
(you might need to zoom out on your browser to see testnets) >> ChooseSplit
Add each cluster member's wallet address and set their respective percentage splits
Set Controller to
None (immutable)
, Distribution bounty toOff
, & choose whether you want to sponsor the maintainer of SplitsOptionally, set the name of your Splitter contract
Create your SSV Cluster
After all cluster members have registered their operators one of the cluster members opens the SSV webapp and connects the cluster Safe wallet.
Choose WalletConnect as the method (not Metamask or Coinbase Wallet)
Open
the WalletConnect modal >> Copy the link (look for the "Copy" icon)
Go to you cluster's Safe multi-sig account and click on the WalletConnect icon >> Paste the copied link from the SSV Webapp here
Go back to the SSV Webapp >> Distribute Validator >> Generate new key shares
Select cluster size and the SSV Operators in your cluster >> Select
Offline
as your preferred DKG methodSelect
DKG - Generate from New Key,
number of keys you want to generate, & set the withdrawal address to0xF0179dEC45a37423EAD4FaD5fCb136197872EAd9
(Lido TESTNET withdrawal vault)Select
Linux (and WSL)
and copy the DKG command that will be generated for you
Initiating the DKG Ceremony
Make sure all cluster members have confirmed that their DKG service is running and reachable.
Run cd
, then run the generated DKG command on your VM and you should see "DKG ceremony completed" if the DKG ceremony completes successfully.
Back up all DKG output files located in $HOME/ceremony*
folder.
Save this folder onto a USB drive and delete the copy on your laptop.
Return to the SSV Webapp and acknowledge Step 2: Deposit Validator (although this is not yet done at this point), then go to Step 3 and click on Register Validator.
Create CSM Operator
Exiting CSM-SSV validators
Last updated