Rent server onSponsored
1. Установка зависимостей
Необходимо установить зависимости для установки оператора, для этого выполните следующие команды:
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. Установка оператора
2.1. Генерация ключей
Для оператора необходимо сгенерировать ключи, для этого выполните команду (скопируйте нижний блок целиком и вставьте в консоль):
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
Вы должны увидеть примерно такой вывод:
Верхний ключ – публичный, нижний – приватный. Сохраните эти ключи.
2.2. Получение эндпоинтов
Для оператора мы будем использовать ноду, которую предоставляет сервис Infura, для этого зарегистрируйтесь на сайте infura.io и найдите эндпоинты в своем личном кабинете. Создаём Goerli ETH:
Скопируйте нижнее значение (wss):
Так же нам понадобиться Beacon prater нода, в связи с отключение этого эндпоинта инфурой, нам придётся запустить её на собственном сервере, рекомендуется устанавливать на сервер с диском размером не менее 1TB.
Воспользуйтесь нашим скриптом для быстрой установки:
wget -q -O beacon-prater.sh https://api.nodes.guru/beacon-prater.sh && chmod +x beacon-prater.sh && sudo /bin/bash beacon-prater.sh
Сохраните адреса этих эндпоинтов.
2.3. Создание конфигурационного файла
Для создания конфигурационного файла выполните команды ниже, предварительно заменив <YOUR_HTTPS_BEACON_ETH2_ENDPOIN>, <YOUR_WSS_GOERLI_ETH_ENDPOINT> и <YOUR_PRIVATE_KEY_FROM_2.1> на ваши значения:
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"
Пример полной команды:
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"
2.4. Запуск оператора
Выполните команду ниже:
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
Проверьте логи:
docker logs ssv_node --follow --tail=50
Должно быть примерно так:
2.5 Регистрация оператора
Для регистрации оператора вам понадобятся монеты ETH в тестовой сети Goerli, кран доступен здесь.
Перейдите на сайт приложения SSV, нажмите Connect Wallet, затем Join as operator:
Заполните форму оператора, для этого вам потребуется публичный ключ из пункта 2.1:
Перепроверьте данные и если все верно нажмите Register Operator:
После этого должно появиться окно вашего кошелька с просьбой подтвердить транзакцию, подтвердите.
Теперь вы оператор SSV Network! Нажмите Manage Operator для просмотра информации о своём операторе.
3. Валидатор ETH2
3.1. Регистрация валидатора
Кран доступен в дискорде, раздел deposit-bot
Создайте валидатора через Ethereum Launchpad, для этого следуйте действиям на скриншотах:
Теперь нам нужно сгенерировать ключи и сохранить их к себе на ПК, для этого воспользуйтесь FTP утилитами (WinSCP (Windows), Cyberduck (MacOS) или любыми другими на ваше усмотрение). Выполните команды ниже для генерации ключей и следуйте скриншотам:
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
Выберите язык (или просто нажмите Enter если хотите оставить английский), введите желаемый пароль, повторите пароль:
Введите сохраненную мнемонику:
Дождитесь генерации ключа, нажмите любую клавишу для выхода:
Запомните путь к папке с вашими ключами, в нашем случае это /root/validator_keys.
Продолжите регистрацию через Ethereum Launchpad, следуйте скриншотам:
Загрузите сюда файл deposit-data-[timestamp].json (где [timestamp] – время создания файла в формате timestamp), он расположен в папке validator_keys, которую вы сохраняли выше. После этого нажмите Continue.
Выберите метамаск, у вас должна быть активна тестовая сеть Goerli.
Нажмите правой кнопкой мышки на Continue и выберите просмотреть код, измените disabled на enabled как показано выше.
Поставьте везде галочки и нажмите Continue.
Нажмите Send Deposit, в метамаске выберите HEX и скопируйте шестнадцатеричные данные, они нам понадобятся для получения ETH.
Перейдите в дискорд раздел deposit-bot и следуйте инструкции бота. После того как бот выполнит транзакцию, просто закройте окно метамаска и перейдите к П.4.
4. Запуск SSV валидатора
Перейдите в приложение SSV, подключите кошелек, нажмите Run validator и следуйте скриншотам:
Загрузите keystore файл из папки validator_keys, которую сохраняли ранее:
Введите пароль, который устанавливали для ключа:
Выберите четырех операторов (не забудьте выбрать своего оператора, наш оператор – NodesGuru):
Подтвердите, что ознакомлены с механизмом слешинга:
Перепроверьте данные и нажмите Run validator:
Подтвердите транзакцию в вашем кошельке и ожидайте подтверждения:
После этого выбранные вами операторы начнут работать с вашим валидатором в следующих эпохах.
Дополнительно
Обновление оператора:
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
Посмотреть логи:
docker logs ssv_node --follow --tail=50