May 2

Puffer TESTNET. Ставим Operator Node

❗️У нас нет приваток, платных статей, рекламы или иных навязчивых способов заработка на аудитории. Поэтому рассчитываю на Вашу поддержку путем подписки на наш ТГ канал Bit.Future и Youtube 👍

Полезные ссылки:

Этот гайд написан на базе гайда от Steven Bravo, но с моим авторским переводом, корректировками и личными наработками. При необходимости, можете сверяться с оригиналом.

В гайде я опишу полный процесс установки Puffer Finance Node в сети Holesky Testnet Network в формате БЕЗ Secure Signing.
Принципиальная разница в том, что с Secure Signing требуется 1 ЕТН в обеспечении, а без Secure Signing - 2 ЕТН + более подробная техническая разница в документации.
Т.к. мы работаем в тестовой сети Holesky Testnet, то для нас разницы нет. С точки зрения потенциального вознаграждения за ноду - деталей нет, но думаю разницы также не будет или она будет не существенна.

Требования к VDS

Официальные требования приведены в офф. документации. Отталкиваемся от них и будем руководствоваться следующими:

  • OS: Linux 64-bit (ставим Ubunty 22.04)
  • Processor: min 4 ядерный
  • Memory: min 16 Gb
  • Storage: 2 TB SSD (NVMe SSD рекомендуется)

По совету коллег, я взял на MevSpace (рефки нет) AMD Ryzen 7 3700X за 65 евро и в процессе заказал добавил +1 TB SSD. Итого вышло 73 евро в мес. При желании можно поискать более дешевые аналоги.

Создаем нодерский кошелек

Нам потребуется отдельный Метамаск кошелек, с которого будем ставить ноду. Советую завести новый, пустой, но в целом не принципиально.

Для данного гайда, мой кошелек (Wallet address): 0xB0551d678a6746F2Cf300CF698d314EA1e74e3c7

Private Key:
9825b255c5a7bf027237140ebb86e11970027467d08f6a2ad84f02b6665b1f30

Покупаем и устанавливаем VDS сервер

Регистрируемся и покупаем VDS сервер на MevSpace или любом ином сервисе. В процессе регистрации потребуется заполнить свои данные, почту и телефон. Я указал свои, но в теории можно указать любые (кроме почты, т.к. она потребуется). Верификации никакой не было.

Оплатить VDS сервер можно с помощью крипты.

После регистрации и оплаты VDS сервера, ваш Кабинет будет выглядеть примерно следующим образом:

Установка и настройка требует некоторого времени. Все стадии настройки для вас VDS будут отражаться в разделе Queued tasks.
После установки, нажмите на Start для запуска сервера.

Когда сервер будет готов, вам на почту придет письмо с вашим IP адресом, логином и паролем:

Коннектимся на VDS сервер

Гайд построен на запуске с ПК с Windows. Если у вас MacOS, то дополнительно воспользуйтесь оригинальным гайдом.

Нам потребуется клиент для работы с VDS:

Putty: https://www.putty.org/ или

Solar Putty: https://www.solarwinds.com/es/free-tools/solar-putty или можно любой иной

Мне привычнее классический Putty, поэтому переходим на сайт, жмем Download Putty, далее выбираем скачиваем подходящую версию. На скрине ниже, галочками указал свою и которая соответствует большинству современных ПК (еще можно через Microsoft Store скачать)

После установки Putty, заходим в него, вставляем выданный IP адрес VDS сервера и нажимаем Open. (Порт и другие параметры оставляем по умолчанию).

В появившейся консоли вводим login (как правило это root) и нажимаем Enter

На следующем шаге аналогично вводим Password и жмем Enter.

При первом запуске, вас также попросит создать новый пароль. Можно использовать простой, т.к. входить потребуется часто, а реального бабла мы держать все равно там не будет.

При работе в Терминале (в Windows) есть свои особенности:
- Внимательно смотрите за каждым символом. Не должно быть ничего на Кирилице, в т.ч. в пути к используемым файлам/папкам.
- Классические сочетания клавиш, типа CTRL+C (V) тут не работают. Чтобы что-то вставить, нужно сначала скопировать текст в буфер обмена, а на консоли просто нажать ПКМ (Правую кнопку мыши) для вставки.
- Когда на консоли вас просят ввести пароль, то печатаемые (вставляемые) символы не отображаются. Поэтому используйте более-менее простые пароли, чтобы точно не ошибиться.
- Сочетание CTRL+C в консоли - позволяет скопировать выделенный фрагмент в буфер обмена, но в тоже время останавливает активный исполняемый процесс в консоли (если что-то запущено). Будьте осторожны с этим сочетанием.
- Советую завести блокнот (например Notepad++) и все команды предварительно вставлять в него, корректировать и после этого копировать в консоль.
- При любой ошибке или существенном отклонении в вашей консоли от того, что видите в данном гайде - пишите запрос в ChatGPT. 99% ошибок можно решить в ChatGPT

После входа, консоль будет выглядеть примерно следующим образом:

Installing Dependencies for Puffer Coral-Cli

Далее каждый раздел будет называться как в оригинальном гайде, чтобы в случае возникновения ошибок, вы могли свериться с оригиналом.

Копируем и вставляем в консоль следующий код (каждую строку поочередно)

sudo apt update
sudo apt install build-essential curl

Появится следующее окно:

Нажимаем Y и Enter
Произойдет установка пакетов и отобразится следующее окно:

Далее пишем в терминал следующие команды (мое дополнение избегания ошибок установки на следующих шагах):

sudo apt update
sudo apt install git
sudo apt install nano


Продолжаем и пишем в терминал следующую команду

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

На экране отобразится следующее:

Появляется сообщение, что для завершения установки требуется нажать Enter - так и делаем. Произойдет быстрое завершение установки пакетов.

Продолжаем писать в терминале:

source $HOME/.cargo/env

После этой команды в терминале ничего не изменится. Все нормально, так и должно быть, продолжаем писать следующие команды:

echo "export PATH=\"$HOME/.cargo/bin:$PATH\"" >> ~/.bashrc
source ~/.bashrc

Если после этого терминал показывает строку "source ~/.bashrc" - все хорошо.
Если появляется ошибка по типу "bash: #x27;\342\200\234export': command not found" - значит были неверно прописаны предыдущие команды (в частности эта ошибка обозначает ошибку в написании ковычек).

Продолжаем писать в терминале:

rustc --version

Терминал покажет вашу текущую версию rustc, примерно так:

У вас может быть другая версия rustc, но это не критично.

Далее устанавливаем зависимости (dependencies) для puffer coral-cli. Пишем в терминал:

sudo apt update
sudo apt install libssl-dev pkg-config

Далее пройдет процесс установки, в ходе которого, возможно, потребуется подтвердить выполнение клавишей Enter. В некоторых случаях, может появиться такое окно для подтверждения:

А затем:

Если такие розовые окна появятся, то с помощью Tab прокликиваем и нажимаем на Ok и завершаем установку. У меня розовых окон не было, все завершилось в терминале.

Далее пишем в терминал следующий код. На него не будет никаких видимых действий (реакции) в терминале - это нормально:

export OPENSSL_DIR=/usr/include/openssl

Продолжаем. Также не будет никаких видимых действий (реакции) в терминале - это нормально:

echo 'export OPENSSL_DIR=/usr/include/openssl' >> ~/.bashrc
source ~/.bashrc

Продолжаем:

export OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu
export OPENSSL_INCLUDE_DIR=/usr/include/openssl

И еще раз продолжаем:

echo 'export OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu' >> ~/.bashrc
echo 'export OPENSSL_INCLUDE_DIR=/usr/include/openssl' >> ~/.bashrc
source ~/.bashrc


Теперь проверим версию установленного pkg-config и библиотек. Пишем в терминале:

pkg-config --version
pkg-config --libs openssl

Появится следующая информация в терминале:

Если у вас также - все хорошо. Цифры в номере версии pkg-config могут отличаться, но это не критично

Setting up Puffer Coral-Cli

Создаем папку с названием "puffer" с помощью следующей команды:

mkdir puffer

Команда mkdir означает "Make directory" и позволяет создать новую директорию. Теперь же надо перейти в данную созданную папку, с помощью команды:

cd puffer

Команда cd означает "Change directory" и позволяется сменить директорию на ту, которая указана после cd. Если же в терминале просто написать "cd", то мы вернемся в корневую папку (директорию). Поэтому всегда внимательно следите за тем, в какой директории вы работаете.

После этого в терминале отразится следующая информация в командной строке, подтверждающая что мы находимся в директории "puffer"

Находясь здесь, копируем и вставляем в терминал следующий код:

git clone https://github.com/PufferFinance/coral

Терминал начнет клонирование coral-cli файлов с Github в нашу папку

Теперь пишем следующую команду:

ls

Данная команда позволяет показать все папки и файлы в текущей директории. В частности мы видим, что у нас появилась новая папка "coral".
Перейдем в нее, с помощью команды:

cd coral

Находясь здесь, пишем следующую команду:

cargo build --release

Запустится процесс создания Puffer Coral-Cli из скаченных файлов. Процесс займет какое-то время, поэтому ничего не нажимаем и дожидаемся завершения установки:

Когда процесс завершится, терминал будет выглядеть следующим образом:

Завершение установки также символизирует последнее зеленое слово "Finished".

Теперь еще раз напишем в терминале:

ls

и увидим нашу puffer/coral/ директорию:

Если у вас также - значит все хорошо, и можно переходить к следующим этапам.

Если же у вас возникли ошибки, то можно удалить текущую версию Puffer Coral-Cli с помощью команды:

cargo clean

Далее еще раз внимательно повторить предыдущие шаги.

Creating our validator keys

Пока мы находимся в /puffer/coral/ директории, пишем следующую команду:

nano

У нас откроется текстовый редактор Nano, который будет выглядеть следующим образом:

Находясь здесь, нужно придумать и ввести пароль. Например так:

Когда придумали и записали пароль нажимаем CTRL+O и в нижней части появится такое уведомление:

Требуется придумать название файла, поэтому пишем "password.txt" (без кавычек) и нажимаем Enter. Появится уведомление:

Теперь когда мы создали файл и паролем в директории puffer/coral/ мы можем нажать CTRL + X и вернуться в терминал.

Вводим:

ls

Мы должны увидеть, что в папке добавился файл password.txt:

Создание registration.json file

Терминал не закрываем, и параллельно переходим на https://launchpad.puffer.fi/Setup чтобы создать validator key

Нас попросит присоединить кошелек (можно использовать Metamask или Rabby). В процессе создания кошелек переключится на Holesky Testnet и возможно попросит добавить данную тестовую сеть. Жмем "Add Network" в случае возникновения соответствующего запроса.

После коннекта кошелька, страница будет выглядеть следующим образом:

В рамках данного гайда, опция Enclave должна быть выключена

Далее нам нужно скопировать указанную в окошке команду в любой текстовый редактор. Нам нужно будет внести некоторые изменения в данную команду.

В тексте команды, у нас есть 2 фразы:

<PATH_TO_A_KEYSTORE_PASSWORD_FILE>
<PATH_TO_REGISTRATION_JSON>

Нужно заменить их на следующее (заменяем целиком, включая <> ковычки):

<PATH_TO_A_KEYSTORE_PASSWORD_FILE> → password.txt
<PATH_TO_REGISTRATION_JSON> → registration.json

Как только мы сделали указанные изменения в команде, копируем ее и вставляем в терминал, находясь в папке puffer/coral/ и нажимаем Enter

Запустится установка:

Когда установка завершится, терминал покажет следующее:

Если у вас также - все хорошо. Теперь, когда мы подготовили наши validator keys при помощи puffer coral-cli, нам нужно создать Consensus client и Execution client.

Setting up our Consensus Client

Мы будем использовать Nimbus в качестве Consensus client, поэтому давайте в терминале вернемся в главную корневую папку. Пишем команду:

cd

Для запуска Nimbus нам потребуется установить новые библиотеки и зависимости, поэтому в терминале пишем:

sudo apt-get install build-essential git-lfs cmake

Покажет следующее окно:

Нажимаем Y и нажимаем Enter. Если появляются розовые окна, то также прожимаем в них OK

Далее, также находясь в основной корневой директории, пишем команду:

openssl rand -hex 32 | tr -d "\n" > "/tmp/jwtsecret"

В терминале ничего не появится, но данная команда создала для нас файл "jwtsecret" в директории /tmp/ , в которую мы сейчас перейдем. Пишем:

cd /tmp/

Мы переместимся в папку /tmp/, находясь в которой пишем:

nano jwtsecret

Откроется наш файл jwtsecret во встроенном редакторе nano, и представление будет выглядеть примерно так:

Указанные цифры-буквы - приватный ключ. Но нам нужно использовать наш приватный ключ, поэтому удаляем все что тут написано и вставляем Приватный ключ от нашего Метамаск кошелька для данной ноды.
Чтобы осуществить копирование, скопируйте свой приватный ключ в буфер обмена, а в данный редактор в терминале вставьте путем нажатия ПКМ (прав кнопка мыши).

