Сгенерируйте пары ключей ECDSA и BLS с помощью следующей команды
💡 Пожалуйста, убедитесь, что вы сохранили резервные копии своих приватных ключей в безопасном месте. По умолчанию зашифрованные ключи будут храниться в ~/.eigenlayer/operator_keys/
Внесите не менее 0,3 ETH на сгенерированный ECDSA-адрес. Он потребуется для регистрации ноды на последующих этапах.
Зарегистрируйтесь в EigenLayer в качестве оператора
💡 Вы можете пропустить следующие шаги, если вы уже являетесь зарегистрированным оператором в тестнете и мейннете EigenLayer.
Вам нужно будет сделать это один раз для тестнета и один раз для мейннета.
Создайте конфигурационные файлы, необходимые для регистрации оператора, с помощью следующих команд. Следуйте пошаговым инструкциям. После завершения будут созданы файлы operator.yaml и metadata.json.
Отредактируйте файл metadata.json и заполните данные о своем операторе.
Загрузите файл metadata.json на публичный URL. Затем обновите файл operator.yaml, указав в нем URL (metadata_url). Если вам нужен хостинг для размещения метаданных, вы можете загрузить gist метаданных и получить raw URL.
Если вы впервые регистрируете этот оператор, выполните следующую команду для регистрации и обновления оператора
После успешной регистрации вы должны увидеть
✅ Operator is registered successfully to EigenLayer
Если в будущем вам понадобится отредактировать метаданные, просто обновите файл metadata.json и выполните следующую команду
После того, как ваш оператор будет зарегистрирован, он будет отражен на странице оператора EigenLayer.
Вы также можете проверить статус регистрации оператора с помощью следующей команды.
Присоединение к MACH AVS
💡 Учебные ролики Xterio Mach AVS первоначально будут запущены в режиме разрешительного списка операторов. Заинтересованные операторы могут зарегистрировать свой интерес с помощью этой формы:
Внутри этого репозитория находятся конфигурации для различных MACH AVS. Выберите AVS, которую вы хотите запустить
💡 Вы можете быть оператором разных MACH AVS. Повторите следующие шаги для каждой MACH AVS
Измените каталог на сетевой и MACH AVS, который вы хотите запустить
AVS
Команды
Мейннет Xterio MACH AVS (работает на AltLayer)
cd mach-avs-operator-setup/ethereum/mach-avs/xterio
Тестнет Xterio MACH AVS (работает на AltLayer)
cd mach-avs-operator-setup/holesky/mach-avs/xterio-testnet
Подключение и отключение от MACH AVS
Для подключения и отключения скопируйте следующие env
Обновите разделы TODO в .env.opt
Чтобы подключиться
💡 Перед тем как подключиться к MACH AVS, убедитесь, что
У вас есть необходимая инфраструктура (например, облачный хостинг) для поддержания работоспособности оператора. Операторы AVS, не справляющиеся со своими обязанностями, могут быть исключены из MACH AVS.
Вы уже были внесены в вайтлист операторов MACH AVS.
Если вы больше не хотите запускать AVS, вы можете отказаться от участия, запустив
💡 Обновление EigenLayer AVS и страницы оператора может занять несколько минут. Это автоматический процесс.
Запуск MACH AVS
Создайте файл среды
Настройка оператора MACH AVS
Обновите секции TODO в файле .env
💡 Путь по умолчанию, где хранятся сгенерированные ключи ~/.eigenlayer/operator_keys/
Настройка конечной точки роллапа
Мы предварительно настроили mach-config.toml с RPC, размещенным на AltLayer. В качестве альтернативы вы можете обратиться к членам команды AltLayer в рабочей группе Slack за инструкциями по размещению собственной RPC-ноды.
Запуск MACH AVS
Чтобы запустить MACH AVS, выполните docker compose.
Схема Helm
Чтобы запустить MACH AVS в кластере Kubernetes, вы можете использовать образец схемы Helm, доступный в репозитории MACH AVS Operator Setup. Вы можете найти эту схему по следующей ссылке: MACH Operator Helm Chart.
Столкнулись с проблемами?
Пожалуйста, свяжитесь с нами через Slack.
Часто задаваемые вопросы
Как узнать, запущен ли мой оператор?
Для начала проверьте, запущен ли ваш докер-контейнер оператора, выполнив команду docker compose ps.
Далее вы можете проверить логи, чтобы узнать, были ли запущены сервисы или нет
Наконец, чтобы определить, валидирует ли ваша AVS целевой роллап, можно просмотреть логи верификационного контейнера на предмет активности валидации блоков.
Кто управляет агрегатором и выполняет агрегацию подписей BLS?
AltLayer предоставит агрегатор, к которому ваш MACH AVS сможет подключиться и отправить подписи для агрегации. Конечная точка агрегатора предварительно настроена в конфигурационном файле.
Как я могу запустить RPC-ноду для различных роллапов для MACH AVS?
Роллап
Ссылка
Тестнет Xterio
Свяжитесь с командой AltLayer в рабочей группе Slack ( с учетом одобрения)
Как узнать, что при регистрации я не удовлетворяю требованиям минимального стейкинга?
Выполнение будет отменено:
execution reverted: StakeRegistry.registerOperator: Operator does not meet minimum stake
Будут ли вознаграждения в токенах?
Вознаграждения в мейннете MACH AVS будут в будущем. Более подробная информация будет объявлена позже.
Xterio MACH AVS - XTER токены
Я не могу зарегистрироваться и сталкиваюсь с проблемой
Unable to register operator with avs registry coordinator
Пожалуйста, проверьте, достаточно ли средств на вашем ECDSA-адресе. Мы рекомендуем хранить не менее 0,3 ETH, чтобы обеспечить достаточное количество газа для регистрации, подключения и отключения оператора AVS.
###############################################################################
####### 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=
./run.sh opt-in
./run.sh opt-out
cp .env.example .env
###############################################################################
####### 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=
docker compose pull
docker compose up -d
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"}
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
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