使用图和子图进行 Web3 数据查询
核心要点
- 了解 LogRocket 的 Galileo AI 如何为您解决最严重的问题 无需注册 The Graph 是一种用于组织区块链数据的索引协议。
- 与发送 RPC 调用的传统方法相比,它使用 GraphQL API 提供对链上信息更轻松的访问。
- 网络用子图组织数据;
- # subgraph.yaml 映射:种类:ethereum/events apiVersion:0.0.5 语言:wasm/assemblescript 实体:- 令牌 - 用户 dataSources.mapping.abis 获取源合约的 ABI 的名称和文件位置。

了解 LogRocket 的 Galileo AI 如何为您解决最严重的问题 无需注册
The Graph 是一种用于组织区块链数据的索引协议。与发送 RPC 调用的传统方法相比,它使用 GraphQL API 提供对链上信息更轻松的访问。
网络用子图组织数据;由社区创建的开源 API,用于从索引器、策展人和委托人检索数据。
在本文中,我们将了解如何使用图和子图进行 Web3 数据查询。
索引器操作网络节点
索引器操作网络节点,这些节点对数据进行索引并为查询提供服务。
由于图网络使用权益证明算法,索引器使用图代币(GRT)来提供索引和查询处理服务。反过来,索引器可以赚取查询费用和索引奖励。
他们根据子图的管理信号选择要索引的子图。使用索引器数据的应用程序可以设置他们想要处理查询的索引器的参数,以及他们对查询费用定价的偏好。
策展人发出高质量的子图信号
策展人通过发出应由图网络索引的子图来组织子图的数据。
他们使用图管理份额(GCS)来做到这一点,这使他们能够在子图上进行相当于投资的投资。
策展人质押 GRT,这使他们能够铸造 GCS。每个子图都有一条联合曲线,它决定了 GRT 的价格与可铸造的股票数量之间的关系。
根据 Graph 的文档,策划被认为是有风险的,只有在彻底研究和调查所涉及的权衡之后才能进行。
委托人通过质押来保护网络
委托人将 GRT 抵押给一个或多个索引器,以帮助保护网络,而无需自己运行节点。
委托人赚取索引器查询费用和奖励的一部分,这取决于索引器和委托人的股份,以及索引器对每个查询收取的价格。
向索引器分配更多权益可以处理更多潜在查询。 The Graph 的文档声称,作为委托人比作为策展人承担的风险更小,因为他们不会因销毁 GCS 股票而受到 GRT 价格波动的影响。
图基金会
Graph 由 Graph 基金会开发和维护。为了确保网络和更大的社区不断改进,基金会向致力于协议基础设施、工具、dApp、子图和社区建设的社区成员分配补助金(称为图补助金)。
三种不同的图形服务
如果您不托管自己的子图,则可以通过三种不同的方式与图进行交互:
Graph Explorer :探索不同的子图并与 Graph 协议交互
:探索不同的子图并与图协议交互 Subgraph Studio :使用以太坊主网创建、管理和发布子图和 API 密钥
:使用以太坊主网托管服务创建、管理和发布子图和 API 密钥:使用以太坊以外的其他网络(例如 Avalanche、Harmony、Fantom 和 Celo)创建、管理和发布子图和 API 密钥
托管服务不需要加密钱包,可以通过 GitHub 帐户使用。 Graph Explorer 和 Subgraph Studio 都会要求您连接 MetaMask 或 Coinbase 等钱包。
在托管服务上创建项目
在托管服务上创建帐户后,单击导航栏上的“我的仪表板”以查看您的仪表板。
单击“添加子图”以创建子图。
为您的子图添加名称和副标题。填写子图的信息后,向下滚动到页面底部并单击“创建子图”。
通过托管服务上的子图设置,我们可以创建项目文件。创建一个新目录,初始化 package.json 并安装依赖项。
mkdir graphrocket cd graphrocket 纱线初始化 -y 纱线添加 -D @graphprotocol/graph-cli @graphprotocol/graph-ts
复制托管服务上项目仪表板上可用的访问令牌。将令牌粘贴到yarn graph auth --product Hosted-service 命令之后。
纱线图验证--产品托管服务 YOURTOKEN
为 TypeScript 和 Git 创建配置文件。
echo '{"extends": "@graphprotocol/graph-ts/types/tsconfig.base.json"}' > tsconfig.json echo '.DS_Store
node_modules' > .gitignore
以太坊区块链上的智能合约公开了应用程序二进制接口(或 ABI)作为客户端应用程序和以太坊区块链之间的接口。我们的子图需要这个。
使用 cURL 下载合约的 ABI 并将其保存到名为 Token.json 的文件中。
卷曲“http://api.etherscan.io/api?module=contract&action=getabi&address=0xe7c29cba93ef8017c7824dd0f25923c38d08065c&format=raw”> Token.json
创建三个项目文件,包括:
