# 从0到1构建你的Dune Analytics看板(常用表结构) **Published by:** [0xBi](https://paragraph.com/@0xbi/) **Published on:** 2022-05-03 **URL:** https://paragraph.com/@0xbi/0-1-dune-analytics-3 ## Content 写在前边 我自己相对熟悉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_hash2.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-data5.Dex交易日志 dex.trades A.表结构以及数据样例B.对应的etherscan中的数据C.相关说明储存了dex的代币交易日志,每一条数据代表了一次在dex发生的交易 X token A → Y Token Bproject:交易使用的协议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行为 ## Publication Information - [0xBi](https://paragraph.com/@0xbi/): Publication homepage - [All Posts](https://paragraph.com/@0xbi/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@0xbi): Subscribe to updates - [Twitter](https://twitter.com/Pro_0xBi): Follow on Twitter