Запуск SubQuery локально

... 2022-8-10 Приблизительно 2 минут

# Запуск SubQuery локально

В этом руководстве рассказывается как локально запустить ноду SubQuery на вашем устройстве, который включает как индексатор, так и службу запросов. Не хотите беспокоиться о запуске SubQuery на собственном устройстве? SubQuery обеспечивает выделенный сервер (opens new window) для комьюнити бесплатно. Следуйте нашему руководству по публикации, чтобы узнать, как загрузить свой проект в SubQuery Projects (opens new window).

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

Как альтернативное решение это запустить Docker Container, определенный docker-compose.yml файлом. Для нового проекта которой уже был установлен вам не понадобится ничего менять здесь.

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

docker-compose pull && docker-compose up
1

В начале может потребоваться некоторое время для загрузки требующихся пакетов (@subql/node (opens new window), @subql/query (opens new window), Postgres) далее вы увидите запущенную SubQuery ноду.

# Запуск индексатора (subql/node)

Требования:

  • Postgres (opens new window) база данных ( версия 12 или выше). Пока SubQuery node индексируется в блокчейн, извлеченные данные хранятся во внешнем экземпляре базы данных.

Узел SubQuery — это имплементация, которая извлекает данные блокчейна на основе Substrate/Polkadot для проекта SubQuery и сохраняет их в базе данных Postgres.

# Установка

Обратите внимание, что мы НЕ рекомендуем использовать yarn global из-за плохого управления зависимостями, что может привести к ошибкам в дальнейшем.

После установки вы можете запустить ноду с помощью следующей команды:

# Ключевые команды

Следующие команды помогут вам завершить настройку узла SubQuery и начать индексирование. Чтобы узнать больше, вы всегда можете запустить --help.

# Укажите путь к локальному проекту

# Использование Словаря

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

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

Вы можете добавить конечную точку словаря в файл project.yaml (см. Файл манифеста) или указать ее во время выполнения с помощью следующей команды:

Подробнее о том, как работает Словарь SubQuery.

# Подключаемся к базе данных

export DB_USER=postgres
export DB_PASS=postgres
export DB_DATABASE=postgres
export DB_HOST=localhost
export DB_PORT=5432
subql-node -f your-project-path
1
2
3
4
5
6

В зависимости от конфигурации вашей базы данных Postgres (например, другой пароль базы данных), убедитесь, что и индексатор (subql/node), и служба запросов (subql/query) может установить с ним соединение.

# Укажите файл конфигурации

Это укажет узлу запроса файл конфигурации, который может быть в формате YAML или JSON. Посмотрите пример ниже.

subquery: ../../../../subql-example/extrinsics
subqueryName: extrinsics
batchSize:100
localMode:true
1
2
3
4

# Изменить размер пакета выборки блока

subql-node -f your-project-path --batch-size 200

Result:
[IndexerManager] fetch block [203, 402]
[IndexerManager] fetch block [403, 602]
1
2
3
4
5

Когда индексатор впервые индексирует цепочку, выборка отдельных блоков значительно снизит производительность. Увеличение размера пакета для корректировки количества извлекаемых блоков уменьшит общее время обработки. Текущий размер пакета по умолчанию - 100.

# Запуск в локальном режиме

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

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

# Проверьте состояние вашего узла

Есть 2 конечные точки, которые можно использовать для проверки и мониторинга работоспособности работающей ноды SubQuery.

  • Конечная точка проверки работоспособности, которая возвращает простой ответ 200
  • Конечная точка метаданных, которая включает дополнительную аналитику вашей работающей ноды SubQuery

Добавьте это к базовому URL-адресу вашей ноды SubQuery. Например, http: // localhost: 3000 / meta вернет:

{
    "currentProcessingHeight": 1000699,
    "currentProcessingTimestamp": 1631517883547,
    "targetHeight": 6807295,
    "bestHeight": 6807298,
    "indexerNodeVersion": "0.19.1",
    "lastProcessedHeight": 1000699,
    "lastProcessedTimestamp": 1631517883555,
    "uptime": 41.151789063,
    "polkadotSdkVersion": "5.4.1",
    "apiConnected": true,
    "injectedApiConnected": true,
    "usingDictionary": false,
    "chain": "Polkadot",
    "specName": "polkadot",
    "genesisHash": "0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
    "blockTime": 6000
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

http: // localhost: 3000 / health вернет HTTP 200 в случае успеха.

Если индексатор неисправен, будет возвращена ошибка 500. Это часто можно увидеть, когда узел загружается.

{
    "status": 500,
    "error": "Indexer is not healthy"
}
1
2
3
4

Если используется неправильный URL-адрес, будет возвращена ошибка 404: не найден.

{
"statusCode": 404,
"message": "Cannot GET /healthy",
"error": "Not Found"
}
1
2
3
4
5

# Отладить свой проект

Используйте инспектор нод (opens new window) для выполнения следующей команды.

node --inspect-brk <path to subql-node> -f <path to subQuery project>
1

Например:

node --inspect-brk /usr/local/bin/subql-node -f ~/Code/subQuery/projects/subql-helloworld/
Debugger listening on ws://127.0.0.1:9229/56156753-c07d-4bbe-af2d-2c7ff4bcc5ad
Для помощи смотрите: https://nodejs.org/en/docs/inspector 
Прилагается отладчик.
1
2
3
4

Затем откройте инструменты разработчика Chrome, перейдите в Source & # 062; Filesystem, добавьте свой проект в рабочую область и начните отладку. Для получения дополнительной информации, посмотрите Как отладить проект SubQuery (opens new window)

# Запуск службы запросов (subql / query)

# Установка

# NPM
npm install -g @subql/query
1
2

Обратите внимание, что мы ** НЕ ** поддерживаем использование yarn global из-за его плохого управления зависимостями, что может привести к ошибкам в дальнейшем.

# Запуск службы запросов

export DB_HOST=localhost
subql-query --name <project_name> --playground
1
2

Убедитесь, что имя проекта совпадает с именем проекта при инициализации проекта . Также проверьте правильность переменных среды.

После успешного запуска службы subql-query откройте браузер и перейдите по адресу http: // localhost: 3000. Вы должны увидеть игровую площадку GraphQL, отображаемую в проводнике, и схему, готовую к запросу.

Последнее обновление: August 10, 2022 00:49