当前位置:首页 > 区块链技术 > Dune Query 入门教程

Dune Query 入门教程及Sol钱包转账追踪实践Ⅰ

2025-05-13 12:24:17 | 来源: | 作者:佚名
Dune Analytics 是一个用于分析并发现区块链数据的强大工具,它使用 SQL 语言来查询链上数据,使用者可以将这些数据转换为有用的分析,这篇博客将介绍 Dune 查询的基础用法,并通过一个 Solana 链上链下链监控实践项目来帮助你学会实践中的基础查询技术

介绍

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 来开始实现你的区块链数据分析目标。

免责声明:本文只为提供市场讯息,所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任。!
Tag:Dune   Query   入门教程  

你可能感兴趣的文章

币圈快讯

  • 何一:将从币安SAFU基金地址划拨50%的资金弥补损失

    2026-11-01 02:57
    11月1日,币安联合创始人何一在X发文表示,将从币安SAFU基金地址中划拨50%的资金用于弥补此次损失,同时保留基金剩余的50%。有关该地址的详细信息已在公告中公布,感兴趣的用户可以查阅。
  • 伊朗官员:伊方目前尚未作出任何新的修改核战略的决定

    2026-11-01 02:25
    11月1日,当地时间31日,伊朗最高国家安全委员会秘书雷扎伊在谈到该国核战略时表示,伊朗人民在修改核战略方面有诉求,当人民看到敌人攻击伊朗核设施时,他们通常会问,为什么还要继续沿用之前的模式?雷扎伊强调,目前伊朗尚未作出任何新的、修改核战略的决定。当前关于核问题争论的焦点在于,如果战争再次爆发,伊朗是否希望沿用之前的战略(央视新闻)
  • 伊朗最高国家安全委员会秘书:尚未回应美国信函

    2026-11-01 01:45
    11月1日,当地时间31日,伊朗最高国家安全委员会秘书雷扎伊表示,其已阅读美国副总统万斯的来信,但尚未回复。“他们的语气完全变了,这是一个好兆头,表明伊朗人民已经巩固了胜利和权威。”雷扎伊表示,由于该信函没有提出任何具体内容,因此他目前不会发表任何评论。(央视新闻)
  • glassnode:美国现货以太坊ETF已连续23个交易日净流出创上市以来最长连续净流出纪录

    2026-11-01 01:34
    11月1日,glassnode于X平台发文称,ETF投资者正在撤离ETH,美国现货以太坊ETF已连续23个交易日净流出,创下该产品自上市以来最长的连续流出纪录。这反映出传统投资者的需求疲软——他们曾在8月和9月大量买入。**
  • StriveCEO:Binance被盗后比特币表现好于预期但尚不能确认市场见底

    2026-11-01 01:04
    10月31日,StriveCEOMattCole表示,Binance约63亿美元被盗事件并未改变其对比特币的长期投资判断。考虑到攻击规模及整体市场疲弱,比特币的跌幅小于他的预期,但现阶段判断价格是否已经见底仍为时过早。目前比特币价格约为77,400美元,较周四攻击开始前下跌约4%。Strive此前披露,截至10月23日持有43,000枚BTC。Cole将此次钱包攻击比作银行遭抢劫,而非比特币网络失效。Wirex金融犯罪主管PaulChapman也强调,此次攻击针对的是一家公司的系统,而不是比特币网络本身。对于后续走势,Cole认为市场正处于「早春」式复苏阶段,这一阶段可能再持续6至9个月,价格将逐步上涨,而非迅速冲击新高。他表示,在任何合理的时间跨度内,此次事件都不会改变其对比特币的投资逻辑。历史市场反应方面,2025年Bybit遭15亿美元攻击后,叠加整体市场波动,比特币曾由接近100,000美元回落至约95,000美元,跌幅约5%。另据CNBC援引AnchorageDigital数据,过去加密交易平台遭攻击后,比特币在首24小时内的平均跌幅为8.3%。攻击调查仍在进行。BlockaidCEOIdoBen-Natan认为,攻击者可能利用了Binance交易签名流程,其分析发现一笔包含50份签名授权的以太坊交易,匹配的授权允许攻击者控制的代码通过钱包执行。Binance则表示,截至周五尚未发现钱包私钥泄露的证据。
  • 查看更多