May 7

Установка ноды Puffer в сети Holesky

Быстрый гайд по установке ноды.

ЗЫ: Так же можете использовать для настройки валидаторов других проектов.

Суть одна и та же))

Потребуется минимум 3 eth в сети Holesky. Токены можно намайтить за пол часика тут: https://holesky-faucet.pk910.de

Требования по железу: 6-16-400

Требования по системе: Ubuntu 20 или Ubuntu 22.

Также нужен белый ipv4 адрес. (обычно в датацентрах VPS сервера арендуются уже с ним).

Аренда сервера:

1) Хостинг Hetzner - неплохой хостинг для аренды VPS по соотношению цена-качество, подойдет для большинства нод.

2) Альтернатива это Mevspace - можно оплатить криптой.

Подготовка сервера

Обновляем систему:

sudo apt-get update -y && sudo apt upgrade -y

Настраиваем время:

sudo apt -y install chrony
sudo systemctl restart chrony && sudo systemctl enable chrony
sudo timedatectl set-timezone Europe/Moscow

Ставим нужные пакеты:

sudo apt-get install git curl ccze jq build-essential unzip tar mc chrony htop ncdu nload screen libc6-dev libc6 libsnappy-dev pkg-config libssl-dev git-lfs -y

Rust:

curl https://sh.rustup.rs -sSf | sh -s -- -y
source "$HOME/.cargo/env" && \
echo -e "\n$(cargo --version).\n"

Откройте нужные нам порты в firewall:

sudo ufw allow 22/tcp comment 'Allow SSH port'
sudo ufw allow 30303 comment 'Allow execution client port'
sudo ufw allow 9000 comment 'Allow consensus client port'

Сначала установим клиенты Execution и Consensus и оставим их синхронизироваться.

Установка Execution Nethermind

Генерим JWTsecret

sudo mkdir -p /secrets
openssl rand -hex 32 | tr -d "\n" | sudo tee /secrets/jwtsecret
sudo chmod 644 /secrets/jwtsecret

Создадим каталог для DB:

sudo mkdir -p /var/lib/nethermind

Установим пакеты для работы Nethermind:

wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
sudo dpkg -i packages-microsoft-prod.deb

Непосредственно сами пакеты:

sudo apt-get update && \
sudo apt-get install dotnet-sdk-8.0 dotnet-runtime-8.0 -y

А теперь скачаем с гитхаба последнюю версию бинарника, чтобы не билдить самим:

Найдем последнюю версию:

RELEASE_URL="https://api.github.com/repos/NethermindEth/nethermind/releases/latest" && \
BINARIES_URL="$(curl -s $RELEASE_URL | jq -r ".assets[] | select(.name) | .browser_download_url" | grep linux-x64)" && \
echo Downloading URL: $BINARIES_URL

Скачаем и переместим:

cd $HOME && \
wget -O nethermind.zip $BINARIES_URL && \
unzip -o nethermind.zip -d $HOME/nethermind && \
rm nethermind.zip  && \
sudo mv $HOME/nethermind /usr/local/bin/nethermind

Создадим службу запуска:

sudo mcedit /etc/systemd/system/execution.service

[Unit]
Description=Nethermind Execution Layer Client service for Holesky
Wants=network-online.target
After=network-online.target
Documentation=https://www.coincashew.com

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
RestartSec=3
KillSignal=SIGINT
TimeoutStopSec=900
WorkingDirectory=/var/lib/nethermind
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind"
ExecStart=/usr/local/bin/nethermind/nethermind \
  --config holesky \
  --datadir="/var/lib/nethermind" \
  --Network.DiscoveryPort 30303 \
  --Network.P2PPort 30303 \
  --Network.MaxActivePeers 50 \
  --JsonRpc.Port 8545 \
  --JsonRpc.EnginePort 8551 \
  --Metrics.Enabled true \
  --Metrics.ExposePort 6060 \
  --JsonRpc.JwtSecretFile /secrets/jwtsecret
  
  [Install]
WantedBy=multi-user.target

Запускаем:

sudo systemctl daemon-reload
sudo systemctl enable execution
sudo systemctl restart execution

