Obol Network. Гайд по тестнету Athena.
Содержание
Obol Network - это протокол для децентрализованного стейкинга Ethereum, направленный на обеспечение возможности масштабирования основной цепи за счет предоставления доступа к валидаторам без разрешений.
Проект выглядит очень достойно по ряду причин (гем?):
1) Фаундер проекта - бывший руководитель глобальной продуктовой стратегии ConsenSys. Кроме этого, у проекта очень мощная команда.
2) Obol Network привлек более 6 млн$ инвестиций от таких фондов, как Ethereal Ventures, Coinbase Ventures, Acrylic Capital, Advanced Blockchain и др, а также от протокола LIDO.
8 июля команда проекта объявила о запуске публичного тестнета под названием Athena (подробности здесь).
Скажу сразу, что это не вознаграждаемый тестнет, но успешное его прохождение даст возможность участия в будущих ивентах проекта, которые уже будут вознаграждаться.
Сам тестнет начнется в августе и продлится 2 месяца. Для участия в нем понадобится сервер со следующими параметрами: 4 CPU, 8 GB RAM, 500 GB SSD. Это минимальные параметры! Выгоднее всего заказать такой сервер у хостинг провайдера Contabo. Если есть проблемы с оплатой из России, используйте карту Pyypl. Как альтернатива, можно воспользоваться этим провайдером, но выйдет дорого за счет большого объема дискового пространства.
Сейчас же на первом этапе отбора можно использовать любой сервер с любыми параметрами. Нам необходимо будет всего лишь получить и отправить ENR ключ в данную форму (открыта до конца июля). О том как это сделать ниже.
Подготовка к тестнету Athena.
Логинемся на любой имеющийся сервер и выполняем следующие команды:
sudo apt update && sudo apt upgrade -y
sudo apt install -y vim nano git curl wget htop bash-completion xz-utils zip unzip ufw locales net-tools mc jq make gcc gpg build-essential ncdu sysstat
# Установите требуемые пакеты sudo apt install -y ca-certificates curl gnupg lsb-release # Добавьте в систему GPG-ключ Docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # Добавьте в систему репозиторий Docker echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Обновите список пакетов в репозиториях и установите Docker sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
# Загружаем Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # Устанавливаем необходимые привилегии для запуска Docker Compose sudo chmod +x /usr/local/bin/docker-compose
git clone https://github.com/ObolNetwork/charon-distributed-validator-node.git
chmod o+w charon-distributed-validator-node
cd charon-distributed-validator-node
docker run --rm -v "$(pwd):/opt/charon" ghcr.io/obolnetwork/charon:v0.8.1 create enr
Теперь копируем ENR ключ, который нам выдало в консоль и указываем его при заполнении формы.
Важно: ENR ключ указывается полностью, вместе с enr:-
Обязательно сделайте бэкап созданного файла! Он лежит в директории: .charon/charon-enr-private-key
После заполнения формы просто ждем отбора, который пройдет в августе.
Регистрация Кластера
Продолжаем участие в тестнете Obol Network. И следующий этап - это регистрация кластера. Кластер это от 4 до 8 серверов/нодеров, объединенных вместе. Таки образом по сути нам необходимо собрать команду. В этой команде выбирается "капитан", который должен сгенерировать файл конфигурации кластера.
Генерация файла конфигурации кластера
Важно! Если вы не регистрировались как валидатор ранее и не создавали enr ключ, вы все еще также можете принять участие на данном этапе тестнета. Просто вам необходимо проделать все с самого начала этого гайда.
На данном этапе можно использовать слабенький сервер чисто под регистрацию кластера. На следующем этапе тестнета, где будет установка нод, уже потребуются сервера с требования, указанными в начале статьи.
Капитан должен создать файл .env следующими командами
cd charon-distributed-validator-node
cp .env.sample .env
Далее Капитан собирает у всех членов команды enr ключи и редактирует .env файл следующей командой:
nano .env
- В переменную CHARON_BEACON_NODE_ENDPOINT копируем созданную на infura ноду эфира 2.0. Для это регистрируемся на сайте infura.io и создаем проект. В Network выбираем ETH2, в Name прописываем любое название нашей ноды. Далее меняем Endpoints на Prater, копируем https и как раз его вставляем в переменную CHARON_BEACON_NODE_ENDPOINT.
- В переменную CHARON_OPERATOR_ENRS добавляем enr всех участников кластера, включая капитана в таком формате: CHARON_OPERATOR_ENRS="enr:-XXXXX...", "enr:-XXXXX..."
Сохраняем файл и выходим CTRL+S и CTRL+X.
Далее Капитан генерирует конфигурационный файл кластера следующей командой, предварительно заменив переменную $MEMBER_NUMBER на количество участников в кластере (без учета Капитана), переменную $NAME_CLUSTER на название кластера, к примеру, "Best Cluster", а также $WALLET_ADDRESS на адрес своего кошелька Метамаск (в обоих случаях указывается один и тот же адрес).
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v0.9.0 create dkg --threshold="$MEMBER_NUMBER" --name="$NAME_CLUSTER" --fee-recipient-address="$WALLET_ADDRESS" --withdrawal-address="$WALLET_ADDRESS"⠀
Пустой вывод означает, что генерация прошла без ошибок.
Следующим шагом Капитан копирует созданный файл cluster-definition.json из папки .charon и рассылаем его всем участникам кластера.
Участники кластера должны скопировать данный файл к себе в папку .charon.
Запуск церемонии
После этого Капитан вводит команду запуска церемонии:
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v0.9.0 dkg --p2p-bootnode-relay
Все участники кластера запускают у себя следующую команду:
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v0.9.0 dkg --p2p-bootnode-relay
Обязательно делаем бэкап папки .charon!
Капитану необходимо заполнить форму от всего кластера здесь.
После заполнения все участники кластера запускают ноду командой
cd ~/charon-distributed-validator-node && docker-compose up -d
cd ~/charon-distributed-validator-node && docker-compose logs --tail=100 -f
Можно мониторить статус ноды в графане:
http://ВАШ_IP_АДРЕС:3000/d/singlenode/
Поднятие собственной бутноды
Это необязательный шаг, но рекомендуется его выполнить и вот почему.
Сейчас у многих большие проблемы с присоединением к бутноде Obol, поэтому производительность вашего кластера может значительно страдать (что очень плохо для итоговых результатов). Чтобы этого избежать, необходимо поднять собственную бутноду на отдельном сервере и подключить всех участников кластера к работе через нее.
Для этого подойдет сервер со следующими характеристиками: 2 CPU/4 RAM/60 SSD
На этом сервере должна стоять только бутнода и ничего более!
Далее, обновляем пакеты на сервере и устанавливаем Docker и Docker Compose, как делали это в самом начале гайда.
После чего копируем репозитарий с Гитхаба:
git clone https://github.com/ObolNetwork/charon-distributed-validator-node.git
Переходим в нужную директорию:
cd charon-distributed-validator-node/bootnode
Открываем файл docker-compose:
nano docker-compose.yml
В этом файле меняем "replace.with.public.ip.or.hostname" на IP адрес этого вашего сервера с бутнодой, сохраняем изменения и выходим.
Даем разрешение на работу с файлами:
sudo chmod -R 777 .charon
Далее запускаем докер бутноды:
docker-compose -f bootnode/docker-compose.yml up
Теперь всем участникам кластера необходимо присоединиться к этой бутноде.
Участники кластера переходят в нужную директорию:
cd charon-distributed-validator-node
Открывают файл docker-compose:
nano docker-compose.yml
В нем необходимо найти раздел Charon и там ниже строчки CHARON_P2P_EXTERNAL_HOSTNAME: charon необходимо добавить новую строку CHARON_P2P_BOOTNODES: http://youbootnodeip:3640/enr, предварительно заменив youbootnodeip на IP адрес бутноды.
После замены необходимо ввести команды:
docker-compose down docker-compose up -d
Проверить логи, что все ок, можно командой:
docker-compose logs -f --tail 100
Регистрация валидатора
Теперь, когда все готово, есть два варианта развития событий. Ждать, когда команда проекта активирует вам кластер или сделать все самим. Второй вариант предпочтительнее как с точки зрения практики, так и для скорейшего принятия участия в тестнете.
Для того, чтобы активировать кластер вам необходимо зарегистрировать валидатора, что потребует 32 ETH в сети Goerli (тестовый эфир). Его можно получить несколькими путями: намайнить, например, здесь, купить на OTC, либо попробовать попросить делегацию в Дискорде проекта.
Эфир нужен только капитанской ноде. Поэтому когда у Капитана есть 32 эфира, он должен сделать следующие шаги:
1) Открыть и отредактировать файл deposit-data.json:
nano charon-distributed-validator-node/.charon/deposit-data.json
"network_name": "prater" - изменить название сети prater на goerli
"deposit_cli_version": "2.1.0" - изменить название сети на 2.3.0
3) Сохранить изменения в файле и скачать его на компьютер.
4) Перейти на https://goerli.launchpad.ethereum.org/en/overview
- Согласиться со всеми пунктами
- Выбрать Geth внизу страницы и нажать Continue
- Выбрать Lighthouse и нажать Continue
- Далее внизу страницы поставим галочку и нажать Continue
- Загрузить сохраненный файл deposit-data.json и Continue
- Подключить кошелек Метамаск, где лежат 32 ETH, поменять сеть на Goerli
- Оплатить валидатора
5) Перейти на https://prater.beaconcha.in/ и ввести свой public-key из файла deposit-data.json для проверки статуса, скопировав ссылку на своего валидатора.
6) Перейти в дискорд ветку #validator-activation-queue и отправить ссылку на зарегистрированного валидатора (лучше с упоминанием Thomas | Obol Network Thomas H#5694).
Обычно валидатора активируют в течение 24 часов. Проверить можно здесь.
Когда валидатор станет активным, необходимо перезапустить узлы кластера:
cd charon-distributed-validator-node
docker-compose down
git pull
docker-compose up -d
docker-compose logs -f --tail 100
Данный гайд будет обновляться по ходу продолжения тестнета.