Puffer TESTNET. Ставим Operator Node
❗️У нас нет приваток, платных статей, рекламы или иных навязчивых способов заработка на аудитории. Поэтому рассчитываю на Вашу поддержку путем подписки на наш ТГ канал Bit.Future и Youtube 👍
- Анонс от Puffer
- Официальная документация от Puffer
- Арендовать VDS сервер MevSpace
- Гайд по установке ноды на англ.яз от Steven Bravo
Этот гайд написан на базе гайда от 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
Средняя цена - $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 с помощью:
Нужно выполнить следующую команду:
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:
На следующих шагах протыкиваем все галочки:
Потребуется подписать транзакцию в Метамаск
Когда увидим статус “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 будет закрыт.
Переходим в наш 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 часов. Просто оставляем данное окно, не закрываем.
Открываем параллельно с текущим новый 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 клиенты:
cd screen -S consensus
Далее в экране Screen повторяем команды запуска, как мы уже делали ранее в гайде:
Переходим в наш 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, для этого повторяем все шаги из гайда из раздела:
Открываем новый 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. У вас должно появиться следующее отображение, что будет означать что ваша нода запущена и валидируется корректно: