Руководство для операторов

В этом руководстве описаны шаги, необходимые для настройки и регистрации ноды для DODOchain MACH AVS (тестнет/мейннет).

Минимальные системные требования

  • 4 ПРОЦЕССОРА

  • 16 ГБ памяти

  • 50 ГБ SSD

  • Ubuntu 22.04 LTS

  • Docker v24 и выше

  • EigenLayer CLI

Минимальные требования для стейкинга

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

Поддерживаемая стратегия токенов

Эфир Beacon Chain и все LST, поддерживаемые EigenLayer, поддерживаются нашей AVS.

Настройка оператора

Генерация ключей и пополнение кошелька

  1. Следуйте руководству EigenLayer и установите EigenLayer CLI

  2. Сгенерируйте пары ключей ECDSA и BLS с помощью следующей команды

eigenlayer operator keys create --key-type ecdsa [keyname]
eigenlayer operator keys create --key-type bls [keyname]

💡 Пожалуйста, убедитесь, что вы сохранили резервные копии своих приватных ключей в безопасном месте. По умолчанию зашифрованные ключи будут храниться в ~/.eigenlayer/operator_keys/

  1. Внесите не менее 0,3 ETH на сгенерированный ECDSA-адрес. Он потребуется для регистрации ноды на последующих этапах.

  2. Пожалуйста, отправьте ECDSA-адрес через форму заинтересованности MACH AVS https://forms.gle/3A6xNWwRf9ip9CnN9.

Зарегистрируйтесь в EigenLayer в качестве оператора

💡 Вы можете пропустить следующие шаги, если вы уже являетесь зарегистрированным оператором в тестнете и мейннете EigenLayer.

Вам нужно будет сделать это один раз для тестнета и один раз для мейннета.

  1. Создайте конфигурационные файлы, необходимые для регистрации оператора, с помощью следующих команд. Следуйте пошаговым инструкциям. После завершения будут созданы файлы operator.yaml и metadata.json.

eigenlayer operator config create
  1. Отредактируйте файл metadata.json и заполните данные о своем операторе.

{
  "название": "пример оператора",
  "вебсайт": "<https://example.com/>",
  "описание": "пример описания",
  "логотип": "<https://example.com/logo.png>",
  "twitter": "<https://twitter.com/example>"
}
  1. Загрузите файл metadata.json на публичный URL. Затем обновите файл operator.yaml, указав в нем URL (metadata_url). Если вам нужен хостинг для размещения метаданных, вы можете загрузить gist метаданных и получить raw URL.

  2. Если вы впервые регистрируете этот оператор, выполните следующую команду для регистрации и обновления оператора

eigenlayer operator register operator.yaml

После успешной регистрации вы должны увидеть

✅ Operator is registered successfully to EigenLayer

Если в будущем вам понадобится отредактировать метаданные, просто обновите файл metadata.json и выполните следующую команду

eigenlayer operator update operator.yaml
  1. После того, как ваш оператор будет зарегистрирован, он будет отражен на странице оператора EigenLayer.

Тестнет: https://holesky.eigenlayer.xyz/operator

Мейннет: https://app.eigenlayer.xyz/operator

Вы также можете проверить статус регистрации оператора с помощью следующей команды.

eigenlayer operator status operator.yaml

Присоединение к MACH AVS

💡 Учебные ролики DODOchain Mach AVS первоначально будут запущены в режиме разрешительного списка операторов. Заинтересованные операторы могут зарегистрировать свой интерес с помощью этой формы:

https://forms.gle/LmPABTNQcwJhw4UB7.

Настройка Mach AVS

Клонирование репозитория Mach AVS

Выполните следующую команду для клонирования репозитория оператора MACH AVS и изменить каталог на DODOchain MACH AVS mainnet config.

Первоначально DODOchain MACH mainnet AVS будет обслуживать тестовую сеть DODOchain. Как только DODOchain перейдет в mainnet, DODOchain MACH mainnet AVS переключится на DODOchain mainnet.

git clone https://github.com/alt-research/mach-avs-operator-setup.git
cd mach-avs-operator-setup/ethereum/mach-avs/dodochain-testnet

Подключение и отключение от MACH AVS

Для подключения и отключения скопируйте следующие env

cp .env.opt-example .env.opt

Обновите разделы TODO в .env.opt

###############################################################################
####### TODO: Операторы, пожалуйста, обновите следующие значения для вашей ноды ##############
###############################################################################
# TODO: Установите url метаданных для оператора
METADATA_URI=https://path/to/metadata.json

