Guides
February 2, 2023

Obol: installation guide

Obol Network - протокол, способствующий минимизации доверительных ставок за счет проверки несколькими операторами. Это обеспечит доступ с низким уровнем доверия к доходности стейкинга Ethereum, который можно использовать в качестве основного строительного блока в различных продуктах Web3. Obol Network создается командой исследователей и разработчиков программного обеспечения, специализирующаяся на инфраструктуре проверки доли владения для общедоступных сетей блокчейна. Особое внимание уделяется таким темам, как интернет-облигации, технология распределенных валидаторов и мультиоператорная валидация. В настоящее время команда состоит из 20 человек, разбросанных по всему миру.

В раунде А проект собрал 12,5М долларов от Pantera, Coinbase Ventures, Spartan, Ethereal Ventures и др.

P.S. Учитывая специфику проекта, одиночное поддержание ноды невозможно, все операторы собираются в кластеры от 4 до 10 человек. Вы может организовать свой кластер с друзьями либо присоединится к стороннему кластеру в канале #bia-find-a-cluster. Также, для запуска своего кластера понадобится 32 ETH Goerli. Список кранов, с которых можно насобирать токены - https://faucetlink.to/goerli

Словарь терминов:

Лидер (или валидатор) - узел, который создает кластер, а также валидирует ноду эфира (сеть Goerli). Для запуска необходимо 32 Goerli ETH.

Оператор - один из участников кластера, проверяет транзакции кластера. Для корректной работы кластера 75% операторов должны быть активны.

DYOR:

Website
Twitter
Discord

Оглавление


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

Оглавление

Данная нода требует достаточно много ресурсов. Минимальные требования: CPU - 4+ ядер, RAM - 16 GB+, SSD - 1 TB+ (занятое место будет постоянно расти, в настоящее время (2 февраля 2023) нода занимает 360GB). Не пытайтесь запускать на серверах с меньшими параметрами, так как ваша нода работать не будет и может подставить остальных участников кластера. Подходящий выделенный сервер можно поискать на аукционе Hetzner.

Обновляем пакеты

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

Устанавливаем инструменты разработчика и необходимые пакеты

# скачиваем необходимые зависимости одной командой
sudo apt-get install curl wget git screen jq libpq-dev libssl-dev \
build-essential pkg-config openssl ocl-icd-opencl-dev \
libopencl-clang-dev libgomp1 -y

Устанавливаем docker и docker-compose

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/docker.sh)

Опционально. Устанавливаем apparmor

sudo apt install apparmor-profiles

Все дальнейшие действия как лидерам, так и операторам, необходимо проводить в скрине.

screen -S obol

Если вы не знаете, как работает screen, изучите данную статью


Инструкция для лидеров

Оглавление

Сбор адресов

Если вы планируете создать свой кластер, вам необходимо со всех ваших операторов собрать адреса эфира (формат: 0x....................................). Минимальное количество операторов 3 (помимо вас), максимальное 9.

Создание приватного ключа

Клонируем репозиторий

git clone https://github.com/ObolNetwork/charon-distributed-validator-node.git

Переходим в папку с нодой

cd charon-distributed-validator-node

Опционально. Даем разрешение для создания директорий

mkdir .charon
chmod a=rwx /root/charon-distributed-validator-node/.charon

Генерируем приватный ключ

docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v0.13.0 create enr

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

#Created ENR private key: .charon/charon-enr-private-key
#enr:-JG4QGQpV4qYe32QFUAbY1UyGNtNcrVMip83cvJRhw1brMslPeyELIz3q6dsZ7GblVaCjL_8FKQhF6Syg-O_kIWztimGAYHY5EvPgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQKzMe_GFPpSqtnYl-mJr8uZAUtmkqccsAx7ojGmFy-FY4N0Y3CCDhqDdWRwgg4u

Копируем ключ в блокнот, и делаем бэкап файла .charon/charon-enr-private-key

Создание конфигурационного файла DKG

Переходим на сайт https://bia.launchpad.obol.tech/ и подключаем кошелек, на котором есть 32 Goerli ETH. Список кранов, с которых можно насобирать токены - https://faucetlink.to/goerli

Прокручиваем страницу и выбираем создать кластер

Дальше соглашаемся со всеми условиями и доходим до страницы с конфигурациями кластера, в которой вводим название кластера, количество операторов и их адреса (который собрали на первом шаге)

Также вы можете добавить еще одного валидатора (на его счету также должно быть 32 ETH), однако это не обязательно. Оставляем одного валидатора и вводим свой enr ключ (в формате enr:-...................................)

Вводим адрес, на котором есть эфир, а также адрес (или адреса) на который будут капать реварды. На скрине ниже указана конфигурация, когда все реварды отправляются на один кошелек (2% забирает себе пул Obol). Количество адресов и проценты наград можно выбрать любые. Нажимаем кнопку "Создать конфигурацию кластера".

На следующей странице проверяем данные, нажимаем кнопку "Deploy Withdrawal Manager" и подтверждаем данные.

В открывшемся окне копируем ссылку и отправляем всем валидаторам

Отправляем данную ссылку своим операторам и ждем пока все присоединятся.

Нажимаем кнопку "Продолжить"

Выполняем полученную команду на своем сервере. Для успешного завершения этапа все операторы должны выполнить эту команду и завершить подготовку кластера. Данная команда одинаковая для всех участников кластера.

По завершению DKG появляются новые файлы, которые необходимо забэкапить - deposit-data.json, cluster-lock.jsonи папка validator_keys/. Все они находятся в папке .charon

