> For the complete documentation index, see [llms.txt](https://vi0.gitbook.io/dokumentaciya-altlayer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vi0.gitbook.io/dokumentaciya-altlayer/aktivno-validiruemye-uslugi-s-podderzhkoi-altlayer/dodochain-mach-avs-dlya-cheina-dodo/rukovodstvo-dlya-operatorov.md).

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

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

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

* 4 ПРОЦЕССОРА
* 16 ГБ памяти
* 50 ГБ SSD
* Ubuntu 22.04 LTS
* [Docker](https://docs.docker.com/engine/install/) v24 и выше
* EigenLayer CLI

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

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

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

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

## Настройка оператора&#x20;

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

1. Следуйте [руководству EigenLayer](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation#installation-1) и установите 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 в качестве оператора&#x20;

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

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

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

```
eigenlayer operator config create
```

2. Отредактируйте файл `metadata.json` и заполните данные о своем операторе.

<pre><code><strong>{
</strong>  "название": "пример оператора",
  "вебсайт": "&#x3C;https://example.com/>",
  "описание": "пример описания",
  "логотип": "&#x3C;https://example.com/logo.png>",
  "twitter": "&#x3C;https://twitter.com/example>"
}
</code></pre>

3. Загрузите файл `metadata.json` на публичный URL. Затем обновите файл `operator.yaml`, указав в нем URL (`metadata_url`). Если вам нужен хостинг для размещения метаданных, вы можете загрузить [gist](https://gist.github.com/) метаданных и получить `raw` URL.
4. Если вы впервые регистрируете этот оператор, выполните следующую команду для регистрации и обновления оператора

```
eigenlayer operator register operator.yaml
```

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

`✅ Operator is registered successfully to EigenLayer`

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

```
eigenlayer operator update operator.yaml
```

5. После того, как ваш оператор будет зарегистрирован, он будет отражен на [странице оператора EigenLayer](https://holesky.eigenlayer.xyz/operator).

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

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

<figure><img src="/files/cAq1ye3jdX0QLi56Ol0w" alt=""><figcaption></figcaption></figure>

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

```
eigenlayer operator status operator.yaml
```

## Присоединение к MACH AVS&#x20;

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

<https://forms.gle/LmPABTNQcwJhw4UB7>.

### Настройка Mach AVS&#x20;

**Клонирование репозитория Mach AVS**&#x20;

Выполните следующую команду для [клонирования репозитория оператора MACH AVS](https://github.com/alt-research/mach-avs-operator-setup) и изменить каталог на DODOchain MACH AVS mainnet config.

{% hint style="info" %}
Первоначально DODOchain MACH mainnet AVS будет обслуживать тестовую сеть DODOchain. Как только DODOchain перейдет в mainnet, DODOchain MACH mainnet AVS переключится на DODOchain mainnet.
{% endhint %}

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

### Подключение и отключение от MACH AVS&#x20;

Для подключения и отключения скопируйте следующие 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&#x20;

Обновите секции `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**](https://www.notion.so/897c331db50947f480b9e45c22f410e5?pvs=21)**,** [**Alchemy**](https://www.alchemy.com/)**, или** [**QuickNode**](https://www.quicknode.com/)**.**

Если вы хотите обновить 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](https://github.com/alt-research/mach-avs-operator-setup/tree/master/helm-charts/mach-operator).

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

Пожалуйста, свяжитесь с нами через 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
```

2. **Кто управляет агрегатором и выполняет агрегацию подписей BLS?**

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

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

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

`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
```

4. **Будут ли вознаграждения в токенах?**

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

5. **Я не могу зарегистрироваться и сталкиваюсь с проблемой**&#x20;

**`Unable to register operator with avs registry coordinator`**

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vi0.gitbook.io/dokumentaciya-altlayer/aktivno-validiruemye-uslugi-s-podderzhkoi-altlayer/dodochain-mach-avs-dlya-cheina-dodo/rukovodstvo-dlya-operatorov.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
