The Graph 从零开始:一周内跑通自有子图的实战路径
The Graph 是 Web3 索引层的事实标准,但官方文档跨度较大,新人很容易迷路。本文按真实开发节奏,把从零到上线的流程拆成五个步骤,配上常见坑点与解决办法。
一、环境准备
开发机需要 Node.js 18 与 pnpm 9,再装上官方 CLI:
npm install -g @graphprotocol/graph-cli
做本地调试还要装 Docker,准备好 graph-node + postgres + ipfs 三件套。如果做主网 ETH 上的子图,建议提前在 Binance官网 买一些 ETH 用于支付查询费用,Binance提币 选择 ERC20 网络到 dev 钱包即可。
二、初始化子图
graph init --product hosted-service \
--from-contract 0x... --network mainnet my-subgraph
CLI 会自动抓取合约 ABI 并生成 subgraph.yaml、schema.graphql 与 mapping.ts。新手第一次跑别改太多,先确认能编译过。
三、写映射逻辑
mapping.ts 是用 AssemblyScript 写的(它与 TypeScript 类似但更严格)。最常见的逻辑是把 ERC20 Transfer 事件映射成 Account 与 Transfer 实体。关键技巧:
- 把昂贵的查找(loadInBlock)缓存到局部变量;
- 用
BigInt.fromI32(0)显式声明大整数,避免类型错误; - 调用
entity.save()前 double-check 关联字段。
四、本地调试
用 graph test 跑映射的单元测试,验证给定事件下实体的状态是否正确。然后 graph deploy --node http://localhost:8020 推到本地 graph-node 上,从 GraphiQL 跑几个查询验证。
如果项目涉及与交易所的对账,本地子图可以同时索引 Binance合约 与 Binance现货 的链上结算合约,方便对比中心化平台与链上事件。
五、上主网与维护
经过本地验证后,部署到 The Graph Studio,提交 IPFS hash 后即可 publish 到去中心化网络。建议预留 1-2 周的策展期,让 Indexer 把数据 sync 完整。
上线后接入告警:当某区块同步落后头部超过 100 时自动 ping 你;同时把 Binance充值 入金记录通过日终对账接入子图查询,差异超过 0.1% 立刻发钉钉提醒。
写在最后
第一次部署完整子图大概会消耗 3 个工作日,加上上主网与策展的 4-5 天,从零到上线刚好一周。掌握 ABI 处理、AssemblyScript 类型、本地调试与对账接入这四块能力,团队就拥有了一套属于自己的链上数据中台。