The Graph 开发文档介绍

原文作者 :The Graph 基金会翻译 :The Graph 社区成员介绍****本页将解释你需要知道的一切,以便使用 The Graph 的托管服务。首先,让我们描述一下什么是 The Graph,然后解释一下你如何开始使用 ! 什么是 The GraphThe G...

原文作者 :The GraphThe GraphThe Graph

The Graph

The Graph 协议,使用 GraphQL 在以太坊和 IPFS 上快速构建去中心化应用。分布式查询处理在去中心化的网络上,确保数据保持打开状态,无论如何,DApp 都会继续运行下去。开发人员可以部署到他们不必管理也无须信任、值得信赖的公共基础架构上。The GraphGRT查看更多基金会

翻译 :The Graph 社区成员

介绍

****

本页将解释你需要知道的一切,以便使用 The Graph 的托管服务。首先,让我们描述一下什么是 The Graph,然后解释一下你如何开始使用 !

什么是 The Graph

The Graph 是一个去中心化的协议,用于索引和查询区块链的数据,从以太坊开始。它使查询难以直接查询的数据成为可能。

例如,通过流行的 CryptoKitties dApp,可以比较直接地提出以下问题。

一个特定的以太坊账户拥有多少个 CryptoKitty?一个特定的 CryptoKitty 是什么时候产生的?

这是因为这些读取模式直接由合约里面的 balanceOf 和 getKitty 方法所支持。

然而,其他问题则更难回答。

谁是 2018 年 1 月至 2 月间产生的 CryptoKitties 的所有者?

为了回答这个问题,你必须处理所有的 birth events,然后为每个已经产生的 CryptoKitty 调用 ownerOf 方法。

即使对于这个相对简单的问题,在浏览器中运行的去中心化应用程序(dApp)也需要几个小时,甚至几天才能得到答案。对区块链数据进行索引是很难的。区块链属性,如最终性、链重组或未封闭的区块,使这一过程进一步复杂化,并使从区块链数据中检索正确的查询结果不仅耗时,而且在概念上也很困难。

今天,The Graph 通过一个为区块链数据建立索引的托管服务解决了这个问题。这些索引(" 子图 ")可以用标准的 GraphQL API 进行查询。在未来,托管服务将发展成为具有相同功能的完全去中心化的协议。两者都是由 Graph Node的开源实现支持的。

The Graph 如何工作

The Graph 根据子图描述(称为子图清单)来学习什么以及如何索引以太坊数据。子图描述定义了子图感兴趣的智能合约,这些合约中需要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。

一旦你写了一个 subgraph manifest,你就可以使用 Graph CLI 将定义存储在 IPFS 中,并告诉托管服务开始为该子图建立索引数据。

下图更详细地介绍了子图清单部署后的数据流,涉及以太坊交易。

The Graph 开发文档介绍The Graph 开发文档介绍

该流程遵循以下步骤:

  1. 一个去中心化的应用程序通过智能合约上的交易向以太坊添加数据。

  2. 智能合约在处理交易的同时发出一个或多个事件。

  3. Graph Node 持续扫描 Ethereum 的新区块和它们可能包含的你的子图的数据。

  4. Graph Node 在这些区块中为你的子图找到 Ethereum 事件并运行你提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体,以响应 Ethereum 事件。

  5. 去中心化的应用程序使用节点的 GraphQL 端点_(https://graphql.org/learn/)_查询 Graph Node,以获得来自区块链的索引数据。The Graph 节点反过来将 GraphQL 查询转化为对其底层数据存储的查询,以便利用存储的索引功能来获取这些数据。去中心化的应用程序在一个丰富的用户界面中为终端用户显示这些数据,他们用这些数据在以太坊上发布新交易。周而复始。

下一步

在下面的章节中,我们将更详细地介绍如何定义子图,如何部署它们,以及如何从 Graph Node 建立的索引中查询数据。

在你开始编写你自己的子图之前,你可能想看一下 The Graph Explorer,并探索一些已经部署的子图。每个子图的页面都包含一个面板,可以让你用 GraphQL 查询该子图的数据。

当你在 explorer 上时,确保你通过点击在 Github 上注册来创建一个账户。以后当你想部署你的第一个子图时,你将需要这个账户。

0 0 0
分享到:
没有账号?