В данном гайде, Private key у нас следующий:
9825b255c5a7bf027237140ebb86e11970027467d08f6a2ad84f02b6665b1f30

После того, как мы записали в файл наш приватный ключ, нажимаем CTRL+O, Enter, CTRL+X. Это позволит нам сохранить все изменения и вернуться обратно в терминал.

Возвращаемся обратно в корневую директорию, пишем:

cd

Находясь в корневой директории, пишем следующую команду:

git clone https://github.com/status-im/nimbus-eth2

Произойдет клонирование nimbus репозитория, после чего перейдем в соответствующую папку:

cd nimbus-eth2

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

Теперь нужно ввести команду, но предварительно заменить параметр "Х" на число, соответствующее количеству RAM, выделяемой на данную задачу. Например:

  • Если у вас <= 4gb RAM -> просто удаляем параметр "jX"
  • Если у вас = 16gb RAM -> пишем 8
  • Если у вас > 16gb RAM -> пишем 12
  • Рекомендуется выделять 12

Если вы полностью следуете гайду и выбрали указанный VDS сервер, то можно смело заменять "Х" на 12

make -jX nimbus_beacon_node

После замены, у меня команда будет выглядить так

make -j12 nimbus_beacon_node

После запуска команды, в терминале увидим следующее:

Процесс установки занимает некоторое время, а после его завершения терминал будет выглядеть так:

Иногда, на данном шаге, у меня зависал PuTTy терминал. При попытке изменить границы окна PuTTy он выдавал сообщение что соединение разорвано. Тогда можно:
- попробовать установить заново. Предварительно нужно удалить зависшую на установке версию через команду

 make clean

- запустить установку, подождать минут 10-15, понять что PuTTY завис и просто переходить к следующим шагам. Несмотря на то, что PuTTY завис, установка на сервере завершится.

Теперь нам нужно синхронизировать наш consensus client, для этого мы установим коннект с доверенной Holesky Testnet нодой - Stakely. Пишем команды и в конце жмем Enter:

build/nimbus_beacon_node trustedNodeSync \
--network:holesky \
--data-dir=build/data/shared_holesky_0 \
--trusted-node-url=https://holesky-checkpoint-sync.stakely.io/

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

А когда установка закончится, будет следующее:

Теперь нужно выполнить следующую команду, но предварительно заменить "WALLET_ADDRESS" в команде, на адрес вашего метамаск-кошелька

./run-holesky-beacon-node.sh --web3-url=http://127.0.0.1:8551 --suggested-fee-recipient=WALLET_ADDRESS --jwt-secret=/tmp/jwtsecret

В нашем гайде я использую кошелек 0xB0551d678a6746F2Cf300CF698d314EA1e74e3c7, поэтому для меня команды будет выглядеть так:

./run-holesky-beacon-node.sh --web3-url=http://127.0.0.1:8551 --suggested-fee-recipient=0xB0551d678a6746F2Cf300CF698d314EA1e74e3c7 --jwt-secret=/tmp/jwtsecret

После того, как вы вставите скорректированную команду в терминал и запустите, терминал будет выглядеть следующим образом:

Ждем пока не увидим следующее или просто ждем 3-5 мин:

Нажимаем CLRT+C для того, чтобы остановить синхронизацию ноды. Мы к ней вернемся позже.Enter

Теперь нам нужно перейти в папку с puffer validator keys, для этого набираем команду:

cd ~/puffer/coral/etc/keys/bls_keys

теперь пишем знакомую команду:

ls

Мы увидим один файл с длинным названием из цифр и букв. Нам нужно его скопировать. Выделяем его мышкой и жмем CTRL+C (копируем в буфер обмена) и вставляем в любой текстовый редактор.
В это время на Терминале может появиться “^C” - это нормально и ни на что не повлияет.

Далее нам нужно запустить следующую команду, но предварительно заменить REPLACE на имя ранее скопированного файла

cp -v ~/puffer/coral/etc/keys/bls_keys/REPLACE ~/nimbus-eth2/build/data/shared_holesky_0/validators/

Например, наш файл имел имя 7742nh471h20471h2409127943h021947h012947h0129834b8213g0d2jds0921dhn721908ed721dd021987h21dhd0

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

