mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
交易所 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

如何在以太坊上构建GraphQL API | 区块链研究实验室

收藏
分享
过去,开发人员通过构建自己的集中式索引服务器从区块链中提取数据,将数据存储在数据库中,并通过API进行公开。
这需要大量的工程和硬件资源,并且破坏了分散化所需的重要安全性。
本文将向大家介绍如何在去中心化Web基础架构-区块链数据上轻松部署API。

分散Web基础架构


分布式互联网的构想和发展方向通常称为Web3,Web3通过以下附加功能增强了我们今天所知道的互联网:
  • 去中心化
  • 可验证的
  • 不信任
  • 自我管理
为了实现分散化,协议定义了网络,这些网络提供了一系列数字服务,例如计算,存储,带宽,身份以及其他没有中介的Web基础结构。这些协议通常分布在多个节点(服务器)上,使大部分希望成为网络并提供服务的任何人都能参与。

在图上建立


在本文中,我们还将研究一种这样的协议Graph,以及如何使用以太坊区块链中存储的数据来构建和部署我们自己的GraphQL API。
Graph是一个索引协议,用于查询以太坊等区块链和 IPFS 等网络,任何人都可以构建和发布称为子图的开放API,从而使数据易于访问。

子图定义了您希望通过GraphQL API提供的数据,数据源和数据访问模式。作为一个开发人员可以选择使用一个子已经部署的其他开发人员,或者定义和部署自己的子图,并使用它。
子图由几个主要部分组成:

1. GraphQL模式

GraphQL模式定义您要保存和查询的数据类型/实体,您还可以在架构中定义诸如关系和全文搜索功能之类的配置。

2.子图清单(yaml配置)

清单定义了子图索引的智能合约,它们的ABI,这些合约中要注意的事件以及如何将事件数据映射到Graph Node存储并允许查询的实体。

3. AssemblyScript映射

AssemblyScript映射使您可以保存要使用架构中定义的实体类型建立索引的数据;该图表CLI还使用子图的模式的组合与智能合约的ABI一起产生AssemblyScript类型。

开始建造

现在我们对Graph及其工作原理有了很好的了解,让我们开始编写一些代码。
在本教程中,我们将构建一个子图,用于从Zora智能合约查询NTF数据,实现用于获取NFT及其所有者的查询,并在它们之间建立关系。

先决条件:


为了在本教程中取得成功,您应该在计算机上安装Node.js,我建议您使用NVM或FNM管理Node.js的版本。

在图资源管理器中创建图项目


首先,打开Graph Explorer,然后登录或创建一个新帐户。
接下来,转到仪表板,然后单击“添加子图”以创建一个新的子图。
使用以下属性配置子图:
  • 子图名称-Zoranft子图
  • 字幕-用于查询NFT的子图
  • 可选-填写说明和GITHUB URL属性

使用Graph CLI初始化新的子图


接下来,安装Graph CLI:
$ npm install -g @graphprotocol/graph-cli# or$ yarn global add @graphprotocol/graph-cli
安装Graph CLI后,您可以使用Graph CLIinit命令初始化一个新的子图。
两种方法:
1 从示例子图中
$ graph init --from-example <GITHUB_USERNAME>/<SUBGRAPH_NAME> [<DIRECTORY>]
2 来自现有的智能合约
如果您已经将智能合约部署到以太坊主网或测试网之一,则从该合约初始化新的子图是启动和运行的简便方法。
$ graph init --from-contract <CONTRACT_ADDRESS> \ [--network <ETHEREUM_NETWORK>] \ [--abi <FILE>] \ <GITHUB_USER>/<SUBGRAPH_NAME> [<DIRECTORY>]
在我们的例子中,我们将使用Zora令牌合约,因此我们可以通过使用–from-contract标志传递合约地址来从该合约地址进行初始化:
$ graph init --from-contract 0xabEFBc9fD2F806065b4f3C237d4b59D9A97Bcac7 --network mainnet \--contract-name Token --index-events? Subgraph name › your-username/Zoranftsubgraph? Directory to create the subgraph in › Zoranftsubgraph? Ethereum network › Mainnet? Contract address › 0xabEFBc9fD2F806065b4f3C237d4b59D9A97Bcac7? Contract Name · Token
此命令将根%

广告图片

本文内容来自于网络,如有侵权,烦请联系处理:[email protected]
本站作为开放的资讯分享平台以供学习研究,所有观点仅代表原作者个人观点,绝不代表本站赞同其观点或证实其描述。
本站提醒:投资有风险,入市须谨慎,本内容不作为投资理财建议。
文章链接:https://www.readblocks.com/archives/105197
免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。
相关阅读