官方文档: https://thegraph.com/docs/zh/quick-start/
简介
The Graph 可以干什么,记录区块链上数据,以前都要有个后端服务和数据库,维护和开发成本大,使用The Graph,方便快捷节省成本
部署
核心: the graph node,将合约的事件索引,存入数据库
自己部署 TheGraphNode rust 实现 ,依赖IPFS,postgrest, geth 归档节点
火币部署文档
使用
合约部署
以一个ERC20代币的合约为例:
// SPDX-License-Identifier: agpl-3.0pragma solidity 0.8.0;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/access/Ownable.sol";contract MockToken is ERC20 {string internal NAME = "Mock Token";string internal SYMBOL = "MT";uint256 internal constant TOTAL_SUPPLY = 1e28;uint8 public decimal;constructor(uint8 _decimal) public ERC20(NAME, SYMBOL) {_mint(msg.sender, TOTAL_SUPPLY);decimal = _decimal;}function decimals() public view override returns (uint8) {return decimal;}}
将这个合约部署在mumbai测试网上
部署的地址是: https://mumbai.polygonscan.com/address/0x011c747be9439031b5f3f52ebff12c3109f03aa6
并做一笔转账交易,后面我们将通过graph来索引并查询到这笔转账交易。
graph 创建
打开graph studio 后台
https://thegraph.com/studio/
![[Pasted image 20240305144447.png]]
选择Add Subgraph
填上Subgraph Name, 点击最下方的创建即可
![[Pasted image 20240305144615.png]]
接下来就是我们创建好的样子了:
![[Pasted image 20240305145425.png]]
graph 配置
按照上述命令在本地进行graph 安装配置,先进行安装
![[Pasted image 20240305145801.png]]
执行初始化命令,这里选择 ethereum,我部署的在mumbai 测试网,与etherum一样。
![[Pasted image 20240305145552.png]]
接着按提升一步步选择即可:
![[Pasted image 20240305153808.png]]
最后这里有个让选自己的合约地址的选择,如果开源了合约,就可以选择,graph 会抓取开源的ABI,如果没开源就抓取不到,可以不填
![[Pasted image 20240305154243.png]]
在执行init 安装的时候,可能会遇到一些版本或依赖上的错误,一点点按照提示解决即可。
安装完成之后,就可以graph codegen 和build了
graph codegen 命令是根据subgraph.yaml 中的配置文件和abis中的合约ABI文件,生成文件,
并存放在generated目录中,在这个模板下的文件,开发者可以根据自己的需求处理事件逻辑。
graph build 是将编写好的generated,生成wasm文件。
部署的时候需要进行认证,可以设部署key在环境里,只需要设置一次,或者是每次部署的时候带上要部署的key。
最后就是graph deploy,指定好要部署的名称,部署是会将wasm上传到ipfs 上进行保存。
![[Pasted image 20240305163731.png]]
部署完成后会生成一个IPFS的存储id,
![[Pasted image 20240305165338.png]]
部署完成后可以在graph 控制台看到结果
![[Pasted image 20240305165452.png]]
playground 可以进行查询,如图所示可以查到在这个合约上发生过的一笔转账交易信息。
![[Pasted image 20240305165618.png]]
以上就完成了一个graph的完整使用流程。