在Moonbeam上使用Subsquid进行检索¶
概览¶
Subsquid是基于Substrate的区块链所使用的一种检索节点框架。简单而言,Subsquid可以被当成一个包含GraphQL服务器的ETL(Extract-Transform-Load,数据提取、转换与加载)工具,提供全面的筛选、分页甚至是全文字搜索等服务。
Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整支持。由于Moonbeam是一个基于Substrate的EVM兼容的智能合约平台,Subsquid可用于索引EVM的和基于Substrate的数据。Subsquid提供了一个Substrate Archive和Processor,还有一个EVM Archive和Processor。 Substrate Archive和Processor可用于索引Substrate和EVM数据。这使得开发者在单个项目中可以从任何Moonbeam网络中提取链上数据并处理EVM记录和Substrate实体(事件、extrinsics和储存项),并利用单个GraphQL端点提供搜索结果的相关数据。如果你只想索引EVM数据,推荐使用EVM Archive和Processor。
本指南将向您展示如何使用Subsquid创建Substrate和EVM项目,并将其配置为可以在Moonbeam上索引数据。
此处提供的信息仅供参考,由第三方提供。 Moonbeam文档网站(https://docs.moonbeam.network/)上列出和描述的任何项目与Moonbeam立场无关。
查看先决条件¶
要顺利运行Squid项目,您需要安装以下软件:
注意事项
squid模板与yarn
不兼容,因此您需要改用npm
。
索引Moonbeam上的Substrate数据¶
要开始索引Moonbeam上的Substrate数据,您需要创建一个Subsquid项目并按照以下步骤为Moonbeam配置它:
-
通过运行以下命令创建基于Substrate模板的Subsquid项目:
sqd init <insert-squid-name> --template substrate
有关开始使用此模板的更多信息,请查看Subsquid文档网站上的快速入门:Substrate链指南。
-
要配置您的Subsquid项目以在Moonbeam上运行,您需要更新
typegen.json
文件。typegen.json
文件负责为您的数据生成TypeScript接口类。根据您在其上索引数据的网络,typegen.json
文件中的specVersions
值应配置如下:"specVersions": "https://moonbeam.archive.subsquid.io/graphql",
"specVersions": "https://moonriver.archive.subsquid.io/graphql",
"specVersions": "https://moonbase.archive.subsquid.io/graphql",
-
修改
src/processor.ts
文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从Archive(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的网络相对应的Archive(存档)中提取数据:const processor = new SubstrateBatchProcessor(); processor.setDataSource({ chain: INSERT_RPC_API_ENDPOINT, // Resolves to "https://moonbeam.archive.subsquid.io" archive: lookupArchive("moonbeam", { type: "Substrate" }), });
const processor = new SubstrateBatchProcessor(); processor.setDataSource({ chain: INSERT_RPC_API_ENDPOINT, // Resolves to "https://moonriver.archive.subsquid.io" archive: lookupArchive("moonriver", { type: "Substrate" }), });
const processor = new SubstrateBatchProcessor(); processor.setDataSource({ chain: https://rpc.api.moonbase.moonbeam.network, // Resolves to "https://moonbase.archive.subsquid.io" archive: lookupArchive("moonbase", { type: "Substrate" }), });
这就是配置Subsquid项目以索引Moonbeam上的Substrate数据所需要做的全部工作!现在您可以更新schema.graphql
、typgen.json
和src/processor.ts
文件来索引项目所需的数据!
索引Moonbeam上的以太坊数据¶
要开始索引Moonbeam上的EVM数据,您需要创建一个Subsquid项目并按照以下步骤为Moonbeam配置它:
-
您可以使用通用EVM 模板为EVM数据创建Subsquid项目,也可以使用ABI模板用于索引与特定合约相关的数据:
sqd init <insert-squid-name> --template evm
sqd init <insert-squid-name> --template abi
有关开始使用这两个模板的更多信息,请查看以下Subsquid文档:
-
要配置您的Subsquid项目以在Moonbeam上运行,您需要更新
typegen.json
文件。typegen.json
文件负责为您的数据生成TypeScript接口类。根据您在其上索引数据的网络,typegen.json
文件中的specVersions
值应配置如下:"specVersions": "https://moonbeam.archive.subsquid.io/graphql",
"specVersions": "https://moonriver.archive.subsquid.io/graphql",
"specVersions": "https://moonbase.archive.subsquid.io/graphql",
-
修改
src/processor.ts
文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从Archive(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的网络相对应的Archive(存档)中提取数据:=== "Moonbea m"
const processor = new EvmBatchProcessor(); processor.setDataSource({ chain: INSERT_RPC_API_ENDPOINT, // Resolves to "https://moonbeam-evm.archive.subsquid.io" archive: lookupArchive("moonbeam", { type: "EVM" }) });
=== "Moonriv er"
const processor = new EvmBatchProcessor(); processor.setDataSource({ chain: INSERT_RPC_API_ENDPOINT, // Resolves to "https://moonriver-evm.archive.subsquid.io" archive: lookupArchive("moonriver", { type: "EVM" }), });
const processor = new EvmBatchProcessor(); processor.setDataSource({ chain: https://rpc.api.moonbase.moonbeam.network, // Resolves to "https://moonbase-evm.archive.subsquid.io" archive: lookupArchive("moonbase", { type: "EVM" }), });
这就是配置Subsquid项目以索引Moonbeam上的EVM数据所需要做的全部工作!现在您可以更新schema.graphql
、typgen.json
和src/processor.ts
文件来索引项目所需的数据!
如果您对开始索引在Moonbeam上数据的分步教程感兴趣,可以查看使用Subsquid索引在Moonbeam上的NFT代币转账教程!
| Created: May 10, 2022