Запуск ноды

Для запуска ноды используем следующие команды

rm -r ./data/lighthouse
cd $HOME/charon-distributed-validator-node && docker-compose up -d

По завершению установки проверяем логи

cd $HOME/charon-distributed-validator-node && docker-compose logs -f

Множество варнов и ерроров нормально, главное чтобы логи шли. Проверяем работоспособность ноды в графане

http://<ваш IP>:3000/d/singlenode/single-charon-node-dashboard?orgId=1&refresh=10s

Если вы видите примерно такую картину, то все хорошо, ваша нода работает и синхронизируется

Депозит

После завершения синхронизации (около 10 часов, размер директории 350-370GB) можем внести депозит.

Переходим по ссылке, соглашаемся с условиям, загружаем файл deposit-data.json, подключаем кошелек и вносим депозит в размере 32 ETH.

В дашборде графаны, прокрутив вниз вы увидите свой адрес валидатора, нажав на который можно увидеть через сколько времени ваш кластер будет активен (у меня заняло около 10 часов).


Инструкция для операторов

Оглавление

Отправка адреса лидеру

Копируете в метамаске ваш адрес эфира и отправляете его Вашему лидеру.

Создание приватного ключа

Клонируем репозиторий

git clone https://github.com/ObolNetwork/charon-distributed-validator-node.git

Переходим в папку с нодой

cd charon-distributed-validator-node

Генерируем приватный ключ

docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v0.13.0 create enr

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

#Created ENR private key: .charon/charon-enr-private-key
#enr:-JG4QGQpV4qYe32QFUAbY1UyGNtNcrVMip83cvJRhw1brMslPeyELIz3q6dsZ7GblVaCjL_8FKQhF6Syg-O_kIWztimGAYHY5EvPgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQKzMe_GFPpSqtnYl-mJr8uZAUtmkqccsAx7ojGmFy-FY4N0Y3CCDhqDdWRwgg4u

Копируем ключ в блокнот, и делаем бэкап файла .charon/charon-enr-private-key

Создание конфигурационного файла DKG

Получаем от лидера ссылку для регистрации в формате https://goerli.launchpad.obol.tech/dv#0x...

Переходим по ссылке и выполняем все действия.

По окончании регистрации вы получите команду для выполнения на сервере

Запуск ноды

Для запуска ноды используем следующие команды

rm -r ./data/lighthouse
cd $HOME/charon-distributed-validator-node && docker-compose up -d

По завершению установки проверяем логи

cd $HOME/charon-distributed-validator-node && docker-compose logs -f --tail 10

Множество варнов и ерроров нормально, главное чтобы логи шли. Проверяем работоспособность ноды в графане

http://<ваш IP>:3000/d/singlenode/single-charon-node-dashboard?orgId=1&refresh=10s

Если вы видите примерно такую картину, то все хорошо, ваша нода работает и синхронизируется


Выход из кластера

Оглавление

Создаем переменную с номером эпохи

export EXIT_EPOCH=162304

Вводим команду для выхода из кластера

cd && cd charon-distributed-validator-node
docker exec -ti charon-distributed-validator-node-teku-1 /opt/teku/bin/teku voluntary-exit --beacon-node-api-endpoint="http://charon:3600/" --confirmation-enabled=false --validator-keys="/opt/charon/validator_keys:/opt/charon/validator_keys" --epoch=$EXIT_EPOCH

При успешном выходе из кластера вы получите следующий вывод

После выхода 2/3 операторов из кластера начнется процесс выхода, который можно отслеживать в эксплорере

Через 27 часов можно заклеймить награды и стейк по ссылке

https://bia.launchpad.obol.tech/bia-claim?configHash=<ваш_config_hash>

Config_hash находится в файле cluster-lock.json в папке .charon


Обновление v0.14.0

Оглавление

Сообщите другим операторам в вашем кластере о том, что планируете обновляться. Это позволит избежать

Останавливаем ноду

cd $HOME/charon-distributed-validator-node
docker-compose down  

Редактируем конфиг

nano docker-compose.yml

Находим строку image: obolnetwork/charon:${CHARON_VERSION:-v0.13.0}

и заменяем ее на:

image: obolnetwork/charon:57ca044

По итогу у вас должно получиться так:

Собираем заново контейнер

cd $HOME/charon-distributed-validator-node && docker-compose up -d

Проверяем логи

cd $HOME/charon-distributed-validator-node && docker compose logs -f --tail 10

Проверяем версию в графане - http://<ваш IP>:3000/d/singlenode/single-charon-node-dashboard?orgId=1&refresh=10s

P.S. Версия в графане может не сразу отображаться и выдавать ошибку в блоке App Info. Это нормально, подождите ~10 минут.


Удаление ноды

Оглавление

Останавливаем ноду

cd $HOME/charon-distributed-validator-node && docker-compose down -v

Важно!!! Сохраняем на компьютер папку .charon

Удаляем данные

rm -rf $HOME/charon-distributed-validator-node
rm -rf $HOME/.charon

Полезные команды

Оглавление

Проверить логи

cd $HOME/charon-distributed-validator-node && docker-compose logs -f

Перезагрузить ноду

cd $HOME/charon-distributed-validator-node && docker-compose restart

Удалить ноду

cd $HOME/charon-distributed-validator-node && docker-compose down
cd && rm -rf charon-distributed-validator-node

Nodera

Telegram | Discord | Twitter