Полная нода с использованием Aptos Source или Docker

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

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

Запускать полные ноды может любой желающий. В этом руководстве объясняется, как настроить публичную полную ноду для подключения к Aptos devnet.

Совет Ваша публичная полная нода будет подключена к Aptos devnet с конечной точкой REST, доступной на вашем компьютере по адресу localhost:8080, если вы следуете настройкам по умолчанию в этом документе. Для подключения к AIT3 или другой сети, убедитесь, что вы заменили всю необходимую информацию.

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

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

Требования к оборудованию

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

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

    • ПРОЦЕССОР( CPU): 8 ядер, 16 процессов (Intel Xeon Skylake или новее).

    • Память: 32 ГБ ОЗУ.

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

    • Процессор: 2 ядра.

    • Память: 4 ГБ ОЗУ.

Требования к хранилищу

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

Подсказка Учитывая, что в настоящее время сброс devnet происходит еженедельно, мы предполагаем, что Aptos не потребуется более нескольких гигабайт памяти. Смотрите канал #devnet-release на Aptos Discord.

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

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

  1. Сборка и запуск aptos-core из исходного кода.

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

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

Метод №1: Сборка и запуск из исходного кода Aptos-core

  1. Клонируйте репозиторий Aptos.

    git clone https://github.com/aptos-labs/aptos-core.git
  2. cd в каталог aptos-core.

    cd aptos-core
  3. Запустите Bash-скрипт scripts/dev_setup.sh, как показано ниже. Это подготовит вашу среду разработчика..

    ./scripts/dev_setup.sh
  4. Обновите текущую среду shell.

    source ~/.cargo/env

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

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

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

  • Содержит правильный genesis blob, который публикуется Aptos devnet.

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

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

7. Убедитесь, что ваш текущий рабочий каталог aptos-core. В Aptos devnet опубликованы файлы genesis.blob и waypoint.txt. Скачайте их:

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

    curl -O https://devnet.aptoslabs.com/genesis.blob
  • Щелкните здесь waypoint и сохраните файл, или выполните приведенную ниже команду в терминале:

    curl -O https://devnet.aptoslabs.com/waypoint.txt

ПОДСКАЗКА Чтобы подключиться к другим сетям, вы можете найти genesis и waypoint здесь -> https://github.com/aptos-labs/aptos-genesis-waypoint.

8. Отредактируйте файл fullnode.yaml в текущем рабочем каталоге следующим образом.

  • Укажите правильный путь к только что загруженному файлу waypoint.txt, отредактировав файл base.waypoint.from_file в файле fullnode.yaml. По умолчанию он указывает на waypoint.txt в текущем рабочем каталоге. Например.

    base:  waypoint:    from_file: "./waypoint.txt"
  • Для ключа genesis_file_location укажите полный путь к файлу genesis.blob. Например:

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

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

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

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

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

ПРИМЕЧАНИЕ В результате будет собран двоичный файл релиза: aptos-core/target/release/aptos-node. Релизные бинарные файлы обычно значительно быстрее отладочных бинарных файлов, но в них отсутствует отладочная информация, полезная для разработки. Чтобы собрать отладочный бинарный файл, отмените флаг --release.

Метод №2: Использование Docker

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

ЗАПУСК APTOS-CORE ЧЕРЕЗ DOCKER В НАСТОЯЩЕЕ ВРЕМЯ ПОДДЕРЖИВАЕТСЯ ТОЛЬКО НА ПРОЦЕССОРАХ X86-64 И НЕ ПОДДЕРЖИВАЕТСЯ НА ПРОЦЕССОРАХ ARM64 (К КОТОРЫМ ОТНОСЯТСЯ MACS M1/M2). В настоящее время мы публикуем только образы docker, совместимые с процессорами x86-64. Если у вас M1/M2 (ARM64) Mac, используйте исходный код Aptos-core. Если поддержка M1/M2 важна для вас, пожалуйста, прокомментируйте и следите за этим вопросом: https://github.com/aptos-labs/aptos-core/issues/1412.

  1. Установите Docker.

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

    mkdir aptos-fullnode && cd aptos-fullnode
  3. Запустите следующий скрипт, чтобы подготовить локальный каталог настроек и данных для Devnet:

    mkdir data && \curl -O https://raw.githubusercontent.com/aptos-labs/aptos-core/devnet/config/src/config/test_data/public_full_node.yaml && \curl -O https://devnet.aptoslabs.com/waypoint.txt && \curl -O https://devnet.aptoslabs.com/genesis.blob

ПОДСКАЗКА Чтобы подключиться к другим сетям, вы можете найти genesis и waypoint здесь -> https://github.com/aptos-labs/aptos-genesis-waypoint.

4. Наконец, запустите полную ноду через docker:

 docker run --pull=always --rm -p 8080:8080 -p 9101:9101 -p 6180:6180 -v $(pwd):/opt/aptos/etc -v $(pwd)/data:/opt/aptos/data --workdir /opt/aptos/etc --name=aptos-fullnode aptoslabs/validator:devnet aptos-node -f /opt/aptos/etc/public_full_node.yaml

Убедитесь, что вы открыли соответствующие порты - 8080, 9101 и 6180, а также вам может понадобиться обновить 127.0.0.1 на 0.0.0.0 в файле public_full_node.yaml - listen_address и api\address.

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

Проверка начальной синхронизации

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

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

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

$ 71000

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

ПРИМЕЧАНИЕ Не страшно, если страница состояния отличается на несколько версий, так как страница состояния не обновляется автоматически.

(Необязательно) Проверьте внешние сетевые подключение

По желанию можно проверить исходящие сетевые подключения. Количество исходящих сетевых подключений должно быть больше 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. Seeds могут мешать вам подключиться к сети. Семенные пиры обсуждаются в разделе Добавление seed пиров восходящего потока.

(Необязательно) Изучите объем реестра Docker

Объем блокчейн-реестра для Aptos devnet можно отслеживать, введя идентификатор хранилища 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

Добавление внешних seed пиров

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

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

Ниже приведены несколько адресов seed пиров, которые можно использовать в файле 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/noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/handshake/0"
            role: "Upstream"
        7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61:
            addresses:
            - "/dns4/pfn1.node.devnet.aptoslabs.com/tcp/6182/noise-ik/7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61/handshake/0"
            role: "Upstream"
        f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b:
            addresses:
            - "/dns4/pfn2.node.devnet.aptoslabs.com/tcp/6182/noise-ik/f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b/handshake/0"
            role: "Upstream"
...

Last updated