cp -v ~/puffer/coral/etc/keys/bls_keys/7742nh471h20471h2409127943h021947h012947h0129834b8213g0d2jds0921dhn721908ed721dd021987h21dhd0 ~/nimbus-eth2/build/data/shared_holesky_0/validators/

Вставляем скорректированную команду в терминал и запускаем.

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

mkdir ~/nimbus-eth2/validator_keys/ && cp -v ~/puffer/coral/etc/keys/bls_keys/7742nh471h20471h2409127943h021947h012947h0129834b8213g0d2jds0921dhn721908ed721dd021987h21dhd0 ~/nimbus-eth2/validator_keys/keystore.json

Теперь наш consensus client готов к запуску, с использованием ранее сгенерированных нами ключей через puffer coral-cli. Но сначала нам потребуется установить и настроить execution client, поэтому пишем:

cd

и возвращаемся в корневую директорию

Setting up our Execution Client

Для этого гайда будем использовать 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

Будет выглядеть примерно следующим образом:

Могут возникнуть (а могут и нет), такие окна, которые также подтверждаем через ОК:

Чтобы проверить, что dotnet установился корректно, пишем следующую команду:

dotnet --list-sdks
dotnet --list-runtimes

В терминале должно появиться следующее:

Если у вас также - все хорошо. Теперь нужно скопировать execution client на наш VDS, для этого пишем следующую команду:

git clone https://github.com/NethermindEth/nethermind.git

Ждем завершения копирования и переходим в скаченную папку Nethermind с помощью команды:

cd nethermind/src/Nethermind/

Находясь здесь вводим:

dotnet build Nethermind.sln -c Release

Запустится процесс установки:

Когда установка завершится, увидим примерно следующее:

Теперь наш execution client готов к запуску, но прежде надо сделать еще несколько шагов:

Getting Holesky testnet ETH from a faucet

Для запуска ноды валидатора в общей сложности нам потребуется 36-40 ЕТН на нашем Метамаск кошельке в тестовой сети Holesky testnet.

Тестовые ЕТН можно получить через краны, например этот https://holesky-faucet.pk910.de/ Это будет бесплатно, но достаточно долго. Вообще кранов на Holesky несколько, можете погуглить и выбрать любой.

Но самое простое и быстрое - купить на любой ОТС площадке (поиск по слову Holesky или testnet)

Я беру на ОТС ICOBOG

Брал у этого продавца @efiop

Средняя цена - $0,25 за 1 ЕТН, т.е. 40 ЕТН нам обойдутся в $10

Holesky Launchpad Registration

Как только у нас есть 36-40 ЕТН, надо нужно перейти на и зарегистрироваться в качестве Валидатора. Переходим на сайт:
https://holesky.launchpad.ethereum.org/en/

Протыкиваем Continue чтобы отметить все пункты галочками:

Выбираем Executin client - Nethermind:

Выбираем Consensus client - Nimbus:

В поле Validator выбираем 1, а в поле с адресом вставляем адрес вашего Метамаск кошелька:

Не закрываем страницу, а переходим в наш Терминал.

Нам нужно установить staking deposit cli для создания deposit data файла. Возвращаемся в корневую директорию, для этого пишем команду:

cd

Создадим новую папку и сразу перейдем в нее, для этого пишем команды:

mkdir stakingdepositcli
cd stakingdepositcli

Теперь пишем:

wget -O sdc.tar.gz https://github.com/ethereum/staking-deposit-cli/releases/download/v2.7.0/staking_deposit-cli-fdab65d-linux-amd64.tar.gz
Эта сборка работает только с Linux c AMD x64 процессорами. Если у Вас другой тип процессора, то нужно пройти на https://github.com/ethereum/staking-deposit-cli/releases/ и там выбрать подходящую вам сборку

После запуска увидим следующее (в последней строке д.б. написано "saved"):

Чтобы распаковать только что скопированный файлы, пишем следующую команду:

tar -xzvf sdc.tar.gz

На консоли будет следующее:

Переходим в только что распакованную директорию:

cd staking_deposit-cli-fdab65d-linux-amd64
Если используете другую сборку, то название директории также может отличаться. Можете проверить все файлы и папки с помощью команды "ls"

Допишем еще небольшие вспомогательные команды:

export LC_ALL=C.UTF-8
export LANG=C.UTF-8

Возвращаемся в браузер на Holesky Launchpad

