Dune Query 入门教程及Sol钱包转账追踪实践Ⅰ
介绍
Dune Analytics 是一个用于分析并发现区块链数据的强大工具。它使用 SQL 语言来查询链上数据,使用者可以将这些数据转换为有用的分析。这篇博客将介绍 Dune 查询的基础用法,并通过一个 Solana 链上链下链监控实践项目来帮助你学会实践中的基础查询技术。
Data Explorer 功能介绍
在开始编写查询之前,熟悉 Dune Analytics 左侧的 Data Explorer 是非常重要的。Data Explorer 提供了对数据库中可用数据表和字段的浏览功能。你可以通过它查看不同区块链的数据集、表结构和字段的类型,从而更好地理解哪些数据可以用于查询。例如,你可以在 Solana 区块链下找到 transactions 表,并看到其中的字段(如 block_time、pre_token_balances 等),这些信息对你编写查询时非常有帮助。
Data Explorer 的主要功能包括:
- 浏览不同区块链(例如以太坊、Solana 等)的数据集。
- 查看每个数据表的字段和数据类型,帮助你了解如何构建查询。
- 使用过滤功能快速定位特定的表或字段。
利用 Data Explorer 可以帮助你更快地找到你需要的数据,并了解这些数据的结构。

基础语法
Dune 使用 Trino 语法的 SQL,对于很多只写过 MySQL 的人来说,这些语法可能会有一些不同,但大部分基础查询是相似的,基本语法和我们所熟悉的 SQL 应该相当接近。下面对一些常用的 SQL 基础语法用词进行解释:
- WITH:用于定义公用表表达式(CTE),可以让查询分步骤进行,增加可读性和模块化。
- SELECT:用于指定查询的列。
- FROM:用于指定查询的数据表。
- WHERE:用于过滤数据,指定查询条件。
- UNNEST:用于将数组字段解包为多行,便于后续处理。
- AS:为字段或表赋予别名,方便引用。
例如,要查询 Solana 链上特定时间段内的交易,可以使用下面的基本查询语法:
SELECT * FROM solana.transactions WHERE block_time >= NOW() - INTERVAL '7' DAY;
- SELECT 语法用于查询指定列。在这个例子中,查询所有交易。
- FROM 用于指定数据来源,此处为
solana.transactions表。 - WHERE 用来过滤数据,例如查询最近7天的交易。
联合用法和基础 UNNEST
在 Dune 中,链上数据常包含运行结果为数组的记录,例如交易的应用数量变更。这时,可以用 UNNEST 。UNNEST 用于将数组字段中的每个元素都作为单独的一行进行处理。比如,在链上交易的数据中,有些字段包含数组(例如一个钱包的多个代币余额),通过 UNNEST 操作,可以将这些数组元素解开,让每个元素变成一行数据。这对于需要分析数组内部各个元素的情况非常有用,这样就可以将数组内容逐条处理,而不是整体作为一个复杂的数据结构。
SELECT t.block_time, pre.owner
FROM solana.transactions t,
UNNEST(t.pre_token_balances) AS pre
WHERE pre.owner = '6EDJ7JuynXSPaMvufzAX4swSRJZXv6uPi4s6jmo33xj5';- UNNEST 语法用来将数组字段解包为多行,此处是
pre_token_balances。 - AS pre 用来为每一行数组记录赋予一个别名pre,便于后面查询。
这个查询实践项目
我们的实践项目是一个用于追踪 Solana 链上特定链下链的代币转账的分析工具。并通过这个查询实现了特定代币的交易跟踪:
WITH filtered_transactions AS (
SELECT *
FROM solana.transactions t
WHERE block_time >= NOW() - INTERVAL '7' DAY -- 限制时间范围为最近7天
),
wallet_related_transactions AS (
SELECT *
FROM filtered_transactions t,
UNNEST(t.pre_token_balances) AS pre
WHERE pre.owner = '6EDJ7JuynXSPaMvufzAX4swSRJZXv6uPi4s6jmo33xj5' -- 为指定链下链地址
),
token_transfers AS (
SELECT
t.block_time,
pre.owner AS "From",
post.owner AS "To",
post.mint AS "Token",
pre.amount AS "Pre_Amount",
post.amount AS "Post_Amount"
FROM
wallet_related_transactions t,
UNNEST(t.pre_token_balances) AS pre,
UNNEST(t.post_token_balances) AS post
WHERE
pre.owner = '6EDJ7JuynXSPaMvufzAX4swSRJZXv6uPi4s6jmo33xj5' -- 指定主链包并地址
AND post.owner IS NOT NULL
AND post.mint = 'BYcs8bjoGv6m4LkRrpEDVbJvPESvP9A1migRmaDApump' -- 指定代币合约地址
)
SELECT
block_time,
"From",
"To",
"Token",
"Pre_Amount",
"Post_Amount"
FROM
token_transfers
ORDER BY
block_time DESC
LIMIT 1000; -- 限制最多返回 1000 条记录这个查询的过程
- 首先在
filtered_transactions中限制查询最近7天的数据,使数据量更可控。 - 然后在
wallet_related_transactions中将这些数据进行UNNEST,按照为指定链下链的交易进行过滤。 - 最后在
token_transfers中进行更详细的解包,并追踪代币从 “From” 到 “To” 的转账。
这样的查询设计使用了多个 CTE 来组织查询过程,通过渐进过滤的方式,使得查询更加高效。
结论
使用 Dune Analytics 可以帮助你对区块链数据进行深入分析。通过基础的 SQL 语法并使用 UNNEST 来处理复杂数据结构,你可以实现特定链下链的转账查询和跟踪。在实践中,使用强化的数据过滤以便将查询范围限制在为你所关心的信息上,这样会更有效率。希望这篇博客能帮助你学会使用 Dune 来开始实现你的区块链数据分析目标。
你可能感兴趣的文章
-
什么是加密货币挖矿?通俗讲解其运作原理、内核类型与收益现状
本文介绍了加密货币挖矿的原理,矿工利用算力解决难题以验证交易、发行新币并保障区块链安全,文章通俗讲解了哈希运算、挖矿难度等流程,分析了ASIC、矿池等类型,并结合比特…
2026-06-10 -
什么是权益证明PoS?详解区块链PoS共识机制原理与特点
本文介绍了区块链权益证明 PoS 共识机制,讲解了共识机制的基本概念、PoS 的运作原理、核心优势与安全特性,同时分析其现存隐患,还列举了 PoA、DPoS 等其他主流共识机制,…
2026-06-10 -
什么是燃烧证明PoB?一文看懂它的工作原理、优缺点与应用
本文介绍了区块链中的“燃烧证明(PoB)”共识机制,它是除PoW和PoS之外的一种新型环保算法,其内核是让矿工通过永久销毁(烧毁)代币来换取虚拟挖矿能力,从而参与区块验证…
2026-06-10 -
DeFi安全分析:为何锁定流动性无法阻止730万美元的漏洞利用
长期以来,锁定流动性一直是去中心化金融领域最令人安心的安全指标之一,然而,最近一起造成730万美元损失的安全漏洞迫使人们对DeFi安全进行更深入的分析,下面小编为大家详…
2026-06-10 -
什么是Sonic链?一文详解
Sonic链是由原Fantom团队打造、接替Fantom Opera的高性能EVM兼容Layer1公链,并非Layer2扩容方案,是当下热门的Web3区块链基础设施,该公链沿用DAG有向无环图结构与aBFT异步…
2026-06-10 -
2026下半年最有可能持续成长的10大加密赛道
大多数山寨币永远无法重回2021年的历史高点,大多数新项目TGE后会长期在发行价下方震荡,资本比以往任何时候都更苛刻,有些赛道会持续复利成长,有些则会逐渐被市场遗忘,以…
2026-06-09 -
代币市场现状分析:两大特质决定未来代币长期持有价值
代币收益行情受内部代币解锁、价值捕获机制缺失等多因素制约,解锁事件频繁导致市场抛压,治理型代币缺乏收益分配,机构投资者逐渐接手长期持仓,推动市场走向更健康状态,本文…
2026-06-09 -
2026世界杯倒计时!Polymarket预测市场热门预测主题盘点
这篇文章主要为大家介绍了Polymarket在世界杯预测市场中的表现、热门预测主题及市场机制解析,强调了其预测的的高可信度和独特性,需要的朋友可以参考下…
2026-06-08 -
Ondo Perps教学:链上20x杠杆玩代币化美股,开户评测一次看
Ondo Perps 是 Ondo Finance 在 2026 年 6 月 9 日上线的代币化美股永续合约交易所,直接把美股、指数、商品搬上链做成永续合约,本文就给大家介绍了Ondo Perps详细教学,需…
2026-06-08 -
什么是加密货币中的分叉?硬分叉和软分叉有什么不同?
本文介绍了加密货币硬分叉与软分叉的内核概念,硬分叉是对协议的重大升级,新旧版本不兼容,常会产生新币;软分叉则是温和升级,新旧版本依然兼容,通过定义与案例,带大家轻…
2026-06-06










