New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update subsquid.md #418
Update subsquid.md #418
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -11,7 +11,8 @@ description: 学习如何在Moonbeam和Moonriver上使用Subsquid运行Substrate | |||||
|
||||||
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上索引数据。 | ||||||
本快速指南将向您展示如何使用Subsquid创建Substrate和EVM项目,并将其配置为可以在Moonbeam上索引数据。如果需要更完整的端到端教程,请查看[使用Subsquid索引本地Moonbeam开发节点](/tutorials/integrations/local-subsquid/){target=_blank} | ||||||
|
||||||
|
||||||
--8<-- 'text/_disclaimers/third-party-content-intro.md' | ||||||
|
||||||
|
@@ -21,7 +22,7 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
|
||||||
- [Node.js](https://nodejs.org/en/download/){target=\_blank} 版本16及后续版本 | ||||||
- [Docker](https://docs.docker.com/get-docker/){target=\_blank} | ||||||
- [Squid CLI](https://docs.subsquid.io/squid-cli/installation/){target=\_blank} 版本2.1.0及后续版本 | ||||||
- [Squid CLI](https://docs.subsquid.io/squid-cli/installation/){target=\_blank} | ||||||
|
||||||
!!! 注意事项 | ||||||
squid模板与`yarn`不兼容,因此您需要改用`npm`。 | ||||||
|
@@ -38,37 +39,43 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
|
||||||
有关开始使用此模板的更多信息,请查看Subsquid文档网站上的[快速入门:Substrate链](https://docs.subsquid.io/quickstart/quickstart-substrate/){target=\_blank}指南。 | ||||||
|
||||||
2. 要配置您的Subsquid项目以在Moonbeam上运行,您需要更新`typegen.json`文件。`typegen.json`文件负责为您的数据生成TypeScript接口类。根据您在其上索引数据的网络,`typegen.json`文件中的`specVersions`值应配置如下: | ||||||
2. 导航至Squid项目的根目录并运行以下命令安装依赖项: | ||||||
|
||||||
```bash | ||||||
npm ci | ||||||
``` | ||||||
|
||||||
3. 要配置您的Subsquid项目以在Moonbeam上运行,您需要更新`typegen.json`文件。`typegen.json`文件负责为您的数据生成TypeScript接口类。根据您在其上索引数据的网络,`typegen.json`文件中的`specVersions`值应配置如下: | ||||||
|
||||||
=== "Moonbeam" | ||||||
|
||||||
```json | ||||||
"specVersions": "https://moonbeam.archive.subsquid.io/graphql", | ||||||
"specVersions": "https://v2.archive.subsquid.io/network/moonbeam-mainnet", | ||||||
``` | ||||||
|
||||||
=== "Moonriver" | ||||||
|
||||||
```json | ||||||
"specVersions": "https://moonriver.archive.subsquid.io/graphql", | ||||||
"specVersions": "https://v2.archive.subsquid.io/network/moonriver-mainnet", | ||||||
``` | ||||||
|
||||||
=== "Moonbase Alpha" | ||||||
|
||||||
```json | ||||||
"specVersions": "https://moonbase.archive.subsquid.io/graphql", | ||||||
"specVersions": "https://v2.archive.subsquid.io/network/moonbase-testnet", | ||||||
``` | ||||||
|
||||||
3. 修改`src/processor.ts`文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从[Archive](https://docs.subsquid.io/archives/overview/){target=\_blank}(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的网络相对应的Archive(存档)中提取数据: | ||||||
4. 修改`src/processor.ts`文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从[Archive](https://docs.subsquid.io/archives/overview/){target=\_blank}(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的[网络](https://docs.subsquid.io/substrate-indexing/supported-networks/){target=_blank}相对应的Archive(存档)中提取数据: | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
=== "Moonbeam" | ||||||
|
||||||
```js | ||||||
const processor = new SubstrateBatchProcessor(); | ||||||
processor.setDataSource({ | ||||||
chain: '{{ networks.moonbeam.rpc_url }}', | ||||||
// Resolves to 'https://moonbeam.archive.subsquid.io' | ||||||
archive: lookupArchive('moonbeam', { type: 'Substrate' }), | ||||||
}); | ||||||
// Resolves to 'https://v2.archive.subsquid.io/network/moonbeam-mainnet' | ||||||
archive: lookupArchive('moonbeam', {type: 'Substrate', release: 'ArrowSquid'}), | ||||||
}) | ||||||
``` | ||||||
|
||||||
=== "Moonriver" | ||||||
|
@@ -77,8 +84,9 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
const processor = new SubstrateBatchProcessor(); | ||||||
processor.setDataSource({ | ||||||
chain: '{{ networks.moonriver.rpc_url }}', | ||||||
// Resolves to 'https://moonriver.archive.subsquid.io' | ||||||
archive: lookupArchive('moonriver', { type: 'Substrate' }), | ||||||
// Resolves to 'https://v2.archive.subsquid.io/network/moonriver-mainnet' | ||||||
archive: lookupArchive('moonriver', {type: 'Substrate', release: 'ArrowSquid'}), | ||||||
}) | ||||||
}); | ||||||
``` | ||||||
|
||||||
|
@@ -88,12 +96,32 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
const processor = new SubstrateBatchProcessor(); | ||||||
processor.setDataSource({ | ||||||
chain: '{{ networks.moonbase.rpc_url }}', | ||||||
// Resolves to 'https://moonbase.archive.subsquid.io' | ||||||
archive: lookupArchive('moonbase', { type: 'Substrate' }), | ||||||
// Resolves to 'https://v2.archive.subsquid.io/network/moonbase-testnet' | ||||||
archive: lookupArchive('moonbase', {type: 'Substrate', release: 'ArrowSquid'}), | ||||||
}) | ||||||
}); | ||||||
``` | ||||||
|
||||||
这就是配置Subsquid项目以索引Moonbeam上的Substrate数据所需要做的全部工作!现在您可以更新`schema.graphql`、`typgen.json`和`src/processor.ts`文件来索引项目所需的数据! | ||||||
!!! note | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
--8<-- 'text/_common/endpoint-setup.md' | ||||||
|
||||||
5. 接下来我们还需要微调一下模板。Subsquid Substrate模板配置为处理Substrate账户类型,但 Moonbeam使用的是以太坊风格账户。`src/main.ts` 文件中的 `getTransferEvents` 函数迭代所有由 `processor.ts` 注入的事件,并将相关的 `transfer` 事件存储在数据库中。在 `getTransferEvents` 函数中,请移除 `from` 和 `to` 字段的ss58编码。在未修改的Substrate模板中,`from` 和 `to` 字段使用 ss58 编码如下所示: | ||||||
|
||||||
```ts | ||||||
from: ss58.codec('kusama').encode(rec.from), | ||||||
to: ss58.codec('kusama').encode(rec.to), | ||||||
``` | ||||||
|
||||||
移除ss58编码后,相应的行如下: | ||||||
|
||||||
```ts | ||||||
from: rec.from, | ||||||
to: rec.to, | ||||||
``` | ||||||
|
||||||
这就是配置Subsquid项目以索引Moonbeam上的Substrate数据所需要做的全部工作!现在您可以更新`schema.graphql`、`typgen.json`和`src/processor.ts`文件来索引项目所需的数据!接下来,按照 [运行索引器](#run-your-indexer)部分中的步骤运行您的索引器并查询您的Squid。 | ||||||
|
||||||
|
||||||
|
||||||
## 索引Moonbeam上的以太坊数据 {: #index-ethereum-contracts } | ||||||
|
||||||
|
@@ -118,37 +146,23 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
- [快速入门:EVM链](https://docs.subsquid.io/quickstart/quickstart-ethereum/){target=\_blank} | ||||||
- [快速入门:从ABI生成](https://docs.subsquid.io/quickstart/quickstart-abi/){target=\_blank} | ||||||
|
||||||
2. 要配置您的Subsquid项目以在Moonbeam上运行,您需要更新`typegen.json`文件。`typegen.json`文件负责为您的数据生成TypeScript接口类。根据您在其上索引数据的网络,`typegen.json`文件中的`specVersions`值应配置如下: | ||||||
|
||||||
=== "Moonbeam" | ||||||
|
||||||
```json | ||||||
"specVersions": "https://moonbeam.archive.subsquid.io/graphql", | ||||||
``` | ||||||
|
||||||
=== "Moonriver" | ||||||
|
||||||
```json | ||||||
"specVersions": "https://moonriver.archive.subsquid.io/graphql", | ||||||
``` | ||||||
2. 导航到您的Squid项目的根目录并通过运行以下命令安装依赖项: | ||||||
|
||||||
=== "Moonbase Alpha" | ||||||
|
||||||
```json | ||||||
"specVersions": "https://moonbase.archive.subsquid.io/graphql", | ||||||
``` | ||||||
```bash | ||||||
npm ci | ||||||
``` | ||||||
|
||||||
3. 修改`src/processor.ts`文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从[Archive](https://docs.subsquid.io/archives/overview/){target=\_blank}(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的网络相对应的Archive(存档)中提取数据: | ||||||
3. 修改`src/processor.ts`文件,squid在该文件中实例化处理器、配置处理器并附加处理函数。处理器从[Archive](https://docs.subsquid.io/archives/overview/){target=\_blank}(一个专门的数据湖)中获取历史链上数据。您需要将处理器配置为从与您索引数据的[网络](https://docs.subsquid.io/evm-indexing/supported-networks/){target=_blank}相对应的Archive(存档)中提取数据: | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
=== "Moonbeam" | ||||||
|
||||||
```js | ||||||
const processor = new EvmBatchProcessor(); | ||||||
processor.setDataSource({ | ||||||
chain: '{{ networks.moonbeam.rpc_url }}', | ||||||
// Resolves to 'https://moonbeam-evm.archive.subsquid.io' | ||||||
// Resolves to 'https://v2.archive.subsquid.io/network/moonbeam-mainnet' | ||||||
archive: lookupArchive('moonbeam', { type: 'EVM' }) | ||||||
}); | ||||||
}) | ||||||
``` | ||||||
|
||||||
=== "Moonriver" | ||||||
|
@@ -157,9 +171,9 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
const processor = new EvmBatchProcessor(); | ||||||
processor.setDataSource({ | ||||||
chain: '{{ networks.moonriver.rpc_url }}', | ||||||
// Resolves to 'https://moonriver-evm.archive.subsquid.io' | ||||||
// Resolves to 'https://v2.archive.subsquid.io/network/moonriver-mainnet' | ||||||
archive: lookupArchive('moonriver', { type: 'EVM' }), | ||||||
}); | ||||||
}) | ||||||
``` | ||||||
|
||||||
=== "Moonbase Alpha" | ||||||
|
@@ -168,12 +182,63 @@ Subsquid为以太坊虚拟机(EVM)和Substrate数据均提供原生的完整 | |||||
const processor = new EvmBatchProcessor(); | ||||||
processor.setDataSource({ | ||||||
chain: '{{ networks.moonbase.rpc_url }}', | ||||||
// Resolves to 'https://moonbase-evm.archive.subsquid.io' | ||||||
// Resolves to 'https://v2.archive.subsquid.io/network/moonbase-testnet' | ||||||
archive: lookupArchive('moonbase', { type: 'EVM' }), | ||||||
}); | ||||||
}) | ||||||
``` | ||||||
|
||||||
这就是配置Subsquid项目以索引Moonbeam上的EVM数据所需要做的全部工作!现在您可以更新`schema.graphql`、`typgen.json`和`src/processor.ts`文件来索引项目所需的数据! | ||||||
!!! note | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
--8<-- 'text/_common/endpoint-setup.md' | ||||||
|
||||||
这就是配置Subsquid项目以索引Moonbeam上的EVM数据所需要做的全部工作!现在您可以更新`schema.graphql`、`typgen.json`和`src/processor.ts`文件来索引项目所需的数据!接下来继续执行以下部分以运行您的索引器并查询您的Squid。 | ||||||
|
||||||
## 运行索引器 {: #run-your-indexer } | ||||||
|
||||||
以下步骤适用于Substrate和EVM索引器。正确配置后,运行Subsquid索引器只需几个步骤: | ||||||
|
||||||
1. 启动Postgres: | ||||||
|
||||||
```bash | ||||||
sqd up | ||||||
``` | ||||||
|
||||||
2. 检查并运行处理器: | ||||||
|
||||||
```bash | ||||||
sqd process | ||||||
``` | ||||||
|
||||||
3. 在同一目录中打开另一个终端窗口,然后启动 GraphQL 服务器: | ||||||
|
||||||
```bash | ||||||
sqd serve | ||||||
``` | ||||||
|
||||||
4. 您可以使用以下示例查询模板Substrate或EVM Squid。如果您修改了Squid模板以索引不同的数据,则需要相应地修改查询语句。 | ||||||
|
||||||
=== "Substrate索引器" | ||||||
|
||||||
```graphql | ||||||
query MyQuery { | ||||||
accountsConnection(orderBy: id_ASC) { | ||||||
totalCount | ||||||
} | ||||||
} | ||||||
``` | ||||||
|
||||||
=== "EVM索引器" | ||||||
|
||||||
```graphql | ||||||
query MyQuery { | ||||||
burns(orderBy: value_DESC) { | ||||||
address | ||||||
block | ||||||
id | ||||||
txHash | ||||||
value | ||||||
} | ||||||
} | ||||||
``` | ||||||
|
||||||
如果您对开始索引在Moonbeam上数据的分步教程感兴趣,可以查看[使用Subsquid索引在Moonbeam上的NFT代币转账](/tutorials/integrations/nft-subsquid){target=\_blank}教程! | ||||||
|
||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.