На странице выбираем Linux клиент и путь генерации ключей через CLI

Тамже ниже появится раздел с необходимой для использования в терминале командой

Копируем эту команду и вставляем в терминал. Далее внимательно читаем что пишет терминал.

На этом шаге пишем "3. English" (без кавычек) и жмем Enter

На этом шаге вводим адрес своего Метамаск кошелька. Консоль чувствительна к регистру (в адресе некоторые символы м.б. заглавные), поэтому скопируется адрес напрямую из Кошелька и вставьте сюда. (возможно потребуется ввести несколько раз)

На этом шаге пишем "4. English" (без кавычек) и жмем Enter

На этом шаге придумываем и вводим пароль (потребуется ввести 2 раза)

На этом шаге вам покажут Seed фразу. Скопируйте ее себе на компьютер.

На этом шаге вам нужно написать вашу Seed фразу полностью, каждое слово через пробел.

Если все сделано корректно, то в конце увидите такую картинку:

Теперь переходим в папку с Validators keys, пишем команду:

cd validator_keys

Находясь здесь, посмотрим какие файлы есть в папке, для этого пишем:

ls

Увидим примерно следующее:

Теперь нам нужно перенести deposit data file с VDS сервера на наш основной ПК, где у нас открыт Holesky Launchpad. Для этого потребуется специфические команды.

Для начала выделите и скопируйте названия файлов в блокнот или любой текстовый редактор.

Теперь на ПК открываем командную строку, на Windows с помощью:

  • Жмем Windows Key+R
  • Пишем cmd и жмем Enter. Откроется windows-терминал.

Нужно выполнить следующую команду:

scp username@remote_host:~/stakingdepositcli/staking_deposit-cli-fdab65d-linux-amd64/validator_keys/deposit_data-1713341827.json C:\Users\PC\Desktop
В данной команде предварительно замените:
"username" - на имя вашего VDS сервера, для меня это "root"
"remote_host" - на IP вашего VDS сервера, для меня это "178.209.178.150"
"C:\Users\PC\Desktop" - конечный путь до папки на ПК, куда сохранить файлы

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

 scp [email protected]:~/stakingdepositcli/staking_deposit-cli-fdab65d-linux-amd64/validator_keys/deposit_data-1713341827.json C:\Users\PC\Desktop

Вставляем полученную команду в windows-терминал. При первом запуске появится следующее уведомление:

пишем "yes" (без кавычек) и жмем Enter

Далее нас попросят ввести Пароль от VDS сервера. Вводим, жмем Enter и файлы скопируются в указанную на ПК папку

Теперь аналогичным образом нам нужно скопировать файл registration.json из puffer coral cli директории.

Пишем аналогичную команду в windows-терминале:

scp username@remote_host:~/puffer/coral/registration.json C:\Users\PC\Desktop
В данной команде также предварительно замените:
"username" - на имя вашего VDS сервера, для меня это "root"
"remote_host" - на IP вашего VDS сервера, для меня это "178.209.178.150"
"C:\Users\PC\Desktop" - конечный путь до папки на ПК, куда сохранить файлы

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

scp [email protected]:~/puffer/coral/registration.json C:\Users\PC\Desktop

Теперь у нас на компе скачены Deposit Data и Registration.json файлы и мы можем возвращаться на Holesky Launchpad для завершения регистрации:Enter

Сюда перетаскиваем только что скаченный файл Deposit Data

После вставки увидим следующее и жмем continue:

На следующем шаге убедитесь, что подключен нужный наш Метамаск кошелек. Произойдет проверка баланса ЕТН для запуска ноды, после чего также жмем continue:

На следующих шагах протыкиваем все галочки:

Далее жмем Send Deposit

Потребуется подписать транзакцию в Метамаск

Когда увидим статус “Transaction succesful” нажмите “Beaconcha.in”

Вы перейдете на block explorer, где можно будет наблюдать статус вашего депозита и процесса активации. Сохраните эту страницу.
Сначала страница будет пустой, через несколько часов появится мигающий статус Deposited и еще через 16-24 часа статус Deposited подтвердится.

После этого около 6 дн будет висеть статус Pending, а ваша нода ждать активации. После активации ноды, в конечном счете вы увидите следующий статус:

Возвращаемся на страницу Holesky Launchpad жмем continue и видим страницу об успешной регистрации ноды

Нам осталось запустить синхронизацию Consensus и Execution client, для этого в терминале пишем

