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

... 2022-10-5 Приблизно 2 хв

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

У цьому посібнику описано, як запустити локальний вузол SubQuery на вашій інфраструктурі, який включає в себе як індексатор, так і службу запитів. Не хочете турбуватися про створення власної інфраструктури SubQuery? SubQuery provides a Managed Service (opens new window) to the community for free. Дотримуйтесь нашого посібника з публікації, щоб дізнатися, як завантажити свій проєкт в 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 індексує блокчейн, витягнуті дані зберігаються в зовнішньому екземплярі бази даних.

Вузол SubQuery - це реалізація, яка витягує дані блокчейна на основі Substrate/Polkadot відповідно до проекту SubQuery і зберігає їх в базі даних Postgres.

# Установка

Please note that we **DO NOT** encourage the use of `yarn global` due to its poor dependency management which may lead to an errors down the line. :::

Після встановлення ви можете запустити вузол за допомогою наступної команди:

# Key Commands

The following commands will assist you to complete the configuration of a SubQuery node and begin indexing. Щоб дізнатися більше, ви завжди можете виконати команду --help.

# Вкажіть шлях до локального проекту

# Використовуйте словник

Використання повного ланцюжкового словника може значно пришвидшити обробку проекту SubQuery під час тестування або під час першого індексування. In some cases, we've seen indexing performance increases of up to 10x.

A full chain dictionary pre-indexes the location of all events and extrinsics within the specific chain and allows your node service to skip to relevant locations when indexing rather than inspecting each block.

Ви можете додати кінцеву точку словника у свій файл project.yaml (див. Файл маніфесту) або вказати її під час виконання за допомогою такої команди:

:::інформація Примітка Ви можете прочитати більше про як працює словник підзапитів. :::

# Connect to database

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

# Налагодьте свій проект

Використовуйте інспектор вузлів, щоб виконати наведену нижче команду.

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

Наприклад:

вузол --inspect-brk /usr/local/bin/subql-node -f ~/Code/subQuery/projects/subql-helloworld/
Прослуховування налагоджувача ws://127.0.0.1:9229/56156753-c07d-4bbe-af2d-2c7ff4bcc5ad
Для отримання допомоги див.: https://nodejs.org/en/docs/inspector
Налагоджувач додається.
1
2
3
4

Потім відкрийте інструменти розробника Chrome, перейдіть до «Джерело» > «Файлова система», додайте свій проект у робочу область і почніть налагодження. Щоб отримати додаткові відомості, перегляньте статтю Як налагодити проект SubQuery.

# Запуск служби запитів (subql/query)

# Установка

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

danger Зауважте, що ми НЕ заохочуємо використання yarn global через погане керування залежностями, яке може призвести до помилок у подальшому. :::

# Запуск служби запитів

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

Під час ініціалізації проекту переконайтеся, що ім’я проекту збігається з ім’ям проекту. Також перевірте правильність змінних середовища.

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

Останнє оновлення: October 5, 2022 01:44