The Graph 使用流程
官网创建子图
The Graph主要是用于监测链上数据的。The Graph官网
- 创建子图
点击创建子图
2. 选择链
选择你想查询对应合约所在的链
3. 填写自己子图的名称
本地创建子图框架
在本地创建一个文件夹
初始化子图的名称,这里是建立一个名字为graph_5的文件夹,并配置基础的文件
选择你想监测的网络,这里demo选择ethereum
输入提示,直接回车回车,然后填写合约地址
这里如果失败的话,下载abi文件成json格式,放到本地,直接填写abi文件的名字(注意abi文件是放在当前目录下)
这里创建成功的话,cd进入你要部署的子图文件夹
这里需要重点理解!这个就是你要查询什么东西,比如你想查询一个事件的id,count,src,guy参数就可以这么写。
这里是标准的weth事件和函数模板
这个也非常重要,是配置清单。意思就是你要查合约发生的哪些事件,哪些方法,包括所有关于这个合约的所有区块信息。
eventHandlers下面是事件,分event和handler,handler是下一步要写的mapping.ts映射文件中写的方法名称,比如handleApproval要和mapping.ts中一个函数名要对应。
这里是建立子图,会自动帮你配置一些文件。一定必须要执行的一步。
这里失败很正常,因为mapping.ts没写好,但是这步也很重要,会帮你多生成了一个build文件夹,里面有自动根据这个abi.json生成的很多函数与事件。
这里把最下角的file换成:/src/mapping.ts
编写mapping.ts,映射文件,这个就是把当时你设置实例对应的,与scheme.graphql对应实例去保存。
再重新graph codegen && graph build
生成文件,如果没报错说明可以部署子图
这是成功样式
执行命令graph deploy --studio graph_5(这里换成你自己的文件名)
首先要选择版本,这个是自己设置的,就是为了你自己子图以后的迭代升级,可以0.0.2,也可以0.1.2。
这是成功的效果图
通过gql查询语句查询
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>//引入axios
async function test_graph(){
axios.post('https://api.studio.thegraph.com/query/32121/graph_4/0.0.3', {
query: `
{
{
eventApprovals(first: 5) {
id
from
to
value
}
eventTransfers(first: 5) {
id
from
to
value
}
}
}
`
})
.then((res) => {
// for (const trans of res.data.data.transfers) {
console.log(res)
// }
})
.catch((error) => {
console.error(error)
})
}
制作时间匆忙,有不足请提出。