Запуск полной ноды

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

В качестве альтернативы вы можете использовать полные ноды, предоставленные Aptos Labs. Однако эти полные ноды имеют ограничения по скорости, что может помешать вашей деятельности по разработке. Запустив собственную полную ноду, вы можете напрямую синхронизироваться с блокчейном Aptos и избежать таких ограничений скорости.

Полную ноду может запустить кто угодно. В этом руководстве объясняется, как настроить публичную полную ноду для подключения девнету Aptos.

ПОДСКАЗКА

Ваша публичная полная нода будет подключена к девнету Aptos с помощью конечной точки REST, доступной на вашем компьютере на localhost:8080.

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

Прежде чем приступить к работе с этим руководством, ознакомьтесь со следующими разделами:

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

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

Требования к аппаратному обеспечению

Мы рекомендуем следующие аппаратные ресурсы:

  • Для запуска полной ноды, пригодной для массовой эксплуатации:

    • ЦП: 4 ядра (Intel Xeon Skylake или новее)

    • Память: 8GiB RAM

  • Для запуска полной ноды для разработки и тестирования:

    • CPU: 2 ядра

    • Память: 4GiB RAM

Требования к памяти

Объем данных, хранимых Aptos, зависит от истории реестра (длины) блокчейна и количества состояний в цепи (например, учетных записей). Эти значения зависят от нескольких факторов, в том числе от возраста блокчейна, средней скорости транзакций и конфигурации механизма отсечения побочных ветвей реестра.

ПОДСКАЗКА

Учитывая, что в настоящее время девнет восстанавливается на еженедельной основе, по нашим оценкам, Aptos не потребуется больше нескольких GB хранилища.

Настройка полной ноды

Вы можете настроить публичную полную ноду двумя способами:

  1. Используя исходные файлы aptos-core

  2. Используя Docker

В этом документе описывается, как настроить публичную полную ноду, используя оба способа.

Использование исходных файлов Aptos-core

  1. Создайте новое ответвление и клонируйте репозиторий Aptos

  • Создайте ответвление репозитория Aptos Core, щелкнув Fork в правом верхнем углу данной страницы репозитория: https://github.com/aptos-labs/aptos-core

  • Клонируйте ответвление

git clone https://github.com/<YOUR-GITHUB-USERID>/aptos-core

2. Перейдите cd в каталог aptos-core .

cd aptos-core

3. Запустите bash-скрипт scripts/dev_setup.sh , как показано ниже. Это подготовит среду разработки.

./scripts/dev_setup.sh

4. Обновите текущую оболочку среды.

source ~/.cargo/env

Теперь, когда ваша среда разработки готова, вы можете приступить к настройке полной ноды.

5. Проверьте веткуdevnet , используя git checkout --track origin/devnet.

6. Убедитесь, что ваш текущий рабочий каталог - это aptos-core. Скопируйте файл конфигурации YAML изconfig/src/config/test_data/public_full_node.yaml в ваш текущий рабочий каталог. Вы добавите этот файл, чтобы убедиться, что ваша полная нода:

  • содержит корректный blob генезиса, опубликованный Aptos devnet

  • корректно синхронизируется с девнетом, используя файл контрольной точки waypoint.txt , опубликованный девнетом.

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

7. Убедитесь, что вашим текущим рабочим каталогом является aptos-core. Загрузите опубликованные девнетом Aptos файлы genesis.blob и waypoint.txt .

  • Кликните genesis или запустите на вашем терминале данную ниже команду:

wget https://devnet.aptoslabs.com/genesis.blob
  • Кликните waypoint и сохраните файл или запустите на вашем терминале данную ниже команду:

wget https://devnet.aptoslabs.com/waypoint.txt

8. Добавьте файл aptos-core/public_full_node.yaml в ваш рабочий каталог следующим образом. См. пример YAML файла в: docker/compose/public_full_node/public_full_node.yaml.

  • Скопируйте и вставьте содержимое файла waypoint.txt в поле from_config списка waypoint . Например:

$ cat waypoint.txt
0:683990e3bdc1bbf0204fc4a564e07e628229c913c8cc6ad96d8b30f9446233cb

Скопируйте и вставьте вышеуказанное содержимое, как показано ниже:

waypoint:
  from_config: "0:683990e3bdc1bbf0204fc4a564e07e628229c913c8cc6ad96d8b30f9446233cb"
  • Для ключа genesis_file_location укажите полный путь к файлу genesis.blob . Например:

genesis_file_location: "/path/to/aptos-core/genesis.blob"
  • Для ключа data_dir в списке base укажите каталог, где вы хотите хранить базу данных девнета на вашем локальном компьютере. Это может быть где угодно на вашем компьютере. Например, вы можете создать каталог my-full-node/data в своем домашнем каталоге и указать его как:

data_dir: "/path/to/my/homedir/my-full-node/data"

9. Запустите вашу локальную полную ноду, выполнил данную ниже команду:

cargo run -p aptos-node --release -- -f ./public_full_node.yaml

Вы успешно настроили и запустили полную ноду, подключенную к Aptos devnet.

ПРИМЕЧАНИЕ

Это создаст конечный двоичный файл: aptos-core/target/release/aptos-node. Конечные двоичные файлы, как правило, значительно быстрее, чем отладочные двоичные файлы, но в них отсутствует отладочная информация, полезная для разработки. Чтобы создать отладочный двоичный файл, не используйте флаг --release .

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

