August 25, 2022

SSV testnet 2 node guide

Минимальные требования к серверу:

1 CPU

2 GB RAM

5 GB storage

Я беру минимальный на хетцнере CPX11

Установка ноды:

Для начала на хетцнере отредактируйте firewall rules и добавьте такие порты:

sudo su
#переключаемся на режим супер пользователя, это позволяет дальнейшие команды запускать без sudo

wget https://raw.githubusercontent.com/bloxapp/ssv/main/install.sh
#выкачиваем скрипт установки, предложенный командой

chmod +x install.sh
#добавляем право на исполнение файлу

./install.sh
#запускаем исполняемый файл

Геренерируем ключи оператора(вставляем одной командой):

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
#В выводе команды будет два ключа - public и secret, сохраните их себе, учтите, что secret ключ не стоит нигде светить

Теперь нам необходимо создать две ethereum ноды, для этого воспользуемся сервисом Infura, вот краткое описание шагов, далее создание покажу в скринах(выполняем сначала для первой ноды, потом для второй):

  1. Проходим регистрацию
  2. Создаем два ключа - один в сети Ethereum, второй в сети ETH2
  3. Имена придумываем
  4. В первом необходимо выбрать сеть Gorli, во второй Prater
  5. В первой ноде копируем url для websocket, во второй для https
  6. Записываем два url

Процесс создания ключа(ноды):

Возвращаемся в терминал

Создаем директорию для базы данных:

mkdir /root/.ssvdb

Создаем конфигурационный файл(поменяйте значения и копируйте одной командой):

yq n db.Path "/root/.ssvdb" | tee config.yaml \
&& yq w -i config.yaml eth2.Network "prater" \
&& yq w -i config.yaml eth2.BeaconNodeAddr "<ETH 2.0 node>" \
&& yq w -i config.yaml eth1.ETH1Addr "<ETH1 node WebSocket address>" \
&& yq w -i config.yaml OperatorPrivateKey "<private key of the operator>" \
&& yq w -i config.yaml global.LogLevel "debug" \
&& yq w -i config.yaml MetricsAPIPort "15000"

#<ETH 2.0 node> - заменить на https url c ноды в сети ETH2
#<ETH1 node WebSocket address> - заменить на websocket url из первой ноды
#<private key of the operator> - заменить на приватный ключ из команды выше

Запускаем ноду в докер контейнере(копируем одной командой):

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

Если нужно обновить ноду:

Останавливаем докер контейнер:

docker container ls
#запоминаем айди контейнера

docker container stop <CONTAINER_ID>
#<CONTAINER_ID> - заменить

Обновляем:

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 $(pwd)/config.yaml:/config.yaml -v $(pwd):/data -it 'bloxstaking/ssv-node:latest' make BUILD_PATH=/go/bin/ssvnode start-node

Смотрим логи:

docker logs ssv_node --follow

Далее необходимо зарегистрироваться на этом сайте! Регистрируемся, как оператор