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

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

  • Вы можете захотеть, чтобы ваша полная нода была добавлена в определенный разрешающий список вышестоящей полной ноды (например, другого участника полной ноды в сети Aptos), потому что:

    • Вам могут потребоваться определенные разрешения для вашей полной ноды на этой конкретной вышестоящей полной ноде или

    • Эта вышестоящая полная нода позволяет подключаться к ней только известным идентификациям, или

    • Возможно, вы захотите выдвинуть свою полную ноду для подключения для других полных нод Aptos (для поддержки сети Aptos).

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

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

  • Создать статическую сетевую идентификацию для вашей полной ноды

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

  • Позволить другим полным нодам подключаться к вашей полной ноде

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

Прежде чем продолжить, убедитесь, что вы знаете, как запустить локальную полную ноду. Подробную документацию см. в разделе Запуск полной ноды.

DOCKER ПОДДЕРЖКА ТОЛЬКО НА LINUX

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

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

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

  1. Сначала вы создаете персональный ключ, пару публичных ключей для вашей полной ноды.

  2. Далее вы получаетеpeer_id из публичного ключа.

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

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

  1. Создайте ответвление и клонируйте репозиторий 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 aptos , чтобы создать закрытый статический ключ x25519 в шестнадцатеричном кодировании. Это будет закрытый ключ вашей сетевой идентичности.

ПРИМЕЧАНИЕ

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

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

Из контейнера Dockeraptoslab/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 для создания статической идентификации для вашей полной ноды.

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

После того, как вы сгенерировали открытый ключ идентификации, вы можете запустить полную ноду со статической сетевой идентификацией, используя открытый ключ в поле 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 через вашу ноду.

ПРИМЕЧАНИЕ

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

  • Убедитесь, что вы открыли порт 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"

ПРИМЕЧАНИЕ

Пир ID является синонимом AccountAddress. См. NetworkAddress , чтобы узнать, как конструируется значение ключаaddresses .

Last updated