Dune入门:链上数据分析的第一步
掌握Dune Analytics基础,学习SQL核心语法,理解链上数据表结构,开启Web3数据分析之路
Day 12: Dune Analytics 入门指南
本周学习路径
Week 2: DeFi核心机制
├── Day 8: AMM原理(x*y=k)、无常损失 ✅
├── Day 9: 订单簿vs AMM对比 ✅
├── Day 10: 借贷协议原理 ✅
├── Day 11: 稳定币机制 ✅
├── Day 12: Dune入门(1) - SQL基础 ✅ ← 今天
├── Day 13: Dune入门(2) - 写简单查询
└── Day 14: 复习 + EthPrice多币种支持核心概念
Dune 是什么?
> 类比理解:Dune 就是区块链世界的 Google Analytics + Excel。想象所有链上交易都被记录在一个超大的公开数据库里,Dune 让你可以用 SQL 查询任何数据——某个协议的交易量、某个地址的持仓、某个Token的持有者分布...而且完全免费、公开透明。
为什么 PM 必须会 Dune?
═══════════════════════════════════════════════════════════
传统 Web2 PM Web3 PM
─────────────────────────────────────────────────────────
依赖后端给数据 自己查链上数据
数据埋点可能遗漏 链上数据100%完整
数据可能被美化 链上数据不可篡改
只能看自家产品 可以分析任何竞品
═══════════════════════════════════════════════════════════
Dune 能做什么?
├── 追踪协议 TVL、交易量、用户数
├── 分析竞品数据(完全公开!)
├── 监控大户/巨鲸动向
├── 验证项目方的数据宣传是否真实
└── 制作数据看板向团队/投资人汇报SQL 基础速成
最小知识集(80/20法则)
-- SQL 就是用英语问数据库问题
-- 掌握这6个关键词,覆盖80%的查询需求
SELECT -- 选择要哪些列(字段)
FROM -- 从哪个表查
WHERE -- 筛选条件
GROUP BY -- 按什么分组
ORDER BY -- 按什么排序
LIMIT -- 只要前N条语法模板(背下来)
SELECT
column1, -- 要查的列
column2,
COUNT(*) as count, -- 聚合函数
SUM(amount) as total
FROM schema.table_name -- 表名
WHERE
condition1 = 'value' -- 筛选条件
AND condition2 > 100
AND time > now() - interval '7 days'
GROUP BY column1, column2 -- 分组
ORDER BY total DESC -- 排序(DESC降序)
LIMIT 100 -- 限制条数常用函数速查
-- 聚合函数
COUNT(*) -- 计数
SUM(column) -- 求和
AVG(column) -- 平均值
MAX(column) -- 最大值
MIN(column) -- 最小值
COUNT(DISTINCT x) -- 去重计数
-- 时间函数
now() -- 当前时间
date_trunc('day', time) -- 截断到天
interval '7 days' -- 7天间隔
-- 数值处理
value / 1e18 -- wei 转 ETH
ROUND(number, 2) -- 保留2位小数
CAST(x AS DOUBLE) -- 类型转换
-- 条件判断
CASE
WHEN x > 100 THEN 'large'
ELSE 'small'
END as sizeDune 数据表结构
核心表分类
Dune 数据表架构(以 Ethereum 为例)
═══════════════════════════════════════════════════════════
📁 Raw Tables(原始表)—— 最底层,数据未解析
├── ethereum.transactions 所有交易
├── ethereum.traces 内部交易(合约调用合约)
├── ethereum.logs 事件日志(合约emit的事件)
└── ethereum.blocks 区块信息
📁 Decoded Tables(解析表)—— 最常用!⭐
├── uniswap_v3_ethereum.SwapRouter_call_exactInputSingle
├── aave_v3_ethereum.Pool_evt_Borrow
├── erc20_ethereum.evt_Transfer
└── [协议名]_[链名].[合约名]_[call/evt]_[函数/事件名]
📁 Spellbook(魔法书)—— 社区维护的聚合表
├── dex.trades 所有DEX交易聚合
├── nft.trades 所有NFT交易聚合
├── tokens.erc20 所有ERC20代币信息
└── prices.usd 代币价格
📁 Community Tables(社区表)
└── 用户自己创建的数据集
═══════════════════════════════════════════════════════════关键表详解
-- 1. ethereum.transactions(交易表)
-- 每一笔链上交易都在这里
SELECT
block_time, -- 时间
hash, -- 交易哈希
"from", -- 发送方(注意引号,from是SQL保留字)
"to", -- 接收方
value, -- ETH金额(单位:wei,需要/1e18)
gas_price, -- Gas价格
gas_used, -- Gas消耗
success -- 是否成功
FROM ethereum.transactions
LIMIT 10
-- 2. Decoded Tables(解析表)
-- 例:Uniswap V3 Swap 事件
SELECT
evt_block_time,
sender,
recipient,
amount0, -- Token0 数量
amount1, -- Token1 数量
sqrtPriceX96 -- 价格
FROM uniswap_v3_ethereum.Pair_evt_Swap
LIMIT 10
-- 3. Spellbook 聚合表
-- 例:所有DEX交易
SELECT
block_time,
project, -- 'uniswap', 'sushiswap', etc.
token_bought_symbol,
token_sold_symbol,
amount_usd
FROM dex.trades
WHERE block_time > now() - interval '1 day'
LIMIT 100实战查询示例
示例1:最近24小时大额ETH转账
-- 查询 >100 ETH 的转账
SELECT
block_time,
"from" as sender,
"to" as receiver,
value / 1e18 as eth_amount,
hash
FROM ethereum.transactions
WHERE
block_time > now() - interval '24 hours'
AND value > 100 * 1e18
AND success = true
ORDER BY value DESC
LIMIT 50示例2:Uniswap每日交易量
-- Uniswap V3 每日交易量趋势
SELECT
date_trunc('day', block_time) as day,
COUNT(*) as trade_count,
SUM(amount_usd) as volume_usd
FROM dex.trades
WHERE
project = 'uniswap'
AND block_time > now() - interval '30 days'
GROUP BY 1
ORDER BY 1 DESC示例3:某Token持有者数量
-- USDC 持有者地址数
SELECT
COUNT(DISTINCT "to") as holder_count
FROM erc20_ethereum.evt_Transfer
WHERE
contract_address = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -- USDC
AND "to" != 0x0000000000000000000000000000000000000000 -- 排除销毁链上实操记录
1. Dune 账号注册与界面熟悉
Dune 界面核心区域:
┌─────────────────────────────────────────────────────────┐
│ 🔍 搜索栏 - 搜索 Dashboard、查询、用户 │
├─────────────────────────────────────────────────────────┤
│ 📊 Discover - 发现热门 Dashboard │
│ 📝 My Creations - 我的查询和看板 │
│ ⭐ Favorites - 收藏夹 │
│ 👥 Following - 关注的创作者 │
├─────────────────────────────────────────────────────────┤
│ Editor 编辑器: │
│ ├── 左侧:数据表浏览器(可搜索表和列) │
│ ├── 中间:SQL 编辑区 │
│ ├── 右侧:参数设置 │
│ └── 下方:查询结果 + 可视化 │
└─────────────────────────────────────────────────────────┘2. Fork 的 Dashboard 记录
Dashboard 1: Uniswap V3 Overview
URL: dune.com/hagaetc/uniswap-v3-1
学习点:
- 如何展示 TVL 趋势
- 多个查询组合成完整看板
- 时间筛选器的使用
Dashboard 2: Ethereum Overview
URL: dune.com/hildobby/ethereum-overview
学习点:
- 链级别的宏观数据
- Gas 费用趋势分析
- 活跃地址统计方法
Dashboard 3: DEX Market Share
URL: dune.com/hagaetc/dex-metrics
学习点:
- 多协议对比查询
- 市场份额饼图
- 用 dex.trades 聚合表3. 修改查询练习
-- 原查询:最近7天数据
WHERE block_time > now() - interval '7 days'
-- 修改为:最近30天
WHERE block_time > now() - interval '30 days'
-- 修改为:指定日期范围
WHERE block_time BETWEEN '2024-01-01' AND '2024-01-31'
-- 修改为:只看某个地址
WHERE "from" = 0x123...abc
OR "to" = 0x123...abc收藏夹整理
必收藏的 Dashboard 清单
📊 协议分析类
├── Uniswap V3 Overview - DEX数据模板
├── Aave V3 - 借贷协议数据模板
├── Lido - 质押协议数据
└── OpenSea/Blur - NFT市场数据
📈 宏观数据类
├── Ethereum Overview - 链整体健康度
├── L2 Comparison - Layer2对比
├── Stablecoin Dashboard - 稳定币供应量
└── Gas Tracker - Gas费趋势
🐋 巨鲸监控类
├── Whale Watching - 大户动向
├── Smart Money - 聪明钱追踪
└── CEX Flows - 交易所资金流
🏆 优质创作者
├── @hildobby - 链宏观数据专家
├── @hagaetc - DEX数据专家
├── @0xBoxer - NFT数据专家
└── @0xKofi - DeFi协议分析今日思考
问题1:Dune 对 PM 的核心价值?
1. 数据驱动决策
└── 不再拍脑袋,用链上数据说话
2. 竞品分析神器
└── 对手的TVL、用户数、增长率全透明
3. 验证项目真伪
└── 项目方说DAU 10万?查一下就知道
4. 发现市场机会
└── 追踪资金流向,发现新趋势
5. 向上汇报利器
└── 用数据看板展示产品成绩问题2:SQL 学到什么程度够用?
PM 级别(够用):
├── SELECT, FROM, WHERE, GROUP BY, ORDER BY
├── 基本聚合函数(COUNT, SUM, AVG)
├── 时间过滤和分组
└── 简单 JOIN(明天学)
分析师级别(进阶):
├── 窗口函数(ROW_NUMBER, LAG, LEAD)
├── 子查询和 CTE
├── 复杂 JOIN
└── 自定义函数
不需要学:
├── 存储过程
├── 数据库管理
└── 索引优化问题3:如何高效学习 Dune?
学习路径推荐:
Week 1: 模仿期
├── Fork 热门 Dashboard
├── 修改参数运行
└── 理解每个查询的逻辑
Week 2: 修改期
├── 在现有查询上增加条件
├── 改变时间范围
└── 添加新的列
Week 3: 创造期
├── 写第一个独立查询
├── 组合多个查询成 Dashboard
└── 分享给社区获取反馈
捷径:
└── 看到想要的图表?点击查看 SQL,直接学习!面试题准备
Q: 如何衡量 Web3 产品的成功指标?
30秒版本:
> Web3产品指标分三层:链上指标(TVL、日交易量、独立地址数、Gas消耗)、协议指标(收入、费用、代币持有者)、社区指标(Discord活跃度、治理参与率)。与Web2不同,这些数据都是公开可查的,用Dune就能分析。核心关注TVL趋势、真实用户数(非刷量)、以及协议收入的可持续性。
2分钟版本:
> Web3产品的成功指标可以分为三个层次:
>
> 第一层是链上核心指标。TVL(总锁仓量)反映用户对协议的信任度和资金规模;日活地址数显示真实用户参与度,但要注意区分真实用户和刷量机器人;交易量和交易笔数反映协议的实际使用频率;协议收入(手续费)证明商业模式是否成立。
>
> 第二层是代币相关指标。持有者数量和分布反映社区基础;代币流通量和解锁计划影响价格压力;质押率体现长期持有意愿。
>
> 第三层是社区指标。Discord成员数和活跃度、Twitter关注和互动、治理提案参与率,这些反映社区健康度。
>
> 作为PM,我会用Dune建立数据看板追踪这些指标,特别关注趋势变化而非绝对数值。比如TVL从1亿涨到2亿重要,但如果是靠补贴堆起来的就要警惕。同时会对比竞品数据,了解市场份额变化。
>
> 一个实用技巧是:看协议收入和代币激励的比例。如果每赚1美元要花10美元激励,这个模式就不可持续。
学习资源
| 资源 | 链接 | 说明 |
|---|---|---|
| Dune 官方文档 | https://docs.dune.com/ | 必读 |
| SQL 基础教程 | https://www.w3schools.com/sql/ | 快速入门 |
| Dune 教程视频 | YouTube @Andrew Hong | 实战讲解 |
| OurNetwork | https://ournetwork.mirror.xyz/ | 数据分析案例 |
明日预告
Day 13: Dune入门(2) - 写简单查询
- 写第一个独立查询:某Token持有者数量
- 学习 JOIN 操作连接多表
- 理解协议专用的 Decoded Tables
- 产出:第一个 Dune 查询
SQL 基础打好了,明天开始动手写!