cd

Running our Consensus and Execution Client

Нам потребуется установить Screen в нашем терминале, это позволит оставлять Consensus и Execution Client запущенными, даже после закрытия терминала

Пишем следующие команды:

sudo apt update
sudo apt install screen

Для проверки, что все установилось, пишем:

screen --version

Должны увидеть следующее:

Начнется синхронизацияСоздаем screen для нашего Consensus Client, для этого пишем:

screen -S consensus

У вас появится следующая строка в терминале:

Может показаться, что терминал пустой и ничего не происходит, но по факту мы сделали сессию “consensus”, где наш consensus client будет работать, даже когда наш Terminal будет закрыт.

Running the consensus client

Переходим в наш consensus client папку, для этого пишем команду:

cd ~/nimbus-eth2

Теперь пишем следующую команду:

./run-holesky-beacon-node.sh --web3-url=http://127.0.0.1:8551 --suggested-fee-recipient=WALLET --jwt-secret=/tmp/jwtsecret
В команде предварительно замените "WALLET" на адрес своего Метамаск кошелька

Например, моя команда будет выглядеть следующим образом:

./run-holesky-beacon-node.sh --web3-url=http://127.0.0.1:8551 --suggested-fee-recipient=0xB0551d678a6746F2Cf300CF698d314EA1e74e3c7 --jwt-secret=/tmp/jwtsecret

Наш consensus client запустится и мы увидим примерно следующее:

Далее мы можем процент синхронизации. Как только процент синхронизации достигнет 100%, статус сменится на Synced

Синхронизация может занять от 2 до 4 часов. Просто оставляем данное окно, не закрываем.

Running the execution client

Открываем параллельно с текущим новый PuTTy клиент (вы можете параллельно открыть несколько сессий).

Теперь создаем новый screen с названием “execution” с помощью следующей команды:

screen -S execution

У вас появится следующая строка в терминале:

Может показаться, что терминал пустой и ничего не происходит, но по факту мы сделали сессию “execution”, где наш consensus client даже когда наш Terminal будет закрыт.

Теперь перейдем в nethermind директорию для запуска execution client, вводим следующую команду:

cd ~/nethermind/src/Nethermind/Nethermind.Runner

Теперь пишем следующее:

dotnet run -c Release -- --config=holesky --datadir="../../../../nethermind-datadir" --JsonRpc.Host=0.0.0.0 --JsonRpc.JwtSecretFile=/tmp/jwtsecret

Начнется синхронизация с нашим consensus client, увидим следующее:

Синхронизация также будет длится несколько часов. Когда увидим надпись “Pivot block form Consensus Layer too far from head” - значит нода синхронизировалась.

Итак, теперь наш Consensus client синхронизируется, Execution client присоединен к нему, и нам осталось только дождаться синхронизации. В общем порядке, я советую просто подождать 2 часа и переходить к следующему шагу - регистрации в puffer dashboard.

Finishing the registration on Puffer Dashboard

Переходим на страницу: https://launchpad.puffer.fi/Setup и нажимаем Continue

Дальше нам нужно в данном интерфейсе купить pufETH на сумму более более 2 ЕТН (если за 2 ЕТН нам дают 1,8 pufETH - это нормально). В моем примере я покупаю на 3 ЕТН и получаю 2,68 pufETH. Все эфиры тестовые, поэтому реальные деньги мы не тратим.
Подтверждаем транзакцию через Submit Transaction

На следующем шаге нам надо купить Validator Ticket - это некий билет на возможность работы ноды. 1 билет = 1 день работы. Минимально нужно купить 28 билетов, но т.к. ЕТН тестовые, то можно и на 90 дн брать. Я брал на 60 дн, а при желании потом можно билеты докупить.

Контракты pufETH и Validation Ticket можно добавить в кошелек:

Holesky pufETH Contract: 0x98408eadD0C7cC9AebbFB2AD2787c7473Db7A1fa

Holesky Puffer Validator Ticket Contract: 0xA143c6bFAff0B25B485454a9a8DB94dC469F8c3b

Нажимаем Continue и на следующем шаге прикрепляем файл "registration.json", который мы скачивали на ПК ранее.

Далее потребуется написать несколько подтверждающих транзакций в кошельке и переходить на https://launchpad.puffer.fi/Dashboard

Будет примерно следующая картина:

Сначала статус будет Pending (или какое-то аналогичное название). В конценоч счете он сменится на Active.
Можно нажать на три точки и провалиться в Block Explorer. Статус в данном Dashboard в целом синхронизируется с информацией в Block Explorer.

В общем наша работа окончена и нужно просто ждать активации ноды. Когда увидим такую картину, можно считать что все работает как нужно и останется только продлять аренду VDS сервера и ждать дропа от Puffer.

На этом все, надеюсь было понятно.

Исправление ошибки синхронизации ноды

Если после окончания статуса Pending (~6 дн), у вас не синхронизируются блоки (смотри колонку Status на скрине ниже), то нужно проделать следующие действия:

Останавливаем наш Consensus клиент.
Для этого сначала переходим на Screen с этим клиентом:

screen -r consensus

После перехода, мы должны видеть, что наш клиент работает и статусы активно изменяются:

Останавливаем процесс, нажимая CTRL+C и увидим следующее:

Переключение между областью Screen и основной консолью происходит по нажатию CTRL+A. Жмем CTRL+A.

Далее возвращаемся в корневую папку и переходим на Screen с Execution клиентом

cd
screen -r execution

Далее точно также жмем CRLT+C и останавливаем Execution клиент. Дожидаемся несколько секунд пока клиент остановится. После остановки вы будете видеть следующее:

Переключение между областью Screen и основной консолью происходит по нажатию CTRL+A. Жмем CTRL+A.

В основной области терминала переходим в корневую папку

cd

Теперь нужно удалить nethermind data директорию с помощью команды:

rm -r nethermind-datadir

После этой команды, в консоли ничего не произойдет

Переходим в папку с Nimbus клиентом

cd nimbus-eth2

Будет примерно так:

Теперь пишем команду:

build/nimbus_beacon_node deposits import --data-dir=build/data/shared_holesky_0

Будет следующая картина:

Нас просят ввести пароль, который мы придумывали когда создавали Validators Key. Печатаем пароль (слепая печать, при вводе символы отображаться не будут, вводите внимательно) и нажимаем Enter. Появится уведомление об импорте ключей

Теперь нам надо заново запустить Consensus и Execution клиенты:

Запускаем сначала Consensus

cd
screen -S consensus

Далее в экране Screen повторяем команды запуска, как мы уже делали ранее в гайде:

Running the consensus client

Переходим в наш consensus client папку, для этого пишем команду:

cd ~/nimbus-eth2

Теперь пишем следующую команду:

./run-holesky-beacon-node.sh --web3-url=http://127.0.0.1:8551 --suggested-fee-recipient=WALLET --jwt-secret=/tmp/jwtsecret
В команде предварительно замените "WALLET" на адрес своего Метамаск кошелька

Например, моя команда будет выглядеть следующим образом:

./run-holesky-beacon-node.sh --web3-url=http://127.0.0.1:8551 --suggested-fee-recipient=0xB0551d678a6746F2Cf300CF698d314EA1e74e3c7 --jwt-secret=/tmp/jwtsecret

После запуска и начала синхронизации ничего не делаем и не нажимаем. Т.к. синхронизация у нас запущена на Screen, просто закрываем PuTTy терминал.

Теперь запускаем execution client, для этого повторяем все шаги из гайда из раздела:

Running the execution client

Открываем новый PuTTy клиент (вы можете параллельно открыть несколько сессий).

Теперь создаем новый screen с названием “execution” с помощью следующей команды:

screen -S execution

У вас появится следующая строка в терминале:

Может показаться, что терминал пустой и ничего не происходит, но по факту мы сделали сессию “execution”, где наш consensus client даже когда наш Terminal будет закрыт.

Теперь перейдем в nethermind директорию для запуска execution client, вводим следующую команду:

cd ~/nethermind/src/Nethermind/Nethermind.Runner

Теперь пишем следующее:

dotnet run -c Release -- --config=holesky --datadir="../../../../nethermind-datadir" --JsonRpc.Host=0.0.0.0 --JsonRpc.JwtSecretFile=/tmp/jwtsecret

Потребуется некоторое время для запуска...

После запуска и начала синхронизации ничего не делаем и не нажимаем. Т.к. синхронизация у нас запущена на Screen, просто закрываем PuTTy терминал.

Если все сделали правильно, то через 30-60 мин блоки на ноде начнут получать статус Attested. У вас должно появиться следующее отображение, что будет означать что ваша нода запущена и валидируется корректно: