写在前边
我自己相对熟悉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)
- 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.相关说明
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行为