# TODO: Операторы должны обновить это значение в соответствии с их собственными путями
USER_HOME=${HOME}
EIGENLAYER_HOME=${USER_HOME}/.eigenlayer

# TODO: Операторы должны обновить это для своих собственных ключей
NODE_ECDSA_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/opr.ecdsa.key.json
NODE_BLS_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/opr.bls.key.json

# TODO: Операторам необходимо добавить пароль для расшифровки вышеуказанных ключей.
# Если ваш пароль содержит пробел, / или $, пожалуйста, используйте одинарную кавычку, чтобы 
# инкапсулировать ваш пароль, например, 'mypassword /$'
OPERATOR_BLS_KEY_PASSWORD=
OPERATOR_ECDSA_KEY_PASSWORD=

Чтобы подключиться

💡 Перед тем как подключиться к MACH AVS, убедитесь, что

  1. У вас есть необходимая инфраструктура (например, облачный хостинг) для поддержания работоспособности оператора. Операторы AVS, не справляющиеся со своими обязанностями, могут быть исключены из MACH AVS.

  2. Вы уже были внесены в вайтлист операторов MACH AVS.

./run.sh opt-in 

Если вы больше не хотите запускать AVS, вы можете отказаться от участия, запустив

./run.sh opt-out 

💡 Обновление EigenLayer AVS и страницы оператора может занять несколько минут. Это автоматический процесс.

Запуск MACH AVS

Создайте файл среды

cp .env.example .env

Настройка оператора MACH AVS

Обновите секции TODO в файле .env

💡 Путь по умолчанию, где хранятся сгенерированные ключи ~/.eigenlayer/operator_keys/

###############################################################################
####### TODO: Операторы, пожалуйста, обновите следующие значения для вашей ноды ##############
###############################################################################
# TODO: Операторы должны обновить эти значения для своих путей
USER_HOME=${HOME}
EIGENLAYER_HOME=${USER_HOME}/.eigenlayer

# TODO: Операторам необходимо установить адрес ecdsa.
# который можно получить из `eigenlayer operator keys list`, адрес находится в `Key Type: ECDSA`
OPERATOR_ECDSA_ADDRESS=

# TODO: Операторы должны обновить этот адрес до своих собственных ключей
NODE_BLS_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/opr.bls.key.json

# TODO: Операторам необходимо добавить пароль для расшифровки вышеуказанных ключей
# Если ваш пароль содержит пробел, / или $, пожалуйста, используйте одинарную кавычку, чтобы 
# инкапсулировать ваш пароль, например, 'mypassword /$'
OPERATOR_BLS_KEY_PASSWORD=

Настройка конечной точки роллапа

Мы предварительно настроили mach-config.toml с RPC, размещенным на AltLayer. В качестве альтернативы вы можете обратиться к членам команды AltLayer в рабочей группе Slack за инструкциями по размещению собственной RPC-ноды.

Если вы столкнулись с ограничениями скорости на публичных конечных точках, мы рекомендуем вам использовать управляемые службы RPC, такие как Infura, Alchemy, или QuickNode.

Если вы хотите обновить L1 или Rollup RPC,

  1. Перейдите в /chain-config/mach-config.toml

  2. Найдите fetcher и l1-fetcher. Найдите переменную url и l1_url. Замените значение на свою конечную точку.

Запуск MACH AVS

Чтобы запустить MACH AVS, выполните docker compose.

docker compose pull --policy always
docker compose pull
docker compose up -d

Чтобы снести контейнер

docker compose down

Если вы хотите включить мониторинг, выполните следующие действия

docker compose --profile monitoring up

Если вы хотите остановить мониторинг:

docker compose --profile monitoring down

При использовании профиля monitoring вы можете добавить grafana для мониторинга сервиса, порт по умолчанию 1300, доступ осуществляется через localhost:13000.

Схема Helm

Чтобы запустить MACH AVS в кластере Kubernetes, вы можете использовать образец схемы Helm, доступный в репозитории MACH AVS Operator Setup. Вы можете найти эту схему по следующей ссылке: MACH Operator Helm Chart.

Столкнулись с проблемами?

Пожалуйста, свяжитесь с нами через Slack.

Часто задаваемые вопросы

  1. Как узнать, запущен ли мой оператор?

Для начала проверьте, запущен ли ваш докер-контейнер оператора, выполнив команду docker compose ps.

