# 从0到1构建你的Dune Analytics看板（常用表结构）

By [0xBi](https://paragraph.com/@0xbi) · 2022-05-03

---

* * *

![](https://storage.googleapis.com/papyrus_images/d85c90539766fd913863aa7dc3d1c01841aa4f3b6f1ac08e55c1c2e8f7ac34f0.png)

**写在前边**

我自己相对熟悉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.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/19b677855e9c86612aa08f451c76ce563d86c2d3127124a53d3a3e095721216d.png)

### B.对应的etherscan中的数据

![](https://storage.googleapis.com/papyrus_images/abb438a885f2b235506840ecf11d40870de476901243e5d024c816fee808bf3b.png)

### C.相关说明

*   一个钱包所有关联的Transactions记录，包含gas相关的信息：gas used ,gas price等
    
*   hash字段是指tx\_hash
    

2.ERC20代币信息表
------------

    erc20.tokens
    

### A.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/cc9bc0d1637693c24306313915ecc7255546589148af372be1d5e3feb9769416.png)

### B.对应的etherscan中的数据

![](https://storage.googleapis.com/papyrus_images/a00df76f29a1e535b15d9d9373a6010f730bad9fd77aaf1a9c803b2bad139dda.png)

### C.相关说明

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

3.ERC20代币转移日志
-------------

    **erc20.ERC20_evt_Transfer**
    

### A.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/d9ea792c4d71402b9147a65a573a7a4a483fccddf36103768b09d8ed49f9ac30.png)

### B.对应的etherscan中的数据

![](https://storage.googleapis.com/papyrus_images/088e4a3c486e32590c91d37b0048f68f0355f71f15d4e1f0e2117677006ff9b3.png)

### 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.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/aaf41b52a251db1e7124ef28c7a9656dd7ec7b7ad32f68581d2d39bdaa3bc1d8.png)

### B.对应的etherscan中的数据

![](https://storage.googleapis.com/papyrus_images/462197ffe6ec010d139673e9fd18f947e85de5510944fcecee6d2f17edb838c0.png)

### 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.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/8408fb39f78d3717929fa3831853c0c2481caedb910beab6f44e662e95b095a3.png)

### B.相关说明

*   Cex的Token价格数据，分钟级别
    

### 4.2 Dex的Token价格

    dex.view_token_prices
    

### A.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/065603bcfb9e8a23adb34fa8fe2f7110236e20a49e5190e2d6fb94b34fb68605.png)

### B.相关说明

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

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

5.Dex交易日志
---------

     dex.trades
    

### A.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/7abbedbbd95858d86c7e15a2223b7cd10be6aa584d3f786651cf24da8ba62765.png)

### B.对应的etherscan中的数据

![](https://storage.googleapis.com/papyrus_images/a94b36b0edb5a9773a9b28b22cfc9e7f8d466096afc243a4930a3cf23d6883ac.png)

### 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.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/5b9e351811913d6839366f1d45071763c6810efff9c52baf836c3a26e79b4160.png)

### B.相关说明

*   储存了unswap新池子创建的日志
    
*   token0 token1：池子双边合约
    
*   pair：池子合约地址
    
*   evt\_block\_time：池子创建时间
    

6.2 交易明细日志

    uniswap_v2.Pair_evt_Swap
    

### A.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/8b97ee22cc1fa32f53d63260a4779e527206241c311baf6b530793ec45fda2f5.png)

### B.相关说明

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

### 7\. NFT相关日志

    erc721."ERC721_evt_Transfer"
    

### A.表结构以及数据样例

![](https://storage.googleapis.com/papyrus_images/a629ead58d7e9df699b77bf9e3e4ddbf1edede46059d6917c1e2452648312635.png)

### B.对应的etherscan中的数据

![](https://storage.googleapis.com/papyrus_images/8eb75c8069f5ed3a2fbf6639083516c90b000a4fa0f048b980a6468dac5c6702.png)

### C.相关说明

*   跟ERC20那个表很像
    
*   从0x0000000之类的黑洞地址出来的交易应该是mint行为

---

*Originally published on [0xBi](https://paragraph.com/@0xbi/0-1-dune-analytics-3)*
