SubQuery开发者指南丨清单文件(Manifest File)
Manifest project.yaml 文件可以被看作是项目的入口,它定义了关于 SubQuery 如何索引和转换链数据的大部分细节。
Manifest 可以是 YAML 或 JSON 格式。 在本文档中,我们将在所有示例中使用 YAML格式。 以下是一个基本 project.yaml 的标准示例。
specVersion: "0.0.1"
description: ""
repository: "https://github.com/subquery/subql-starter"
schema: "./schema.graphql"
network:
endpoint: "wss://polkadot.api.onfinality.io/public-ws"
# Optionally provide the HTTP endpoint of a full chain dictionary to speed up processing
dictionary: "https://api.subquery.network/sq/subquery/dictionary-polkadot"
dataSources:
- name: main
kind: substrate/Runtime
startBlock: 1
mapping:
handlers:
- handler: handleBlock
kind: substrate/BlockHandler
- handler: handleEvent
kind: substrate/EventHandler
filter: #Filter is optional but suggested to speed up event processing
module: balances
method: Deposit
- handler: handleCall
kind: substrate/CallHandler
network.endpoint 定义了要编入索引的区块链的 wss 或 ws 端点——这必须是一个完整的存档节点。
network.dictionary 选择性地提供完整链字典的 HTTP 端点以加快处理速度 - 点击链接:
https://doc.subquery.network/tutorials_examples/dictionary.html 查看 SubQuery 字典的工作原理。dataSources 定义了将被过滤和提取的数据,以及要应用的数据转换的映射函数处理程序的位置。
Kind 目前只支持 substrate/Runtime
startBlock 详细说明了开始索引的块高度。
filter 将根据网络端点规范名称过滤要执行的数据源,请参阅网络过滤器:
https://doc.subquery.network/create/manifest.html#network-filtersmapping.handlers 将列出所有映射函数及其相应的处理程序类型
(https://doc.subquery.network/create/mapping.html),
以及额外的映射过滤器
(https://doc.subquery.network/create/manifest.html#mapping-filters)。
网络过滤器(Network Filters)
用户可以在 dataSources 命令上添加 filter 命令来决定在网络上运行哪个数据源。
下面的示例显示了 Polkadot 和 Kusama 网络的不同数据源。
...
network:
endpoint: "wss://polkadot.api.onfinality.io/public-ws"
#Create a template to avoid redundancy
definitions:
mapping: &mymapping
handlers:
- handler: handleBlock
kind: substrate/BlockHandler
dataSources:
- name: polkadotRuntime
kind: substrate/Runtime
filter: #Optional
specName: polkadot
startBlock: 1000
mapping: *mymapping #use template here
- name: kusamaRuntime
kind: substrate/Runtime
filter:
specName: kusama
startBlock: 12000
mapping: *mymapping # can reuse or change
映射过滤器(Mapping Filters)
Mapping filters 是一个非常有用的功能,它可以决定什么块、事件或外在因素会触发映射处理程序。
只有满足过滤条件的传入数据才会被映射函数处理。 映射过滤器是选择性使用的,但我们建议使用,因为它们会显着减少 SubQuery 项目处理的数据量并提高索引性能。
#Example filter from callHandler
filter:
module: balances
method: Deposit
success: true
下表说明了不同处理程序支持的过滤器。
处理程序 | 支持的过滤器 |
BlockHandler | specVersion |
EventHandler | module,method |
CallHandler | module,method ,success |
任何基于底层的链都支持 module 和 method filters。
success filter 采用布尔值,可用于按成功状态过滤外在因素。
specVersion filter 指定了substrate 区块的spec 版本范围。以下示例描述如何设置版本范围。
filter:
specVersion: [23, 24] #Index block with specVersion in between 23 and 24 (inclusive).
specVersion: [100] #Index block with specVersion greater than or equal 100.
specVersion: [null, 23] #Index block with specVersion less than or equal 23.
定制链
(Custom Chains)
您还可以通过在 project.yaml 中加入链类型来索引自定义链中的数据。 在 network.types 中声明此区块链支持的特定类型。 我们支持底层运行模块时使用的其他类型。
我们还支持 typesAlias、typesBundle、typesChain 和 typesSpec。
Website:
https://www.subquery.network/
Telegram:
https://t.me/subquerynetwork
Twitter:
https://twitter.com/subquerynetwork
Medium:
https://subquery.medium.com/
Github:
https://github.com/subquery/subql
Matrix:
https://matrix.to/#/#subquery:matrix.org
Linkedin:
https://www.linkedin.com/company/subquery
Mixin:
https://subquery.mixinbots.com/join
往期精彩
《SubQuery View : Astar 会是波卡生态的 DApp 中心枢纽吗?》
《战略合作丨Karura 与 SubQuery 合作,为 Kusama Builders 提供 DeFi 数据》
《SubQuery 联合 Moonbeam ,共同致力于波卡生态的发展》
《SubQuery对话Phala,打造Web 3.0共享云生态》
《SubQuery开发者指南丨Hello World Explained》
《战略合作丨SORA 与 SubQuery 合作向 SORA 网络提供数据》
《SubQuery开发者指南丨Hello World (由SubQuery 托管)》
《战略合作丨SubQuery为Subscan的多重签名工具提供支持》
《SubQuery丨从竞拍者到支持者,Bifrost如何用SALP协议助力插槽竞拍》
《SubQuery 开发者指南丨安装 SubQuery》
《SubQuery获得900万美元融资,由Arrington Capital、DCG和Stratos Technologies领投》
《SubQuery对话Litentry:未来已来,元宇宙世界里你需要的是什么?》
《SubQuery开发者指南丨创建一个SubQuery项目》
《SubQuery丨2021年8月回顾》
《战略合作丨SubQuery支持DotMarketCap 2.0发布》
《SubQuery丨带你走进进化星球的世界》