docker compose ps    
NAME                         IMAGE                                          COMMAND                  SERVICE                  CREATED          STATUS          PORTS
mach-avs-operator-node       public.ecr.aws/altlayer/mach-operator:latest   "operator"               mach-operator-node       33 seconds ago   Up 32 seconds   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp
mach-avs-operator-verifier   public.ecr.aws/altlayer/mach:latest            "/usr/local/bin/op-m…"   mach-operator-verifier   33 seconds ago   Up 32 seconds   0.0.0.0:9094->9094/tcp, :::9094->9094/tcp, 9715/tcp
mach-avs-reverse-proxy-1     nginx:latest                                   "/docker-entrypoint.…"   reverse-proxy            33 seconds ago   Up 32 seconds   80/tcp, 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp

Далее вы можете проверить логи, чтобы узнать, были ли запущены сервисы или нет

2024-04-01T17:04:29.613Z        INFO    logging/zap_logger.go:49        Start operator  {"address": "0xAD6B95793DD4D2b8e184FB4666D1cfb14871A035"}
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:69        Starting operator.
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:69        Starting node api server at address 0.0.0.0:9091
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:69        Starting metrics server at port 0.0.0.0:9092
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:49        start rpc server for got alert
2024-04-01T17:04:29.957Z        INFO    logging/zap_logger.go:49        node api server running {"addr": "0.0.0.0:9091"}

Наконец, чтобы определить, валидирует ли ваша AVS целевой роллап, можно просмотреть логи верификационного контейнера на предмет активности валидации блоков.

docker logs <name of container> 

[2024-04-01T17:06:28Z INFO  actor::scheduler] Validate block #166853(0x7ddde84c28da088639bb699a8982e206ca4aea4031fe37b2aa9c69fd23bac940) passed
[2024-04-01T17:06:32Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:32Z INFO  actor::block-fetcher] Latest block #166853(0x7ddde84c28da088639bb699a8982e206ca4aea4031fe37b2aa9c69fd23bac940)
[2024-04-01T17:06:36Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:37Z INFO  actor::block-fetcher] Latest block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb)
[2024-04-01T17:06:37Z INFO  actor::scheduler] Pre validate block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb) passed
[2024-04-01T17:06:37Z INFO  actor::scheduler] There are 1 block validation tasks waiting for result
[2024-04-01T17:06:37Z INFO  actor::scheduler] Validate block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb) passed
[2024-04-01T17:06:41Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:41Z INFO  actor::block-fetcher] Latest block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb)
[2024-04-01T17:06:46Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:46Z INFO  actor::block-fetcher] Latest block #166855(0x07fbc09cf59e93b965c471153d4fabbff38ed0f72a7a2da43a141861b500fea1)
[2024-04-01T17:06:46Z INFO  actor::scheduler] Pre validate block #166855(0x07fbc09cf59e93b965c471153d4fabbff38ed0f72a7a2da43a141861b500fea1) passed
[2024-04-01T17:06:46Z INFO  actor::scheduler] There are 1 block validation tasks waiting for result
[2024-04-01T17:06:46Z INFO  actor::scheduler] Validate block #166855(0x07fbc09cf59e93b965c471153d4fabbff38ed0f72a7a2da43a141861b500fea1) passed
  1. Кто управляет агрегатором и выполняет агрегацию подписей BLS?

AltLayer предоставит агрегатор, к которому ваш MACH AVS сможет подключиться и отправить подписи для агрегации. Конечная точка агрегатора предварительно настроена в конфигурационном файле.

  1. Как узнать, что при регистрации я не удовлетворяю требованиям минимального стейкинга?

Выполнение будет отменено:

execution reverted: StakeRegistry.registerOperator: Operator does not meet minimum stake

2024-04-02T19:05:40.535Z	INFO	logging/zap_logger.go:49	registering operator with the AVS's registry coordinator	{"avs-service-manager": "0xAE9a4497dee2540DaF489BeddB0706128a99ec63", "operator": "0x44220295991E4Fe4f3A4C5FE04E96B1b19960766", "quorumNumbers": "AA=="}
2024-04-02T19:05:42.162Z	ERROR	logging/zap_logger.go:57	Unable to register operator with avs registry coordinator	{"error": "execution reverted: StakeRegistry.registerOperator: Operator does not meet minimum stake requirement for quorum"}
github.com/Layr-Labs/eigensdk-go/logging.(*ZapLogger).Error
  1. Будут ли вознаграждения в токенах?

Вознаграждения в мейннете MACH AVS будут в будущем. Более подробная информация будет объявлена позже.

  1. Я не могу зарегистрироваться и сталкиваюсь с проблемой

Unable to register operator with avs registry coordinator

Пожалуйста, проверьте, достаточно ли средств на вашем ECDSA-адресе. Мы рекомендуем хранить не менее 0,3 ETH, чтобы обеспечить достаточное количество газа для регистрации, подключения и отключения оператора AVS.

Last updated