本文介绍了如何使用@amxx/graphprotocol-utils
包中的graph-compile
工具,为应用程序自动生成定制的 schema 和 manifest 文件。文章通过一个配置示例,演示了如何索引以太坊主网上的多个合约,并使用 OpenZeppelin Subgraphs 提供的模块来简化开发流程,最后介绍了如何使用graph-cli
工具部署 subgraph。
graph-compile
工具作为 @amxx/graphprotocol-utils
包的一部分提供,可用于自动生成为你量身定制的 schema 和 manifest。作为 OpenZeppelin Subgraphs 一部分实现的模块与此兼容。
为了生成 schema 和 manifest,你必须提供要索引的合约的描述。
这是一个配置文件示例,它在主网上索引了 6 个合约:
{
"output": "generated/sample.",
"chain": "mainnet",
"datasources": [\
{ "address": "0xA3B26327482312f70E077aAba62336f7643e41E1", "startBlock": 11633151, "module": [ "erc20", "accesscontrol" ] },\
{ "address": "0xB1C52075b276f87b1834919167312221d50c9D16", "startBlock": 9917641, "module": [ "erc721", "ownable" ] },\
{ "address": "0x799DAa22654128d0C64d5b79eac9283008158730", "startBlock": 9917642, "module": [ "erc721", "ownable" ] },\
{ "address": "0xC76A18c78B7e530A165c5683CB1aB134E21938B4", "startBlock": 9917639, "module": [ "erc721", "ownable" ] },\
{ "address": "0x001d1cd0bcf2e9021056c6fe4428ce15d977cfe0", "startBlock": 11127634, "module": [ "erc1155", "ownable" ] },\
{ "address": "0x3d85004fa4723de6563909fabbcafee509ee6a52", "startBlock": 12322496, "module": [ "timelock", "accesscontrol" ] }\
]
}
每个合约都表示为一个 datasource,具有一个地址、一个(可选)起始区块和一个特性列表。
可以使用以下命令编译此配置文件
npx graph-compiler \
--config sample.json \
--include node_modules/@openzeppelin/subgraphs/src/datasources \
--export-schema \
--export-subgraph
请注意,在我们的示例中,OpenZeppelin Subgraphs 包是使用 NPM 安装的,这意味着模块描述位于 @openzeppelin/subgraphs/src/datasources
中。必须使用 --include
命令添加此路径,以便编译器可以找到它们。
这将生成两个文件,遵循配置文件中提供的 output
参数:
generated/sample.schema.graphql
包含一个为你量身定制的 schema,其中仅包含索引模块所需的实体。
generated/sample.subgraph.yaml
包含 subgraph manifest。
为了将你的 subgraph 部署到托管服务或任何其他 graphnode,你必须首先创建它。此操作记录在此处here。 完成后,你可以使用 graph-cli
工具编译和部署生成的 subgraph:
npx graph-cli codegen generated/sample.subgraph.yaml
npx graph-cli build generated/sample.subgraph.yaml
npx graph-cli deploy \
--ipfs https://api.thegraph.com/ipfs/ \
--node https://api.thegraph.com/deploy/ \
username/subgraphname \
generated/sample.subgraph.yaml
- 原文链接: docs.openzeppelin.com/su...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!