Смотрим логи на предмет ошибок:

sudo journalctl -fu execution

На этом с клиентом выполнения у нас все.

Установка Consensus Nimbus

Создадим каталог для DB:

sudo mkdir -p /var/lib/nimbus

Найдем последнюю версию:

RELEASE_URL="https://api.github.com/repos/status-im/nimbus-eth2/releases/latest" && \
BINARIES_URL="$(curl -s $RELEASE_URL | jq -r ".assets[] | select(.name) | .browser_download_url" | grep _Linux_amd64.*.tar.gz$)" && \
echo Downloading URL: $BINARIES_URL

Скачаем и переместим:

cd $HOME && \
wget -O nimbus.tar.gz $BINARIES_URL && \
tar -xzvf nimbus.tar.gz -C $HOME && \
mv nimbus-eth2_Linux_amd64_* nimbus && \
rm nimbus.tar.gz && \
sudo mv nimbus/build/nimbus_beacon_node /usr/local/bin && \
sudo mv nimbus/build/nimbus_validator_client /usr/local/bin && \
rm -r nimbus && \
nimbus_beacon_node --version

Засинкаемся:

sudo /usr/local/bin/nimbus_beacon_node trustedNodeSync --network=holesky --trusted-node-url=https://holesky-checkpoint-sync.stakely.io --data-dir=/var/lib/nimbus --backfill=false

# альтернативная траст нода https://holesky-checkpoint-sync.stakely.io

Создадим службу запуска для ноды:

sudo mcedit /etc/systemd/system/consensus.service

[Unit]
Description=Nimbus Consensus Layer Client service for Holesky
Wants=network-online.target
After=network-online.target
Documentation=https://www.coincashew.com

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
RestartSec=3
KillSignal=SIGINT
TimeoutStopSec=900
ExecStart=/usr/local/bin/nimbus_beacon_node \
  --network=holesky \
  --data-dir=/var/lib/nimbus \
  --tcp-port=9000 \
  --udp-port=9000 \
  --max-peers=100 \
  --rest-port=5052 \
  --rest-address=0.0.0.0 \
  --enr-auto-update=true \
  --web3-url=http://127.0.0.1:8551 \
  --rest \
  --metrics \
  --metrics-port=8008 \
  --jwt-secret="/secrets/jwtsecret"
  
[Install]
WantedBy=multi-user.target

Запускаем:

sudo systemctl daemon-reload
sudo systemctl enable consensus	
sudo systemctl restart consensus

Смотрим логи на предмет ошибок:

sudo journalctl -fu consensus

На этом все с нодой consensus

Генерация ключей Puffer

mkdir ~/puffer && \
cd ~/puffer && \
git clone https://github.com/PufferFinance/coral && \
cd coral && \
cargo build --release

Создадим пароль к кейстору: (напишите свой)

mcedit ~/puffer/password.txt

Авторизуемся на портале:

https://launchpad.puffer.fi/Setup

Копируем длинную команду с портала, в конце меняем значения на --password-file ~/puffer/password.txt --output-file ~/puffer/registration.json

cargo run --bin coral-cli validator keygen .......................................

Вывод консоли сохранить {}

Файл ~/puffer/registration.json сохранить так же на комп.

Теперь создадим каталог в удобном нам месте для ключа валидатора:

mkdir -p ~/puffer/validator_keys

Скопируем туда ключ пуфера в нужном нам формате:

