从0到1构建你的Dune Analytics看板(常用表结构)
May 3rd, 2022

写在前边

我自己相对熟悉Ethereum的表,这里只包含Ethereum相关的表结构

其他网络的表后续有机会再补充吧。另外本篇的内容之前写过一个Notion版本,如果看过那个这篇就不用看了,基本跟那个一致

有任何问题或者建议欢迎DM Twitter@Pro_0xBi


一、通用说明

1.合约地址或者钱包地址用0x.....中的 ’ 0 ’ 在表里都默认替换成了 ’ \ ’

如地址 0x9b22a80d5c7b3374a05b446081f97d0a34079e7f

实际存的数据是:\x9b22a80d5c7b3374a05b446081f97d0a34079e7f

a.如果想在SQL中引入变量可以用如下处理,可以避免输入带 ’ \ ’这种奇怪的格式:

wallet_address= CONCAT('\x', substring('{{wallet_address}}' from 3))::bytea

b.对外展示某个字段的时候可以用转成字符串然后用replace(这个方法有点笨,可能有更好的方法)

replace(cast(wallet_address as varchar),'\','0')

2.时间默认为UTC时间,如果想处理成UTC+8可以在SQL里处理

block_time + '8 hour'::interval

3.熟悉表最快的方法就是查出来几条数据然后在etherscan中对照着看,大部分表里的数据在etherscan中对应tx_hash的记录都能找到,

二、常用库表

1.链上转账日志

Ethereum.Transactions

A.表结构以及数据样例

B.对应的etherscan中的数据

C.相关说明

  • 一个钱包所有关联的Transactions记录,包含gas相关的信息:gas used ,gas price等
  • hash字段是指tx_hash

2.ERC20代币信息表

erc20.tokens

A.表结构以及数据样例

B.对应的etherscan中的数据

C.相关说明

  • 储存了ERC20代币基础信息的表,常规用法是根据token合约取symbol或者取Token的Decimals
  • 比较不好的一点是这个表是手动更新的,很多小币或者新币在这里是查不到的,不太清楚具体的手动更新机制,不知道官方后边会不会优化

3.ERC20代币转移日志

**erc20.ERC20_evt_Transfer**

A.表结构以及数据样例

B.对应的etherscan中的数据

C.相关说明

  • 属于偏底层日志的表,记录一个钱包历史所有ERC20代币的转移情况理论上这样表可以计算跟钱包ERC20代币余额相关的所有的数据
  • 通过Flashbot转移的代币不会统计在内(这部分交易貌似不会过Ethereum的日志)
  • Value:Value字段储存的是Raw Value,需要通过decimals处理一下,处理方式是
Value / power(10,dicimal)
--各个Token的decimals需要从erc20.tokens表中取,但是这个表不太全,后边说
  • contract_address:ERC20的合约地址

4. ERC20代币余额表

erc20.view_token_balances_latest:所有地址的ERC20代币的最新余额情况,更新频率未知
erc20.view_token_balances_hourly:所有地址的ERC20代币的最新余额情况,小时级别
erc20.view_token_balances_daily:所有地址的ERC20代币的最新余额情况,天级别
erc20.token_balances:没用过,官方Doc里有

A.表结构以及数据样例

B.对应的etherscan中的数据

C.相关说明

  • balance表看起来是基于erc20.ERC20_evt_Transfer的数据衍生出来的表,按照不同的时间hour、day 做的统计,会计算持有的各个币折合USD的金额
  • 如果单纯统计余额,不做更多复杂的定制化逻辑,理论上这个表可以满足大部分需求
  • 这个表存在一个问题是很多新币或者小众币在里边折合USD金额是为空的,猜测是因为计算USD金额需要用到decimals,但是erc20.tokens这个表是手动更新的,取不到decimals就算不出来余额,就算不出来对应的金额,或者说对应Token的Price取不到

4.Token价格表

4.1 Cex的Token价格

prices.usd

A.表结构以及数据样例

B.相关说明

  • Cex的Token价格数据,分钟级别

4.2 Dex的Token价格

dex.view_token_prices

A.表结构以及数据样例

B.相关说明

  • Dex的Token价格数据,分钟级别
  • 这个表数据貌似都不是特别全,如果某些Token找不到的话可以可以自己用dex.trades算

取Token价格详细的计算口径见官方Doc:https://docs.dune.xyz/about/tutorials/queries/price-queries#centralized-exchange-price-data

5.Dex交易日志

 dex.trades

A.表结构以及数据样例

B.对应的etherscan中的数据

C.相关说明

  • 储存了dex的代币交易日志,每一条数据代表了一次在dex发生的交易 X token A → Y Token B
  • project:交易使用的协议Uniswap,Sushi 等
  • version:协议版本,Uniswap v2,Uniswap v3等等

6. Uniswap 相关

6.1 新池子创建日志

uniswap_v2.Factory_evt_PairCreated

A.表结构以及数据样例

B.相关说明

  • 储存了unswap新池子创建的日志
  • token0 token1:池子双边合约
  • pair:池子合约地址
  • evt_block_time:池子创建时间

6.2 交易明细日志

uniswap_v2.Pair_evt_Swap

A.表结构以及数据样例

B.相关说明

  • uni交易明细日志,基于这个其实也可以算Token价格

7. NFT相关日志

erc721."ERC721_evt_Transfer"

A.表结构以及数据样例

B.对应的etherscan中的数据

C.相关说明

  • 跟ERC20那个表很像
  • 从0x0000000之类的黑洞地址出来的交易应该是mint行为
Subscribe to 0xBi
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from 0xBi

Skeleton

Skeleton

Skeleton