Хостинг проекта с использованием IPFS
# Хостинг проекта с использованием IPFS
В этом руководстве рассказывается, как опубликовать локальный проект SubQuery в IPFS (opens new window) и развернуть его в нашей инфраструктуре хостинга.
Hosting a project in IPFS makes it available for all and reduces your reliance on centralised services like GitHub.
# Требования
@subql/cli
версии 0.21.0 или выше.- Манифест
specVersion
0.2.0 и выше. - Подготовьте свой SUBQL_ACCESS_TOKEN.
- Чтобы обеспечить успешное развертывание, мы настоятельно рекомендуем вам собрать проект с помощью команды
subql build
и протестировать его локально перед публикацией.
# Подготовьте свой SUBQL_ACCESS_TOKEN
- Шаг 1. Перейдите в раздел SubQuery Projects (opens new window) и войдите в систему.
- Шаг 2. Нажмите на свой профиль в правом верхнем углу меню навигации, затем нажмите Refresh Token
- Шаг 3: Скопируйте сгенерированный токен.
- Шаг 4: Чтобы использовать этот токен:
- Вариант 1: Добавьте SUBQL_ACCESS_TOKEN в переменные среды.
EXPORT SUBQL_ACCESS_TOKEN=<token>
- Вариант 2: (последует в скором времени)
subql/cli
будет поддерживать локальное хранение вашего SUBQL_ACCESS_TOKEN.
- Вариант 1: Добавьте SUBQL_ACCESS_TOKEN в переменные среды.
# Как опубликовать проект
Мы предоставляем два способа публикации вашего проекта,
# Вариант 1:
Поскольку у вас уже установлен @subql/cli
, вы можете запустить следующую команду, которая прочитает проект и необходимую информацию из его дефолтного манифеста project.yaml
// Публикуем из корневого каталога вашего проекта
subql publish
// ИЛИ указываем корневую директорию вашего проекта
subql publish -f ~/my-project/
2
3
4
5
# Вариант 2:
В качестве альтернативы предположим, что в вашем проекте есть несколько manifest файлов, например, вы поддерживаете несколько сетей, но используете одно и то же сопоставление и бизнес-логику, а структура проекта выглядит следующим образом:
L projectRoot
L src/
L package.json
L polkadot.yaml (Manifest для Polkadot network)
L kusama.yaml (Manifest для Kusama network)
...
2
3
4
5
6
Вы всегда можете опубликовать проект с выбранным файлом манифеста.
#Это опубликует проект с поддержкой индексации сети Polkadot
subql publish -f ~/my-projectRoot/polkadot.yaml
2
# После публикации
После успешной публикации проекта приведенные ниже логи показывают, что проект был создан в кластере IPFS и вернул свой CID
(идентификатор контента).
Building and packing code... done
Uploading SupQuery project to IPFS
SubQuery Project uploaded to IPFS: QmZ3q7YZSmhwBiot4PQCK3c7Z6HkteswN2Py58gkkZ8kNd //CID
2
3
Обратите внимание на этот CID
. С помощью этого CID
вы можете просматривать свой опубликованный проект как то, что мы называем IPFS Deployment
# IPFS Deployment
Развертывание в IPFS представляет собой независимое и уникальное существование проекта SubQuery в децентрализованной сети. Поэтому любые изменения с кодом в проекте повлияют на его уникальность. Если вам нужно перестроить свою бизнес-логику, например, изменить функцию сопоставления, вы должны повторно опубликовать проект, и CID
изменится.
На данный момент, чтобы просмотреть опубликованный проект, используйте инструмент REST
api, например Postman (opens new window), и используйте метод POST
со следующим примером URL: https://ipfs.subquery.network/ipfs/api/v0/cat?arg=<YOUR_PROJECT_CID>
Вы должны увидеть пример развертывания проекта, как показано ниже:
Это развертывание очень похоже на ваш файл манифеста. Вы можете ожидать эти описательные поля, а конечная точка сети и словаря была удалена, поскольку они не влияли напрямую на результат выполнения проекта.
Те файлы, которые использовались в вашем локальном проекте, также были упакованы и опубликованы в IPFS.
dataSources:
- kind: substrate/Runtime
mapping:
file: ipfs://QmTTJKrMVzCZqmRCd5xKHbKymtQQnHZierBMHLtHHGyjLy
handlers:
- handler: handleBlock
kind: substrate/BlockHandler
- filter:
method: Deposit
module: balances
handler: handleEvent
kind: substrate/EventHandler
- handler: handleCall
kind: substrate/CallHandler
startBlock: 8973820
network:
genesisHash: "0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3"
schema:
file: ipfs://QmTP5BjtxETVqvU4MkRxmgf8NbceB17WtydS6oQeHBCyjz
specVersion: 0.2.0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Запустите свой проект SubQuery в размещенной службе
# Создать проект с развертыванием в IPFS
Вы можете следовать инструкциям по публикации проекта SubQuery, но там, где вы устанавливаете источник развертывания, вы можете выбрать IPFS.
Затем выберите производственный слот, скопируйте и вставьте CID развертывания IPFS (без начального ipfs://
).
Вы должны увидеть развертывание IPFS в разделе предварительного просмотра. И вы можете выбрать сеть, конечные точки словаря и т. д.
После успешного развертывания IPFS deployment в нашей размещенной службе оно должно быть доступно для просмотра в SubQuery Explorer, вы можете получить доступ к службе запросов так же, как и локально.