新消息:Helius 收购 Light Protocol
Dune 横幅
博客/开发

如何使用 Dune 构建 Solana 数据仪表板

加密领域的数据平台X 上的 DuneLinkedIn 上的 Dune
阅读需 6 分钟

Solana 区块链兼具强大的速度和可扩展性,每秒可处理数千笔交易。

这为分析师和开发者带来了海量的 Solana 历史数据,但要充分利用这些数据,需要合适的工具。Dune 是领先的链上数据平台,可将原始区块链数据转化为可执行的洞察和开发者 API。 

本指南将介绍如何在 Dune 上构建全面的 Solana 仪表板,并利用实时指标、历史趋势和已解码的程序数据。

了解 Solana 的数据规模

Solana 的吞吐量通常超过每秒 3,000 笔交易,因此会产生海量数据。这些数据涵盖区块生成、交易日志,以及代币兑换或 NFT 铸造等特定程序交互。

Dune 能以极低延迟捕获 Solana 的实时活动。区块头和交易签名等原始数据流可在一分钟内完成更新。例如,查询 solana.transactions 可以监控网络活动,包括代币发行期间用户参与度的激增。

在 Dune 平台上可轻松将这些数据可视化。Dune 为 Solana 从 2020 年创世区块到最新 slot 的全部历史数据建立了索引。你可以借此分析长期趋势,例如总交易量的增长(目前已超过 3000 亿笔),或 DeFi 活动的季节性波动。例如,此查询可追踪网络启动以来的累计交易量,另一项查询则可找出最早和最新记录的区块。

与 Ethereum、BSC 或 Polygon 相比,Solana 凭借高吞吐量,在数据规模上尤为突出。横向对比显示,Solana 的每日交易量占据主导地位,但 Ethereum 在费用和 DeFi 流动性方面仍然领先。

基础概念:Solana 的数据结构

接下来,我们将探索 Solana 的账户模型、交易结构,以及如何使用 Dune 分析 Solana 交易。

Solana 账户模型

Solana 的核心是其独特的账户模型。所有链上数据都存储在账户中,包括程序逻辑、代币余额和可执行代码。Solana 账户具有以下特点:

账户地址

一种 32 字节标识符,可由公钥派生;对于程序派生地址(PDA),则由种子派生。例如,Raydium 流动性池地址就是根据代币铸币地址和其他参数生成的 PDA。

数据存储

账户最多可为可执行字节码程序存储 10MB 数据,或为 PDA 中的状态信息存储 10KB 数据。

所有权和租金

账户必须持有 lamport(SOL 的最小单位),以支付与数据大小成比例的存储成本(租金)。owner 字段用于指定控制该账户的程序或钱包。只有所有者可以修改其数据或扣除 lamport。可执行标志则用于表明账户是否包含可执行代码。

以实际场景为例,SPL 代币账户会在 data 字段中存储关联钱包的余额,其所有者则是 Token Program。

Solana 交易的结构

交易是与 Solana 程序交互的载体。每笔交易都包括:

  • 一个签名(唯一标识符)以及以 lamport 支付的费用
  • 一条或多条指令(ixs),用于指定:
    • 要执行的程序(例如 Raydium 的兑换函数)。
    • 要读取和写入的账户(例如代币金库、用户钱包)。
    • 指令专用参数(例如兑换金额、费用)。

交易的主要特点包括:

  • 原子执行:交易要么全部成功,要么失败,不会出现部分完成的状态。
  • 跨程序调用(CPI):程序可以调用其他程序,从而创建嵌套指令。
  • 日志和错误:失败的交易会包含错误消息,日志则会捕获运行时事件(例如兑换详情)。

在 Dune 上分析交易

Dune 的 solana.transactions 表可提供细粒度洞察:

  • block_slot:处理交易时的 slot 编号。
  • fee:以 lamport 计价的交易成本。
  • error:失败原因(如适用)。
  • accounts:所有相关账户的地址。
  • log_messages:发出的事件日志(例如代币铸造)。

如需更深入地检查,请使用 solana.instruction_calls:

  • outer_instruction_index:指令在交易中的位置。
  • inner_instruction_index:追踪 CPI 层级。它表示 inner_instruction 在对应指令中的位置,与 stack_height 不同。Dune 目前正在添加 stack_height。
  • executing_account:执行指令的程序。
  • data:原始指令字节(十六进制编码)。

浏览 Dune 上的 Solana 数据

Dune 支持超过 150 个已解码的 Solana 程序,其中包括 Raydium 和 Magic Eden 等主要协议。社区已构建超过 2,000 个仪表板,涵盖从验证者性能到模因币趋势的各种指标。新程序也在持续加入。用户可以通过 Dune 网站提交解码请求。

Dune 将 Solana 数据分为三层:

1. 原始数据

solana.blocks 和 solana.instruction_calls 等表提供未经筛选的链上活动数据。

2. 清洗后的数据

代币价格或美元等值金额等预处理抽象数据可简化分析。

3. 已解码数据

协议专用数据集(例如用于 DEX 兑换的 dex.trades,或用于 NFT 销售的 nft.trades)提供开箱即用的指标。

如需追踪资产,可以使用 staking.actions 等表查看验证者活动,或使用 prices.usd 查看代币价格。交易分析师可以利用 dex.trades,对比 Orca 和 Raydium 等平台的交易量。

幕后原理:Dune 如何处理数据

Dune 通过 Geyser 插件摄取 Solana 数据,并将链上更新流式传输至索引系统。随后,系统使用程序 IDL 解码原始数据,并将其整理到便于查询的表中。如需深入了解 Solana 的数据基础设施,请参阅 Helius 的 Solana 数据工具指南。

分步指南:构建你的 Solana 仪表板

第 1 步:明确目标

首先确定重点领域。你要分析 NFT 销售、DeFi 收益,还是网络性能?在此示例中,我们将构建一个追踪每日 DEX 交易量的仪表板。

第 2 步:查询数据

打开 Dune 的查询编辑器,从 dex.trades 中提取交易数据:

代码
SELECT DATE(block_time) AS date, SUM(amount_usd) AS volume  
FROM solana.dex.trades  
WHERE project = 'orca'  
GROUP BY 1  
ORDER BY date DESC; 

这会获取 Orca 的每日交易量。保存查询,并将其可视化为柱状图。

第 3 步:组装和自定义

创建一个新仪表板并添加图表。你还可以加入其他小组件,例如显示总交易笔数的计数器,或按交易量对热门代币进行排名的表格。使用文本框标注趋势,例如新代币发行推动的交易量激增。

观看这个短视频系列,完整了解如何在 Dune 上构建 Solana 仪表板。

高级分析实用技巧

技巧 1:结合原始数据和已解码数据

如果某个程序尚未完全解码(例如新的 NFT 市场),可以使用 solana.instruction_calls 手动解析日志。然后与已解码的代币表交叉比对,以确定资产详情。

技巧 2:优化查询速度

Solana 的数据规模可能会降低查询速度。

尽早按 block_slot 或 block_time 进行筛选,并为频繁访问的指标使用物化视图。

技巧 3:利用价格数据源

将交易与 prices.usd 关联,把代币金额转换为美元。这有助于理解交易量的背景,对波动性较大的资产尤其重要。

总结

Dune 将 Solana 源源不断的数据转化为结构化且易于访问的资源。掌握其数据集和工具后,你就能发掘可用于决策的洞察,无论是优化协议还是追踪市场趋势。

如需进一步了解,请探索 Solana 的 Geyser 插件架构,并观看这个 Solana 数据 YouTube 播放列表中的视频教程。

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新

放大图片