当前位置:首页 > 区块链技术 > 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   入门教程  

你可能感兴趣的文章

币圈快讯

  • Name.com域名劫持事件升级:15个客户域名受影响并全部恢复其中10个与Vercel平台相关

    2026-11-01 04:08
    11月1日,Name.com向TheBlock表示,此次攻击中共有15个客户域名被劫持,超过此前确认的12个,目前这些域名已全部恢复。Vercel则表示,受影响的域名中有10个与其平台相关联。此前消息,周五晚些时候,黑客入侵了十余个DeFi网站,包括Flap、Kintsu、PickleFinance和OrigamiFinance,并利用这些网站清空了访问者的加密货币钱包。据TheBlock获取的注册记录显示,这12个被劫持的域名均通过Name.com注册,其中10个已于周六上午在注册商层面被暂停。TheBlock迄今已将约13.8万美元的被盗资金追踪到EVM链上的三个钱包,这一数字尚未计入Solana或Aptos链上的任何损失。
  • 伊朗最高国家安全委员会秘书雷扎伊:战争应永久结束不应再有任何国家“胆敢”对伊朗发动攻击

    2026-11-01 03:40
    伊朗最高国家安全委员会秘书雷扎伊:我们认真对待外交,但不会放弃伊朗人民的权利。战争应永久结束,不应再有任何国家“胆敢”对伊朗发动攻击。在伊朗的七项条件得到满足之前,不会进行谈判,也不会开放霍尔木兹海峡。如果后续阶段举行核谈判,伊朗依据《不扩散核武器条约》享有的核权利应得到尊重。(金十)
  • 何一:将从币安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日,伊朗最高国家安全委员会秘书雷扎伊表示,其已阅读美国副总统万斯的来信,但尚未回复。“他们的语气完全变了,这是一个好兆头,表明伊朗人民已经巩固了胜利和权威。”雷扎伊表示,由于该信函没有提出任何具体内容,因此他目前不会发表任何评论。(央视新闻)
  • 查看更多