Сетевая идентификация для Полной ноды

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

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

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

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

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

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

В этом руководстве вы узнаете, как:

  • Создать статический сетевой идентификатор для своей ноды.

  • Запустить ноду со статическим сетевым идентификатором.

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

Прежде чем приступить к работе

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

ПОДДЕРЖКА DOCKER ТОЛЬКО НА LINUX В настоящее время хранилище Docker поддерживается только на платформе Linux x86-64. Если вы работаете на платформе macOS или Windows, используйте исходный код Aptos-core.

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

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

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

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

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

Выполните следующие подробные действия:

  1. Подготовка

    Использование исходного кода Aptos-core

    Клонируйте репозиторий aptos-labs/aptos-core. Например:

    git clone https://github.com/aptos-labs/aptos-core.gitcd aptos-core./scripts/dev_setup.shsource ~/.cargo/env

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

    В качестве альтернативы, если вы работаете на базе Linux x86-64, вы можете использовать образ Aptos Docker. cd перейдите в каталог для вашей локальной публичной полной ноды и запустите контейнер Docker с последними инструментами, например:

    cd ~/my-full-nodedocker run -it aptoslabs/tools:devnet /bin/bash
  2. Сгенерируйте закрытый ключ

    Использование исходного кода Aptos-core

    Запустите 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 aptoslabs/tools. Откройте новый терминал и cd перейдите в каталог, в котором вы запустили хранилище Docker для вашей полной ноды. Убедившись, что вы указали полный путь к месту хранения TXT-файла закрытого ключа, выполните команду, как показано ниже:

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

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

Использование исходного кода Aptos-core

ОБЯЗАТЕЛЬНО: ИНФОРМАЦИЯ О ХОСТЕ Используйте флаг --host для предоставления информации о хосте, чтобы вывести сетевой адрес для полной ноды.

aptos key extract-peer --host example.com:6180 \
    --public-network-key-file private-key.txt.pub \
    --output-file peer-info.yaml

что приведет к следующему результату:

{
  "Result": {
    "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813": {
      "addresses": [
        "/dns/example.com/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"
      ],
      "keys": [
        "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
      ],
      "role": "Upstream"
    }
  }
}

или

aptos key extract-peer --host 1.1.1.1:6180 \
    --public-network-key-file private-key.txt.pub \
    --output-file peer-info.yaml

что приведет к следующему результату:

{
  "Result": {
    "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813": {
      "addresses": [
        "/ip4/1.1.1.1/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"
      ],
      "keys": [
        "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
      ],
      "role": "Upstream"
    }
  }
}

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

Выполните те же вышеуказанные команды для извлечения пира из хранилища aptoslabs/tools Docker. Например:

aptos key extract-peer --host 1.1.1.1:6180 \
    --public-network-key-file /path/to/private-key.txt.pub \
    --output-file /path/to/peer-info.yaml

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

Пример вывода peer-info.yaml для --host example.com:6180:

---
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
  addresses: ["/dns/example.com/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"]
  keys:
    - "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
role: Upstream

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

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

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

  • Поделитесь своим статическим сетевым идентификатором полной нодой с другими. Затем они смогут использовать его в seed key своего файла fullnode.yaml для подключения к вашей полной ноде.

  • Убедитесь, что номер порта, который вы указали в адресах, совпадает с номером порта в файле конфигурации полной ноды fullnode.yaml (например, 6180 или 6182).

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

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

Например:

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

ПОДСКАЗКА Peer ID является синонимом AccountAddress. См. раздел NetworkAddress, чтобы узнать, как строится значение ключа Address.

Last updated