> For the complete documentation index, see [llms.txt](https://cr-nepos.gitbook.io/aptos-ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cr-nepos.gitbook.io/aptos-ru/rukovodstva-po-nodam/zapusk-polnoi-nody/identifikaciya-dlya-polnoi-nody.md).

# Идентификация для полной ноды

Полные ноды автоматически запустятся со случайно сгенерированным сетевым идентификатором. Это хорошо функционирует с обычными полными нодами. Однако:

* Вы можете захотеть, чтобы ваша полная нода была добавлена в определенный <mark style="background-color:red;">разрешающий список вышестоящей полной ноды</mark> (например, другого участника полной ноды в сети Aptos), потому что:
  * Вам могут потребоваться определенные разрешения для вашей полной ноды на этой конкретной <mark style="background-color:red;">вышестоящей полной ноде</mark> или
  * Эта <mark style="background-color:red;">вышестоящая полная нода</mark> позволяет подключаться к ней только известным идентификациям, или
  * Возможно, вы захотите выдвинуть свою полную ноду для подключения для других полных нод Aptos (для поддержки сети Aptos).

В таких случаях помогает запуск полной ноды со статическим сетевым идентификатором, а не со случайно сгенерированным сетевым идентификатором, который постоянно меняется при каждом запуске полной ноды.

Это руководство покажет вам, как:

* Создать статическую сетевую идентификацию для вашей полной ноды&#x20;
* Запустить ноду со статической сетевой идентификацией
* Позволить другим полным нодам подключаться к вашей полной ноде

### Прежде чем продолжить

Прежде чем продолжить, убедитесь, что вы знаете, как запустить локальную полную ноду. Подробную документацию см. в разделе [Запуск полной ноды](/aptos-ru/rukovodstva-po-nodam/zapusk-polnoi-nody/zapusk-polnoi-nody.md).

{% hint style="warning" %}
**DOCKER ПОДДЕРЖКА ТОЛЬКО НА LINUX**

Контейнер Docker в настоящее время поддерживается только на платформе Linux x86-64. Если вы работаете на платформе macOS или Windows, используйте исходные файлы Aptos-core.
{% endhint %}

### Создание статической идентификации для полной ноды

Для создания статической идентификации для вашей полной ноды:

1. Сначала вы создаете персональный ключ, пару публичных ключей для вашей полной ноды.
2. Далее вы получаете`peer_id` из публичного ключа.
3. Наконец, вы используете `peer_id` in your `public_full_node.yaml` , чтобы создать статическую сетевую идентификацию для вашей полной ноды.

Выполните подробно описанные ниже шаги:\\

1. Создайте ответвление и клонируйте репозиторий [aptos-labs/aptos-core](https://github.com/aptos-labs/aptos-core) . Пример:

```
$ git clone https://github.com/<YOUR-GITHUB-USERID>/aptos-core.git
$ cd aptos-core
$ ./scripts/dev_setup.sh
$ source ~/.cargo/env
```

#### Использование Docker

В качестве альтернативы, если вы работаете на платформе Linux x86-64, вы можете использовать образ Aptos Docker.

Перейдите `cd` в каталог вашей локальной публичной полной ноды и запустите контейнер Docker с последними инструментами, например:

```
$ cd ~/my-full-node
$ docker run -it aptoslab/tools:devnet /bin/bash
```

2\. Запустите [Aptos CLI](https://github.com/aptos-labs/aptos-core/blob/main/crates/aptos/README.md) `aptos` , чтобы создать закрытый статический ключ x25519 в шестнадцатеричном кодировании. Это будет закрытый ключ вашей сетевой идентичности.&#x20;

{% hint style="info" %}
**ПРИМЕЧАНИЕ**

Приведенная ниже команда также создаст корреспондирующий файл `private-key.txt.pub` с открытым ключом идентификации в нем.
{% endhint %}

```
aptos key generate --key-type x25519 --output-file /path/to/private-key.txt
```

Пример файла `private-key.txt` и связанных файлов `private-key.txt.pub` показан ниже:

```
$ cat ~/private-key.txt
C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D%           

$ cat ~/private-key.txt.pub
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813%
```

#### Использование Docker

Выполните этот шаг из контейнера Docker `aptoslab/tools` . Откройте новый терминал и перейдите `cd` в каталог, где вы запускали контейнер Docker для вашей полной ноды. Убедившись, что вы указали полный путь к тому месту, где вы хотите сохранить TXT-файл закрытого ключа, выполните команду, как показано ниже:

```
aptos-operational-tool generate-key \
    --encoding hex \
    --key-type x25519 \
    --key-file /path/to/private-key.txt
```

3\. Получите пир идентификацию

Если вы используете для генерации закрытого ключа исходные файлы Aptos, выполните данную ниже команду Aptos CLI , чтобы сгенерировать `peer_id`:

```
aptos key extract-peer  --private-key-file private-key.txt  \
    --output-file peer-info.yaml
```

#### Использование Docker

Из контейнера Docker`aptoslab/tools` :

```
$ aptos-operational-tool extract-peer-from-file \
    --encoding hex \
    --key-file /path/to/private-key.txt \
    --output-file /path/to/peer-info.yaml
```

Это создаст файл YAML с вашим `peer_id` , соответствующим предоставленному вами `private-key.txt` .

Пример вывода `peer-info.yaml`:

```
---
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
  addresses: []
  keys:
    - "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
role: Upstream
```

В этом примере`B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813` является `peer_id`. Используйте его в поле `peer_id` вашего `public_full_node.yaml` для создания статической идентификации для вашей полной ноды.&#x20;

### Запуск ноды со статической сетевой идентификацией

После того, как вы сгенерировали открытый ключ идентификации, вы можете запустить полную ноду со статической сетевой идентификацией, используя открытый ключ в поле `peer_id` файла конфигурации `public_full_node.yaml`:

```
full_node_networks:
- network_id: "public"
  discovery_method: "onchain"
  identity:
    type: "from_config"
    key: "<PRIVATE_KEY>"
    peer_id: "<PEER_ID>"
```

В нашем примере вы должны указать сгенерированный выше `peer_id` вместо`<PEER_ID>`:

```
full_node_networks:
- network_id: "public"
  discovery_method: "onchain"
  identity:
    type: "from_config"
    key: "C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D"
    peer_id: "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
```

### Разрешение подключиться другим полным нодам

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

{% hint style="info" %}
**ПРИМЕЧАНИЕ**

В следующих шагах номера портов используются только для иллюстрации. Вы можете использовать выбранные вами номера портов.
{% endhint %}

* Убедитесь, что вы открыли порт `6180` (или `6182`, например, в зависимости от того, какой порт прослушивает ваша нода) и что вы открыли брандмауэр.
* Если вы используете Docker, просто добавьте `- "6180:6180"` или `- "6182:6182"` под портами в файле `docker-compose.yaml` .
* Поделитесь статической сетевой идентификацией вашей ноды с другими. Они смогут использовать ее в ключе `seeds` их файла `public_full_node.yaml` , чтобы подключиться к вашей полной ноде.
* Убедитесь, что номер порта, указанный вами в`addresses` совпадает с тем, который указан в файле конфигурации полной ноды `public_full_node.yaml` (например, `6180` или `6182`).

Поделитесь статической сетевой идентификацией вашей полной ноды в следующем формате на канале Discord `advertise-full-nodes`:

```
<Peer_ID>:
  addresses:
  # with DNS
  - "/dns4/<DNS_Name>/tcp/<Port_Number>/ln-noise-ik/<Public_Key>/ln-handshake/0"
  role: Upstream
<Peer_ID>:
  addresses:
  # with IP
  - "/ip4/<IP_Address>/tcp/<Port_Number>/ln-noise-ik/<Public_Key>/ln-handshake/0"
  role: Upstream
```

Например:

```
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
  addresses:
  - "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/ln-handshake/0"
  role: "Upstream"
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
  addresses:
  - "/ip4/100.20.221.187/tcp/6182/ln-noise-ik/B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/ln-handshake/0"
  role: "Upstream"
```

{% hint style="info" %}
**ПРИМЕЧАНИЕ**

Пир ID является синонимом `AccountAddress`. См. [NetworkAddress](https://github.com/aptos-labs/aptos-core/blob/main/documentation/specifications/network/network-address.md) , чтобы узнать, как конструируется значение ключа`addresses` .
{% endhint %}
