NG
SSV

SSV

Setup Guide

The official instructions are available here.

1. Install dependencies

It is necessary to set the dependencies for the SSV operator installation, to do this run the following commands:

cd $HOME
wget -q -O $HOME/install.sh https://raw.githubusercontent.com/bloxapp/ssv/main/install.sh
chmod +x $HOME/install.sh
./install.sh

2. Install the operator

2.1. Key generation

For the operator it is necessary to generate the keys, to do this run the command (copy the whole lower block and paste into the console):

docker run -d --name=ssv_node_op_key -it 'bloxstaking/ssv-node:latest' \
/go/bin/ssvnode generate-operator-keys && docker logs ssv_node_op_key --follow \
&& docker stop ssv_node_op_key && docker rm ssv_node_op_key

You should see something like the following:

SSV-0

The upper key is public, the lower one is private. Save these keys.

2.2. Endpoints

For the operator, we will use the nodes provided by the service Infura, to do this, register at infura.io and find the endpoints in your dashboard:
SSV-1
SSV-2
SSV-3
SSV-4

Copy the lower value (wss):

SSV-5

We also need to install the Beacon prater node, due to the disabling of this endpoint by Infura, we have to run it on our own server, it is recommended to install it on a server with a disk size of at least 1TB.
Use our script for a quick installation:

wget -q -O beacon-prater.sh https://api.nodes.guru/beacon-prater.sh && chmod +x beacon-prater.sh && sudo /bin/bash beacon-prater.sh

SSV-6
Copy the upper value (https):

SSV-7

Save the addresses of these endpoints.

2.3. Config

To create a configuration file, run the commands below (replacing <YOUR_HTTPS_BEACON_ETH2_ENDPOIN>, <YOUR_WSS_GOERLI_ETH_ENDPOINT> and <YOUR_PRIVATE_KEY_FROM_2.1> with your values):

export SSV_DB=$HOME/.ssv
mkdir -p $SSV_DB
yq n db.Path "$SSV_DB" | tee $SSV_DB/config.yaml \
&& yq w -i $SSV_DB/config.yaml eth2.Network "prater" \
&& yq w -i $SSV_DB/config.yaml eth2.BeaconNodeAddr "YOUR_HTTPS_BEACON_ETH2_ENDPOINT" \
&& yq w -i $SSV_DB/config.yaml eth1.ETH1Addr "YOUR_WSS_GOERLI_ETH_ENDPOINT" \
&& yq w -i $SSV_DB/config.yaml OperatorPrivateKey "YOUR_PRIVATE_KEY_FROM_2.1" \
&& yq w -i $SSV_DB/config.yaml MetricsAPIPort "15000"

Example of a complete command:

export SSV_DB=$HOME/.ssv
mkdir -p $SSV_DB
yq n db.Path "$SSV_DB" | tee $SSV_DB/config.yaml \
&& yq w -i $SSV_DB/config.yaml eth2.Network "prater" \
&& yq w -i $SSV_DB/config.yaml eth2.BeaconNodeAddr "http://135.181.205.9:5052" \
&& yq w -i $SSV_DB/config.yaml eth1.ETH1Addr "wss://goerli.infura.io/ws/v3/32240b05234QW30b0c95992aa2ea9fd" \
&& yq w -i $SSV_DB/config.yaml OperatorPrivateKey "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMGhsasdasR1FaWXFwSitCbHVYbnJ6WlltSTFSTldsNW9KMTlKeXB5MlE4ClFRS1hQVno5Q2VwYVljNUFLeW54VmSADQVhYSTU1L2xSVnZMNzNpNlVJenhuMGd5TFJwSzFSSG1lcXcKSGIwNnpqU1ZmeW92aWp5OG1ZNXJKOGhkaHVPT283UjltZm5zUmFiMzM2alVZckRpZVJBNFU3UVdGbzhaZ1U4TAo1MnhNVlM1clNvNWp1QTcvV2IwWDdQVUMwYTVwdURKMi9lYUNjUmtwTTEyaE5qemRrZ3NIRjdrWGV2dnNLaGQyCjZCSEx0L0FoT0JVVGNjc0wxd2d3anZhbGRuVlF6cEczdjFxeUJCbHVsTlRDeG9Bb0I3eEw1WHlYaGVhNFFEM3MKVFhmdXVLTDNaMjFHMDFaclVBNGhVZE9KOC9qS0RUcnlNTmQwR1FJREFRQUJBb0lCQUFsL3NuMnZWbk5qY3ZCKwpzL1dLUi81Ymw4QktnMzJLT1NSU2tIeWFlMkRDMEg1c21yakp1RExEQ0lHeFFjTFlRMWh3UGdRRWhjNkgyYTIrCndZcFB1Uzd4V0NTTmJqdmpqVm0xQUkxeWNxck4xYXJrekcrYnhaUGJGc000RWd3cThNLzBlMjNDQmxCNTYxSUYKY0FSTkkxeUd6d0FpcnUrRFZjbnBiTktEK3Rlc0xZYVhJYlpkMXB6L3ZZSnJ5c0RpUXhnZjFsZGZ3VGV3aDVnUAo2eW9mYTVzcGt5eURPckF0UDhsRmg1cmRpZHVXOXRaaHJpZGxQNkd6a1YxV1gvR1N6djd5MWVZSjVGVElRNXd6CkJ3b2NrUksxYmk0RFNIZWFhMUxwQ3VJczE5M1NWNnc5bUR0cW02cG5ZWGNxY2Zqemc1MTRmWUt0YWxVbVkvTXEKQWRVTm5HMENnWUVBLzEyeG4vTk9zc3cveE81SktFNmtrUFhJcG1ENjZNWHZKeEtOaGVWNHBLUm93YS9jWlVEYwpBQk95SkJvQVZKSlM1ZE5SMG1LVFpIY2FDMDdFYlg1WHNuYUVxQ2k0WDJScmxDdjQvMVNLcUVuTWs2SHd0Z2tECitlajBZWWpEZldjWk5QMitQbEZBRS9Kd1VVcUcyNERIUG4vY0Vob3JmaUdPVmdpWWhxbFN5Z01DZ1lFQTBwN3YKajVmaFlhWWF3WG5LOW1nMGJ3eGFMbVdGYVg2WDFvTElBQW56TkEvT0x0UVVodXJ0OVRWUUZheFNVUEFGQUxGeQpPTEJtTlpRRmJTNjNSQkRDMzVOVXQ4SENBQWR5S01ROHIxVlZWZWhrekNMamZXb0lsYThmTWpvdjVaNWxXL3Y1ClgvZE9xQ1MyMmJ0ekpyQUFPT2tSdjNUcmI3eVVzWktYY3B2ZXZMTUNnWUVBdERxK1dITnlRY0xoNXUxK2VKSTQKbDQ3QWxKeXh1WU9wTEZ4dHdlaVk0eXFlUE1VUHVlNnkxdU1Qd1djUWdKL2RIaE90RmQwNHhabEJxbVZuUVJnQQpjUll3dmpZdkdqUlhzUFh3QU5UOEg1WW1hclBLbmM5ekhQaUxNaU5DUmNsMEF2QnJTclF4azJKeVh3MUliTGRRCjZBMTVsdFVkaVNISndYTERvNWJ4dFYwQ2dZQm5RSU13WWNTYm1sS0RockY1R3B5WjAvUmh5bU1jMUhLYk5vSFYKZ3dzMitvaVpiRjZqeFlmaUxjQ1UzMlY3U0M4cnA5SFcrS01pb080SUdGNi9mM2dKSXJEbFpKYzJiSEFLakNregp5eUdLZStMdU1DeFZ6eVZtTy9PUEsvZFBHZGVXd0hBQUc3enpzUXZ5c1hKQ0JRWVc0Q3RUTUg0NnlMZ2NWVURwCmJvQkRBUUtCZ1FEQlgrTnhWTURFMU5hWWRyUStZYm9ZREV0K0VoanVSbGczV1lXdkNDbk9hbktLV2cvMzVNY3MKNlQvc3Q2VVBKbDlSZmRwN2ZWbXQyek81QUEvUHB4Qi95K2ZIaTlQdTVJZFRRcWxaNFBMcDVFVzRwSksyZ0h3Rgo4ekllTU1WYXVpOXlzb09helpQditmMy9YVHM3MW0zSTBEY1ZveU1saEthYkw2R3RNRzBHbXc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo" \
&& yq w -i $SSV_DB/config.yaml MetricsAPIPort "15000"
No need to try to enter the command above, it is given for example only.

