the graph教程: 查询BSC上的Defibox的做市持仓

Defibox是BSC链和EOS链上的一站式DeFi应用平台,项目代币为BOX,发行总量500万,采用DeFi协议挖矿的方式从0开始线性释放,无私募无预留无预挖。

Defibox

Defibox是BSC链和EOS链上的一站式DeFi应用平台,项目代币为BOX,发行总量500万,采用DeFi协议挖矿的方式从0开始线性释放,无私募无预留无预挖。

Defibox Swap的工厂合约

https://bscscan.com/address/0xDB984fd8371d07db9cBf4A48Eb9676b09B12161D#code

子图目前功能和作用

  1. 查询某个LP的所有用户持仓排名
  2. 查询某个用户的所有LP持仓
  3. 查询当前有多少LP 同类型的swap都可以这样去实现,例如uniswap,pancakeswap,sushiswap

子图源码

https://github.com/qq745960380/Defibox-swap

代码解析

LP和用户是多对多关系,可以通过@derivedFrom字段在实体上定义反向查找,子图存储的数据更少,因此子图的索引和查询速度通常要快得多。

  1. 监听工厂合约的PairCreated,创建交易对实体。由于token0,token1不一定是ERC20合约,所以需要通过try_的方式去拿到token1,token1的name和symbol。如果没有异常,则保存交易对实体,动态创建BoxswapPair的合约模板数据源。
  2. 监听BoxswapPair的Transfer,过滤0x00地址,
// event Transfer(address indexed from, address indexed to, uint256 value);
from是转出方,fromBalance = fromBalance - value,
to地址是接受方,toBalance = toBalance + value

效果图

查询地址https://thegraph.com/legacy-explorer/subgraph/qq745960380/bbbbb

image.png

  • 发表于 2021-08-25 17:46
  • 阅读 ( 582 )
  • 学分 ( 10 )
  • 分类:DeFi

0 条评论

请先 登录 后评论
cj
cj

划水

4 篇文章, 67 学分