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.transactionsWHERE block_time >= NOW() - INTERVAL 7 DAY;
- SELECT 语法用于查询指定列。在这个例子中,查询所有交易。
- FROM 用于指定数据来源,此处为
solana.transactions
表。 - WHERE 用来过滤数据,例如查询最近7天的交易。
联合用法和基础 UNNEST
在 Dune 中,链上数据常包含运行结果为数组的记录,例如交易的应用数量变更。这时,可以用 UNNEST
。UNNEST
用于将数组字段中的每个元素都作为单独的一行进行处理。比如,在链上交易的数据中,有些字段包含数组(例如一个钱包的多个代币余额),通过 UNNEST
操作,可以将这些数组元素解开,让每个元素变成一行数据。这对于需要分析数组内部各个元素的情况非常有用,这样就可以将数组内容逐条处理,而不是整体作为一个复杂的数据结构。
SELECT t.block_time, pre.ownerFROM solana.transactions t, UNNEST(t.pre_token_balances) AS preWHERE 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_transfersORDER BY block_time DESCLIMIT 1000; -- 限制最多返回 1000 条记录
这个查询的过程
- 首先在
filtered_transactions
中限制查询最近7天的数据,使数据量更可控。 - 然后在
wallet_related_transactions
中将这些数据进行UNNEST
,按照为指定链下链的交易进行过滤。 - 最后在
token_transfers
中进行更详细的解包,并追踪代币从 “From” 到 “To” 的转账。
这样的查询设计使用了多个 CTE 来组织查询过程,通过渐进过滤的方式,使得查询更加高效。
结论
使用 Dune Analytics 可以帮助你对区块链数据进行深入分析。通过基础的 SQL 语法并使用 UNNEST
来处理复杂数据结构,你可以实现特定链下链的转账查询和跟踪。在实践中,使用强化的数据过滤以便将查询范围限制在为你所关心的信息上,这样会更有效率。希望这篇博客能帮助你学会使用 Dune 来开始实现你的区块链数据分析目标。
相关攻略
-
Dune Query 基础指南与Sol钱包转账监控实践Ⅰ:探索数据分析与链上活动
Dune Analytics 是一个用于分析并发现区块链数据的强大工具,它使用 SQL 语言来查询链上数据,使用者可以将
-
Vrgineers 正式发布全新 XTAL 3 CAVU MR 头显:采用先进的 AMD 和英伟达芯片技术,提升用户体验
日前,专注于开发飞行员培训 VR MR 解决方案的捷克初创公司 Vrgineers 宣布与 AMD 和英伟达合作,为
-
梦幻西游175单挑大唐职业装备选择指南与推荐技巧,全面解析最佳搭配策略
在梦幻西游175级的世界里,大唐官府凭借其强大的物理输出能力,在单挑中有着独特的魅力。想要在单挑中大放异彩,一套合适的装
-
Screen Australia 为 VR 等相关主题项目拨款 90 万澳元以支持创新发展
近日,Screen Australia 宣布将投入 90 万澳元(折合人民币约 422 万)制作 31 个主题项目,
-
不止于价格的抉择——从“0.5美元不买入”解析Pi投资的深层思考
2025年,Pi Network进入主网推进的关键年份,市场围绕Pi的价格预期起伏不定,从社区共识到链下场景试点,再到偶
-
《艾尔登法环黑夜君临》各遗物词条加成一览:让你在游戏中如虎添翼!
超级无敌美妙的游戏时代来临啦! 在这个充满幻想与冒险的时代,我们总是渴望一场别样的旅程,让我们在虚拟�
-
Leo Ventures计划设立一项新基金,金额达到1000万美元,专注于投资人工智能领域的创新项目
近日,新加坡风险投资公司 Leo Ventures 已宣布推出一只规模为 1000 万美元的新基金。 该基金将重点
-
《胜利女神新的希望》神罚抽取建议 神罚值得抽吗:深度剖析如何做出最佳选择?
唉哟,不错哦!在当今这个游戏氛围越来越浓厚的时代,大家都在关注着《胜利女神新的希望》的神罚抽取机制。