CSM + DVT with SSV
SSV Network implements Distributed Validator Technology (DVT) by splitting a validator key into encrypted shares and distributing them across independent operators. This reduces single-operator risk, improves resilience, and strengthens decentralization. Great for home stakers who want to operate collaboratively.
Why Lido CSM + SSV?β
- Resilience: Validators keep operating if one or more operators go offline.
- Security: No single operator holds the full key; compromising the validator requires multiple shares.
Preparationβ
SSV clusters can be formed with as few as 4 operators, but we recommend 7 operators as it's the minimum configuration to tolerate two malicious nodes.
Before creating your SSV cluster:
- Appoint a coordinator to drive the process.
- Decide your operator economics for each memberβs operator:
- Exclusive for this cluster: set the operator fee to 0 $SSV and whitelist the cluster multisig address so only your cluster can use the operator.
- Open mode: allow others to use your operator and set a fair SSV fee that can be covered by your CSM operations. Ideally, use CSM operator rewards to pay SSV fees so your operators keep running sustainably.
- Create a Safe multi-sig wallet (
4/7
or5/7
threshold recommended) β safe.global. - Create a Splitter contract for rewards distribution β splits.org.
- Decide how many validator keys to run based on available ETH bond for Lido CSM.
- Youβll still need full Ethereum node connectivity (EL+CL) and MEV-Boost with Lido-vetted relays as required by Lido CSM. See Node Setup.
1. Preparing Your Environmentβ
SSV provides a Node Stack using Docker for easy installation and configuration of your SSV node. Please note you need to run your own execution and consensus clients, you can see how to do so in the node setup section.
- Clone the SSV Stack repository and set up the environment:
git clone https://github.com/ssvlabs/ssv-stack.git
cd ssv-stack
cp ssv.example.env ssv.env
- Configure your node:
Open
ssv.env
using:
nano ssv.env
Then edit:
BEACON_NODE_ADDR
: the HTTP address of the Beacon APIETH_1_ADDR
: the WebSocket address of the Execution clientNETWORK
: the network you are running (mainnet
orhoodi
)
2. Starting the operator and get the Public Keyβ
To start your node use the following command
docker compose up
Or you can start it in the background, so there won't be logs in your CLI
docker compose up -d
At the top of the logs you'll find the Public Key of the SSV operator.
LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeEwzRTVuMjA2VkxVZk91dXlNUFIKZFdyd3o5VVFSMmlNSDNZSC9qWVRBamdHcnhySThaM2plU3JwTENFNmVqeVJuOFc1dW1tTUJxWEpiTzNLakpOQwprN3RVS0E5b1owaU95cUdhVEsxay84aldlcW5RcUZaNFdWM2lWUXBVbFBhVWRmMlJoWDJoa1FOSkZwQVc3V3RXCmhEM2NHK1E2TjVZc0VHQTQ5dkp3VFdtMjBRYXhHVUNQRUJtMFFHZzBNZGZLa0JKa2M1Nk1renAyN1pZMmRaQkwKeFYycFRkSkhzam1FZlBvTWIreUw1TkhxaW55RVA3eU5ERGJYL1JIUlA0QzJlWkxuQjQ3cmJTUzhkOHlPdzYxQgpaZ2NHeXkvUUU4QlNHYW9ET3JLV3krQXdWclBQdGtjU1lXblJoL2JoU01lbjZzSldRc2F6M1l6Z2w0RDZnOVV6CitRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K
It will also generate a random password
and encrypted private_key
files on the first run. They will be stored under the ~/ssv-stack/ssv-node-data
directory. Make sure to back them up.
3. Register the Operatorβ
To register your Operator in the SSV network, open app.ssv.network and connect the wallet you will use to manage your Operator (not the cluster multisig). Then proceed to:
- Select Join as operator and then Register operator
- Input the Public Key from the previous step
- Set a fee (remember if private cluster to 0, or if want to go public put a number that make sense. There's rules about updating the fees later that you can find here)
- Review the information in the screen. If everything looks good go ahead, click Register Transaction and wait for the transaction to be completed.
At the end you will see a confirmation screen including an Operator ID. Note it down and share it with the cluster coordinator.
4. Enable the DKG toolβ
With the DKG tool operators will be able to participate in ceremonies to generate distributed validator keys. To start the DKG node:
Open the DKG operator file
nano ./dkg-data/operator.yaml
Edit the following:
operatorID: <YOUR_OPERATOR_ID>
ethEndpointURL: <HTTP_ADDRESS_OF_EXECUTION_CLIENT>
Then start the service
docker compose --profile dkg up -d
To complete the DKG setup make sure to open the port 3030
and edit your operator metadata with the DKG endpoint as shown here.
5. Create the Cluster Management Contractsβ
Multi-sig Walletβ
Create a Safe multi-sig with all stakeholders as signers:
- Hoodi Testnet Safe: app.safe.protofire.io/welcome
- Mainnet Safe: app.safe.global
Threshold: 4/7 or 5/7 recommended.
Splitter Contractβ
Deploy a Splitter via app.splits.org with all operator reward addresses.
- Prefer immutable configuration.
- Share the contract address with all members.
6. Set up a Cluster and Distribute Validatorsβ
Once all the members have registered their operators and activated DKG we can proceed to form the cluster
- Go to app.ssv.network and connect the multisig wallet.
- In the WebApp, click on Distribute Validator and then select Generate new keyshares.
- The next screen will show you all the operators in the SSV network, select those who will be part of your cluster.
- You will be asked how you want to generate the keyshares. Select Offline, then input how many validators you want to generate (e.g., 5) and the Lido Withdrawal Vault address (
0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293f
for Mainnet or0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2
for the Hoodi testnet). - The previous step will give you a command, running it will create a folder with multiple folders inside and
deposit_data.json
,keyshares.json
andproofs.json
files. - Click on Register Validators and drag-and-drop the
keyshares.json
file. Please note that you won't be able to register more than 40 validators at the same. - Then you will be asked to provide SSV tokens to cover the fees (from both the operators and the protocol) for running the cluster. The purchase of these tokens should be agreed upon the operators.
- Review the information and disclaimers in the following pages, then submit the transaction to register the validators.
9. Upload Keys to Lido CSMβ
To use your SSV validator(s) with Lido CSM:
- Create a Node Operator in the Lido CSM Widget using Extended Mode (as described here).
- Manager Address β your Safe multi-sig
- Rewards Address β your Splitter contract
- Upload
deposit_data.json
for the validators and provide the required bond as described in this section of the guide.
10. Exiting Validatorsβ
You can exit validators directly in the SSV App:
- Go to app.ssv.network, sign in with the cluster multi-sig and open the cluster page.
- Go to Actions β Exit validators.
- Select the validators you want to exit and confirm.