cp -v ~/puffer/coral/etc/keys/bls_keys/* ~/puffer/validator_keys/keystore.json

Все, мы подготовились и можем запускать валидатора!

Создаем ключи валидатора Eth

Команда пуфера будет стейкать вам непосредственно на валидатора пуфера, ключи которого мы создали до этого.

Хотя в гайдах рассказывают, что нужно генерить этот ключ, но я предлагаю этот шаг просто скипнуть, тк смысла нет))

Оставил вам для примера.

Перейдите на портал:

https://holesky.launchpad.ethereum.org/en/

Подключить кошелек, нажимать далее, выбрать клиенты Nethermind и Nimbus

Указать количество валидаторов 1 и ваш EVM Withdrawal address.

Нажать на Linux и Download CLI app
Скачать на сервер последний релиз:

cd ~/puffer && wget https://github.com/ethereum/staking-deposit-cli/releases/download/v2.7.0/staking_deposit-cli-fdab65d-linux-amd64.tar.gz && \
tar xvfz staking_deposit-cli* && rm staking_deposit-cli*.tar.gz && \
cd staking_deposit-cli*

Создать ключи командой:

./deposit new-mnemonic --num_validators 1 --chain holesky --eth1_withdrawal_address 0x04489D1_ВАШ_EVM_АДРЕС

Во время создания ключей, кроме выбора языка, потребуется подтвердить свой адрес кошелька, указать пароль к кейстору и сохранить / подтвердить новую seed фразу.

По результату вам напишут: Your keys can be found at: /root/puffer/staking_deposit-cli-fdab65d-linux-amd64/validator_keys

Сохраните ключи из этой папки к себе на комп.

Вернитесь к порталу Holesky, нажмите далее и загрузите сохраненный файл deposit_data-[timestamp].json

Перейдите далее до момента внесения 32 эфиров вашему валидатору.

Скип шага с созданием ключа валидатора ETH заканчивается тут.

Установка клиента валидатора и добавление ключей.

Пока основная нода не будет синхронизирована, в логах будут соответствующие ошибки.

Создадим рабочий каталог и назначим права:

sudo mkdir -p /var/lib/nimbus_validator
sudo chmod -R 700 /var/lib/nimbus_validator

Загрузите ключи ноде валидатора:

sudo /usr/local/bin/nimbus_beacon_node deposits import \
  --data-dir=/var/lib/nimbus_validator /root/puffer/validator_keys

Создадим службу для запуска валидатора:

sudo mcedit /etc/systemd/system/validator.service

[Unit]
Description=Nimbus Validator Client service for Holeksy
Wants=network-online.target
After=network-online.target
Documentation=https://www.coincashew.com

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
RestartSec=3
KillSignal=SIGINT
TimeoutStopSec=900
ExecStart=/usr/local/bin/nimbus_validator_client \
  --data-dir=/var/lib/nimbus_validator \
  --metrics \
  --metrics-port=8009 \
  --beacon-node=http://127.0.0.1:5052 \
  --graffiti="VALIDATOR" \
  --suggested-fee-recipient=0xb5cce_EVM_ADDRESS_FOR_REWARDS
  
[Install]
WantedBy=multi-user.target

Запускаем:

sudo systemctl daemon-reload
sudo systemctl enable validator
sudo systemctl restart validator

Смотрим логи на предмет ошибок:

sudo journalctl -fu validator

Теперь нужно завершить регистрацию на портале puffer

Не нужно ждать пока нода синхронизируестся, она успеет это сделать пока вы стоите в очереди на валидирование. Синхронизация занимает 2-5 часов на нормальном VPS сервере.

Вернемся к нашей странице:

https://launchpad.puffer.fi/Setup

Жмем далее и покупаем сначала ~2,2 эфира пуфера, а потом 60 тикетов.
Жмем далее и загружаем файл registration.json который мы сохраняли на ПК, выбираем 60 дней и тыкаем финиш.

Все готово!

Статус валидатора можно посмотреть в дашборде:

https://launchpad.puffer.fi/Dashboard

А так же на портале валидаторов (надо нажать на 3 точки справа от статуса и нажать посмотреть статус валидатора).

Попадете на похожую страницу:

https://holesky.beaconcha.in/validator/0x830dcb2c977c32..................................
Статус начнет отображаться через несколько часов, а может быть и дней после создания. Так происходит потому что вашему валидатору еще не внесли депозит в 32 эфира. Просто ждите!

Так же на странице статуса валидатора можно посмотреть сколько примерно вам ждать очередь на становление валидатором.

Если все прошло хорошо и ноды установлены правильно, ключ пуфера импортирован, то через несколько суток увидите статус Active!

@starnodesxyz - наш канал в Telegram с новостями и гайдами по тестнетам.
@starnodes_chat - канал, куда можно обратиться за помощью.