从0到1构建你的Dune Analytics看板(常用表结构)

写在前边

我自己相对熟悉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.