В этом разделе описывается, как настроить и запустить полную ноду с помощью Docker.

  1. Установите Docker, включая Docker-Compose.

  2. Создайте каталог для вашей публичной полной ноды и перейдите туда cd .

  3. Загрузите следующие файлы конфигурации YAML:

  • Кликните Public FullNode Docker Compose и сохраните файл или запустите следующую команду на своем терминале:

wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/public_full_node/docker-compose.yaml

и

  • Кликните Public FullNode Aptos-core и сохраните файл или запустите следующую команду на своем терминале:

wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/public_full_node/public_full_node.yaml

4. Загрузите файлы genesis.blob и waypoint.txt , опубликованные девнетом Aptos:

  • Кликните на genesis или запустите следующую команду на терминале:

wget https://devnet.aptoslabs.com/genesis.blob
  • Кликните на waypoint и сохраните файл или запустите следующую команду на терминале:

wget https://devnet.aptoslabs.com/waypoint.txt

5. Запустите Docker Compose, выполнив команду:

docker-compose up

Проверьте исправность вашей полной ноды

Проверьте начальную синхронизацию

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

curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_state_sync_version{.*\"synced\"}" | awk '{print $2}'

Эта команда выведет текущую синхронизированную версию вашей ноды. Например:

$ 71000

Сравните синхронизированную версию (например, 71000) с текущей Current Version (последней), показанной на странице Aptos status page. Если ваша нода соответствует текущей версии, она синхронизируется корректно.

ПРИМЕЧАНИЕ

Это нормально, если лист состояния отличается на несколько версий, так как он не обновляется автоматически.

(Опционально) Проверьте исходящие сетевые подключения

При желании вы можете проверить исходящие сетевые подключения. Количество исходящих сетевых подключений должно быть больше 0. Выполните следующую команду:

curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_connections{direction=\"outbound\""

Приведенная выше команда выведет количество исходящих сетевых подключений вашей ноды. Например:

$ curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_connections{direction=\"outbound\""
aptos_connections{direction="outbound",network_id="Public",peer_id="aabd651f",role_type="full_node"} 3

Если количество исходящих подключений равно 0, это означает, что ваша нода не может подключиться к блокчейну Aptos. Если это произойдет, выполните следующие действия, чтобы решить проблему:

  1. Обновите ноду до последней версии, следуя инструкциям по обновлению.

  2. Удалите все seed сид пиры, которые вы могли добавить в ваш файл конфигурации public_full_node.yaml . Сиды могут мешать вам подключиться к сети. Сид пиры обсуждаются в секции Добавление вышестоящих сид пиров.

(Опционально) Проверьте размер реестра Docker

Объем реестра блокчейна для Aptos devnet можно отслеживать, введя ID Docker-контейнера и проверив размер. Это позволит вам увидеть, сколько памяти в настоящее время занимает реестр блокчейна.

  • Сначала запустите на вашем терминале docker container ls и скопируйте NAME вывода поля. Это будет строка, похожая на public_full_node_fullnode_1.

  • Далее запустите эти команды, чтобы проверить размер хранилища, потребляемый реестром, используя поле NAME, которое вы скопировали вместо public_full_node_fullnode_1:

# Obtain the container ID:
id=$(docker container ls | grep public_full_node_fullnode_1 | grep -oE "^[0-9a-zA-Z]+")
# Enter the container:
docker exec -it $id /bin/bash
# Observe the volume (ledger) size:
du -cs -BM /opt/aptos/data

Добавление вышестоящих сид пиров

ПОДСКАЗКА

В сообщениях об ошибках вашей ноды вы можете увидетьNoAvailablePeers. Это нормально при первом запуске ноды. Подождите несколько минут, пока нода запустится, чтобы проверить, подключается ли она к пирам. Если нет, выполните следующие действия:

Девнет валидатора полных нод будет принимать только максимальное количество подключений. Если девнет Aptos испытывает большой объем сетевых подключений, ваша полная нода может не подключиться, а вы можете постоянно видеть NoAvailablePeers в сообщениях об ошибках вашего узла. Если это происходит, добавьте вручную пир адреса в ключ seeds в файле конфигурации полной нодыpublic_full_node.yaml .Это подключит ваш полную ноду к указанному сид пиру.

Ниже приведены несколько сид пир адресов, которые вы можете использовать в вашем файлеpublic_full_node.yaml .

ПОДСКАЗКА

Вы также можете использовать адреса полных нод, предоставленные сообществом Aptos. Любой, кто уже использует полнную ноду, может предоставить вам свой адрес для подключения. См. канал #advertise-full-nodes в Aptos Discord.

Добавьте их в файл конфигурации public_full_node.yaml под вашим discovery_method, как показано в следующем примере:

...
full_node_networks:
    - discovery_method: "onchain"
      # The network must have a listen address to specify protocols. This runs it locally to
      # prevent remote, incoming connections.
      listen_address: ...
      seeds:
        bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a:
            addresses:
            - "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/ln-handshake/0"
            role: "Upstream"
        7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61:
            addresses:
            - "/dns4/pfn1.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61/ln-handshake/0"
            role: "Upstream"
        f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b:
            addresses:
            - "/dns4/pfn2.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b/ln-handshake/0"
            role: "Upstream"
...      

Last updated