世界杯竞猜项目Dapp-第四章(subgraph)

subgraph 是什么

subgraph 索引协议作为 Dapp 领域最重要的基建之一(如 uniswap、wave 等都在使用),主要用来做链上数据索引,即在链下对链上事件进行捕捉(扫链、计算、存储),然后可对存储下来的数据进行相关读操作,其关键总结为三点:

  • 通过链下监听事件,逻辑处理,然后存储到数据库中,供前端调用;
  • 常用于统计历史信息及变化,仅做展示相关,可以节约链上存储成本,且响应更快;
  • 请求 subgraph 时使用专门的 graphql 语言,而非 sql;

原理

  • 用户从合约侧发起交易;
  • 合约发送事件;
  • 由 subgraph 监听到该事件,并在内部执行逻辑(根据实际业务需求自定义),处理后入库;
  • 用户(前端)从 subgraph 的数据库中读取数据,完成展示;
    世界杯竞猜项目Dapp-第四章(subgraph)_第1张图片

使用方式

  • the graph 官方提供的去中心化网络:subgraph studio(需要 token 支持,请自行尝试)
  • 也可搭建本地 graph node,先下载其环境到本地:
git clone https://github.com/graphprotocol/graph-node/

这里对 graph node 与 subgraph 关系进行说明,在 graph node 上可以部署多个 subgraph,每个 subgraph 可以服务多个不同的项目。

创建 subgraph

// 安装 subgraph
npm install -g  @graphprotocol/graph-cli
// 初始化
graph init

具体选项跟随引导程序填写,选择:网络 -> 名称 -> 合约地址 -> 合约名字,引导程序会自动在网络上拉取 ABI(前提是我们 verify 了,否则需要自己填写)
世界杯竞猜项目Dapp-第四章(subgraph)_第2张图片
subgraph 项目结构
世界杯竞猜项目Dapp-第四章(subgraph)_第3张图片

配置修改

增加扫块起点 startBlock 为当前合约所部署的块,如果不增加,则从最初块开始扫,效率低
世界杯竞猜项目Dapp-第四章(subgraph)_第4张图片

你可能感兴趣的:(区块链,世界杯竞猜Dapp,区块链,graphql)