Установка ноды 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
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
sudo mkdir -p /secrets openssl rand -hex 32 | tr -d "\n" | sudo tee /secrets/jwtsecret sudo chmod 644 /secrets/jwtsecret
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
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
Генерация ключей 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 - канал, куда можно обратиться за помощью.