2.4. Start operator

Execute the command below:

docker run -d --restart unless-stopped --name=ssv_node -e \
CONFIG_PATH=./config.yaml -p 13001:13001 -p 12001:12001 -v \
$SSV_DB/config.yaml:/config.yaml -v $SSV_DB:/data -it \
'bloxstaking/ssv-node:latest' make BUILD_PATH=/go/bin/ssvnode start-node

Check the logs:

docker logs ssv_node --follow --tail=50

Should be like the following:
SSV-8

2.5 Register operator

You will need ETH coins in the Goerli test network to register operator, the faucet available here.
To sign up, go to the SSV application website, click Connect Wallet, then Join as operator:

SSV-9
SSV-10
Fill out the operator form, for this you will need the public key from 2.1:

SSV-11
SSV-12
Double-check the data and if everything is correct press Register Operator:

SSV-13

After that, your wallet window should appear asking you to confirm the transaction, confirm it. Click Manage Operator to view your operator information.

SSV-14

You are now an SSV Network operator!

3. ETH2 Validator

3.1. Register a validator

You must have 32+ ETH in the Goerli network to create a validator.
The faucet is available in discord, deposit-bot section

Create a validator via Ethereum Launchpad, follow the steps in the screenshots:

SSV-15

SSV-16

SSV-17

SSV-18
SSV-19

Now we need to generate keys and save them to your PC, use FTP utilities (WinSCP (Windows), Cyberduck (MacOS) or any others at your choice). Run the commands below to generate the keys and follow the screenshots:

cd $HOME
wget -O staking_deposit-cli-76ed782-linux-amd64.tar.gz https://github.com/ethereum/staking-deposit-cli/releases/download/v2.3.0/staking_deposit-cli-76ed782-linux-amd64.tar.gz
tar xvf staking_deposit-cli-76ed782-linux-amd64.tar.gz
mv ~/staking_deposit-cli-76ed782-linux-amd64/deposit /usr/local/bin/
deposit new-mnemonic --num_validators 1 --chain goerli

Select the language (or just press Enter if you want to keep English), enter the password, and repeat the password:

SSV-20

Save the mnemonics:

SSV-21

Enter the saved mnemonic:

SSV-22

Wait for the key to be generated, press any key to exit:

SSV-23

Remember the path to your keys folder, in our case it is /root/validator_keys.

Continue registration through Ethereum Launchpad, follow the screenshots:

SSV-24

Upload the file deposit-data-[timestamp].json (where [timestamp] is the time the file was created in timestamp format) here, it is located in the validator_keys folder that you saved above. After that, click Continue.

SSV-25

Select the metamask, you must have the Goerli test network active.

SSV-26

Right-click on Continue and select view code, change disabled to enabled as shown above.

SSV-27

Check all the boxes and click Continue.

SSV-28

Press Send Deposit, choose HEX in the metamask and copy the hex data, we need it to get ETH.
Go to the discord section deposit-bot and follow the bot instructions. After the bot completes transaction, simply close the metamask window and skip to step 4.

4. Start SSV validator

Go to SSV application, connect the wallet, click Run validator and follow the screenshots:

SSV-29

SSV-30

Upload keystore file from validator_keys folder:

SSV-31

Enter the password you set for the key:

SSV-32

Select four operators (one operator should be yours, our operator is NodesGuru):

SSV-33
SSV-34

Confirm that you are familiar with the slashing mechanism:

SSV-35

Double-check the data and click Run validator:

SSV-36

Confirm the transaction in your wallet and wait for confirmation:

SSV-37
SSV-38
SSV-39

The operators you select will then start working with your validator in the upcoming epochs.

Additional

Operator update:

export SSV_DB=$HOME/.ssv
docker rm -f ssv_node
docker pull bloxstaking/ssv-node:latest
docker run -d --restart unless-stopped --name=ssv_node -e \
CONFIG_PATH=./config.yaml -p 13001:13001 -p 12001:12001 -v \
$SSV_DB/config.yaml:/config.yaml -v $SSV_DB:/data -it \
'bloxstaking/ssv-node:latest' make BUILD_PATH=/go/bin/ssvnode start-node

Check the logs:

docker logs ssv_node --follow --tail=50
Stuck? Ask!

By continuing to use our website, you consent to our use of cookies in accordance with our cookie policy