Skip to content

在Moonbeam上使用Subsquid进行检索

概览

Subsquid是一个数据网络,通过Subsquid的分布式数据湖和开源软件开发工具包(SDK),用户能够快速高效地检索过百个区块链的数据。简单而言,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配置它:

  1. 通过运行以下命令创建基于Substrate模板的Subsquid项目:

    sqd init INSERT_SQUID_NAME --template substrate
    

    有关开始使用此模板的更多信息,请查看Subsquid文档网站上的快速入门:Substrate链指南。

  2. 要配置您的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",
    
  3. 修改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.graphqltypgen.jsonsrc/processor.ts文件来索引项目所需的数据!

索引Moonbeam上的以太坊数据

要开始索引Moonbeam上的EVM数据,您需要创建一个Subsquid项目并按照以下步骤为Moonbeam配置它:

  1. 您可以使用通用EVM 模板为EVM数据创建Subsquid项目,也可以使用ABI模板用于索引与特定合约相关的数据:

    sqd init INSERT_SQUID_NAME --template evm
    
    sqd init INSERT_SQUID_NAME --template abi
    

    有关开始使用这两个模板的更多信息,请查看以下Subsquid文档:

  2. 要配置您的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",
    
  3. 修改src/processor.ts文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从Archive(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的网络相对应的Archive(存档)中提取数据:

    const processor = new EvmBatchProcessor();
    processor.setDataSource({
      chain: 'INSERT_RPC_API_ENDPOINT',
      // Resolves to 'https://moonbeam-evm.archive.subsquid.io'
      archive: lookupArchive('moonbeam', { type: 'EVM' })
    });
    
    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.graphqltypgen.jsonsrc/processor.ts文件来索引项目所需的数据!

如果您对开始索引在Moonbeam上数据的分步教程感兴趣,可以查看使用Subsquid索引在Moonbeam上的NFT代币转账教程!

本网站的所有信息由第三方提供,仅供参考之用。Moonbeam文档网站(https://docs.moonbeam.network/)上列出和描述的任何项目与Moonbeam立场无关。Moonbeam Foundation不保证网站信息的准确性、完整性或真实性。如使用或依赖本网站信息,需自行承担相关风险,Moonbeam Foundation不承担任何责任和义务。这些材料的所有陈述和/或意见由提供方个人或实体负责,与Moonbeam Foundation立场无关,概不构成任何投资建议。对于任何特定事项或情况,应寻求专业权威人士的建议。此处的信息可能会包含或链接至第三方提供的信息与/或第三方服务(包括任何第三方网站等)。这类链接网站不受Moonbeam Foundation控制。Moonbeam Foundation对此类链接网站的内容(包括此类链接网站上包含的任何信息或资料)概不负责也不认可。这些链接内容仅为方便访客而提供,Moonbeam Foundation对因您使用此信息或任何第三方网站或服务提供的信息而产生的所有责任概不负责。
Last update: January 23, 2024
| Created: May 10, 2022