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

你可能感兴趣的文章

币圈快讯

  • ArthurHayes关联钱包再收1400枚ETH持仓升至4400枚ETH

    2026-06-17 08:36
    据OnchainLens监测,ArthurHayes(@CryptoHayes)关联钱包进一步接收1,400枚ETH,价值2,510,000美元,来自FalconX。当前该钱包持有4,400枚ETH,价值7,890,000美元。
  • 若ETH跌破1705美元主流CEX累计多单清算强度将达8.65亿美元

    2026-06-17 08:30
    据Coinglass数据显示,若ETH跌破1,705美元,主流CEX累计多单清算强度将达8.65亿美元。反之,若ETH突破1,880美元,主流CEX累计空单清算强度将达6.68亿美元。
  • 若BTC突破68928美元主流CEX累计空单清算强度将达11.11亿美元

    2026-06-17 08:30
    据Coinglass数据显示,若BTC突破68,928美元,主流CEX累计空单清算强度将达11.11亿美元。反之,若BTC跌破62,876美元,主流CEX累计多单清算强度将达10.6亿美元。
  • Binance欧盟牌照申请或遭拒7月起或失去欧盟服务资格

    2026-06-17 08:25
    据路透社两位知情人士透露,Binance向希腊市场监管机构提交的MiCA牌照申请即将被拒,这意味着Binance最快将于7月起失去在欧盟27国合法运营的资格,旗下欧盟地区用户的账户前景随之陷入不确定。根据欧盟加密资产市场监管框架(MiCA),加密企业须在6月底前取得成员国监管机构颁发的牌照,并以此作为“护照”在整个欧盟范围内展业。Binance此前选择希腊作为其欧洲监管注册地,联席CEORichardTeng今年2月曾公开表示,希腊的劳动力资源与安全环境优于其他欧洲金融中心。然而希腊资本市场委员会(HCMC)以保密规定为由拒绝就Binance申请置评。Binance方面表示,公司已与监管机构沟通协作逾18个月,认为自身已满足MiCA授权要求,并理解HCMC已完成审查且认定申请合规,“HCMC未就相反结论给出任何正式说明”。消息公布后,Binance在X平台发文称将“支持有序推进流程,尽量减少对用户的影响”,并承诺于2026年6月30日前提供进一步说明,同时警告MiCA授权流程的迟滞可能导致相关业务转移至欧盟境外。
  • TornadoCash开发者RomanStorm重审日期确定今秋将再度出庭

    2026-06-17 08:24
    据TheRage报道,美国纽约南区法院(SDNY)已批准政府预审计划,确认将于今年秋季对TornadoCash开发者RomanStorm就共谋洗钱及共谋规避制裁两项罪名进行重审。与此同时,Storm方面提出的Rule29后审动议仍待法院裁决,该动议对去年8月定罪所依据的证据及法律理论提出质疑,若裁决结果对Storm有利,或将阻止重审的推进。
  • 查看更多
更多

热门币种

  • 币种
    最新价格
    24H涨跌幅
  • bitcoin BTC 比特币

    BTC

    比特币

    $ 65779.28¥ 444503.48
    -0.87%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1793.7¥ 12120.92
    -0.12%
  • tether USDT 泰达币

    USDT

    泰达币

    $ 0.9989¥ 6.75
    -0.04%
  • binance-coin BNB 币安币

    BNB

    币安币

    $ 605.26¥ 4090.04
    -2.07%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0005¥ 6.7608
    +0.03%
  • ripple XRP 瑞波币

    XRP

    瑞波币

    $ 1.2178¥ 8.2292
    -1.71%
  • solana SOL Solana

    SOL

    Solana

    $ 73.5455¥ 496.98
    -0.62%
  • tron TRX 波场

    TRX

    波场

    $ 0.3171¥ 2.1428
    -0.44%
  • hyperliquid HYPE Hyperliquid

    HYPE

    Hyperliquid

    $ 73.6635¥ 497.78
    +10.07%
  • dogecoin DOGE 狗狗币

    DOGE

    狗狗币

    $ 0.08726¥ 0.5896
    -1.16%