SuperAPI AI 工具集

the-graph

编程与开发

查看项目

更新于 10-15 23:43

技能介绍

The Graph 是用于查询区块链数据的去中心化索引协议。子图定义要索引哪些智能合约事件、如何转换为实体,并通过 GraphQL API 暴露。协议支持以太坊、Arbitrum、Optimism、Base、Polygon、Avalanche、BSC、Celo、Gnosis 等 40 多个网络。

用途:围绕子图进行开发、编译、部署与查询,把链上事件整理成可查询的实体数据。

主要能力与要点:托管服务已弃用,应改用 Subgraph Studio;映射是 AssemblyScript 而非 TypeScript,编译为 WebAssembly,不支持闭包、可选链、空值合并、Array.map/filter/reduce、JSON.parse、async/await、try/catch。graph-ts 类型(BigInt、BigDecimal、Bytes、Address、ethereum.Event)来自 @graphprotocol/graph-ts,需用构造器并调用 a.plus(b) 等方法做算术。graph codegen 必须在 build 前运行,schema 或 ABI 变更后都要重跑。实体 id 必须为 ID! 映射到 Bytes 或 String,不能用数值类型。Entity.load 返回可空,需显式判空。Subgraph Studio 认证按机器存储于 ~/.graph,CI/CD 每次运行都要重新认证。核心依赖:npm install --save-dev @graphprotocol/graph-cli @graphprotocol/graph-ts。开发流程:graph init --> graph codegen --> graph build --> graph deploy,部署前执行 graph auth --studio <DEPLOY_KEY>,再 graph deploy --studio my-subgraph --version-label v0.1.0。清单中 specVersion: 1.2.0、apiVersion: 0.0.9,startBlock 应设为合约部署区块,事件签名须与 ABI 完全一致。

适用场景:DApp 后端、链上数据分析、DeFi 与 NFT 数据集、需要 GraphQL 查询链上状态的场景。

限制:AssemblyScript 诸多语言特性不可用;查询每次上限 1000 条,skip 最大 5000,深分页需用 id_gt 游标;blockHandler 开销大应少用;callHandler 并非所有网络都支持。完整代码示例、具体费用与平台细节资料未提供。