SSV Distributed Validator package for Dappnode
Introduction
SSV is a network of validators that use a decentralized network of operators to run their validators. This package allows you to run an SSV Operator Node. The package is available for Ethereum Mainnet and the Holesky Testnet.
A Distributed Validator is one or more logical 32 ETH validators being operated across a number of nodes that are all online simultaneously and that all control a subset of each validator’s private keys. Dividing a validator across a group of nodes allows for fault tolerant validators that can remain online and validating despite a subset of its nodes experiencing an outage. The SSV network allows both users and operators to diversify staking risks, optimize performance, and promote decentralization across the Ethereum consensus layer with a wide range of configuration options.
Requirements
- The first thing you'll need to do is set up a fully-synced node. This can be done through the Stakers Menu in Dappnode by selecting:
- 1 Execution Client (Geth, Besu, Erigon or Nethermind)
- 1 Consensus Client (Prysm, Lighhouse, Lodestar, Teku or Nimbus)
- MEV Boost (optional)
-
Installing the SSV package for Dappnode. This can be done by visiting the DAppStore in the Dappnode UI and installing the SSV (Ethereum Mainnet) or SSV Holesky package.
-
Plus, you'll need to get the following information:
- Operator public key: Shown in your SSV package's Info tab after installing it.
- Operator fee: The fee charged by the operator per each managed validator. You can find more info about this in the SSV documentation. Keep in mind this fee can be changed later on if needed.
Registering a Dappnode SSV Node as an Operator
After successfully installing the SSV package, an operator must register it to the SSV Network in order to be discoverable by validators. You'll be able to do so in the SSV network web app.
The wallet address used to register the operator is the only address that will hold management permissions for it, so make sure you keep it safe!
-
Make sure to connect your Web3 wallet with the WebApp, and that the address corresponds with the one you want to manage your Operators with.
-
If you are connecting for the first time, you should see a screen like the image below. Select Join as Operator.
-
In the following screen, select Register Operator.
-
The next screen will ask you to input the Operator's public key and provide a confirmation of the Operator owner address. As mentioned earlier, this Operator's public key is shown in your SSV package's Info tab after installing it.
Please verify once more that the owner address correspond to the wallet address you want to manage your operators with.
Click Next when ready.
- In the following screen you'll be asked to set the Operator Fee, which is the fee charged by the operator per each managed validator. You can find more info about this in the SSV documentation. Keep in mind this fee can be changed later on if needed.
Enter a number and click Next when ready.
-
This confirmation screen presents a recap of the information input so far. Double check everything and click Register Operator when ready. This will generate a blockchain transaction you'll need to confirm to complete the Operator registration.
-
Once the transaction goes through your Operator is successfully registered, and stakers could now choose it to operate their validators.
In SSV you may or you may not be an operator in the cluster where you'll be validating. Keep this in mind for good security practices when splitting validator keys.
Exposing your DKG service
If you want to run the dkg
service, make sure the operator is registered in the SSV network and check the service is not stopped in the SSV Info Tab.
Add your node as a DKG endpoint in the SSV App Operator Config. You must set: http://<your-public-ip>:14515
. Make sure your 14515
port is open in your router setup.
You can get your public IP by clicking on the avatar in the upper-right corner of the Dappnode UI. If you're having trouble using your public IP, you can also use your Dappnode's dynDNS domain in the same format: http://<your-dynDNS-domain>:14515
.
You need to ensure every operator in the Cluster is competent and trustworthy before sharing this responsibility.
If you have any questions, don't hesitate to drop by the Dappnode Discord server.