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

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

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

这为分析师和开发人员创造了一个数据宝库——但利用它需要合适的工具。进入 Dune,一个领先的链上数据平台,将原始区块链数据转化为可操作的见解和开发人员 API。 

了解 Solana 的数据量

Solana 的高吞吐量(通常每秒超过 3,000 笔交易)会生成大量数据。这包括从区块生产和交易日志到特定于程序的交互(例如代币交换或 NFT 铸币)的所有内容。

Dune 以最小的延迟捕获 Solana 的实时活动。原始数据流(例如区块头和交易签名)在一分钟内更新。例如,查询solana.transactions可让您监控网络活动,例如代币发布期间用户参与度的激增。

在 Dune 平台上,可视化这些数据非常简单。Dune 索引了 Solana 的整个历史记录,从 2020 年的创世块到最新的时隙。这允许分析长期趋势,例如总交易量的增长(现在超过 3000 亿)或 DeFi 活动的季节性波动。例如,此查询跟踪自网络成立以来的累积交易,而另一个查询则识别最早和最新的记录块

与以太坊、BSC 或 Polygon 相比,Solana 的数据量因其高吞吐量而脱颖而出。并排比较显示,Solana 在日常交易中占据主导地位,尽管以太坊在费用和 DeFi 流动性方面仍然领先。

基础概念:Solana 的数据结构

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

Solana 账户模型

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

账户地址

从公钥或程序派生地址 (PDA) 的种子派生的 32 字节标识符。例如,Raydium 流动性池地址是从代币铸币厂和其他参数生成的 PDA。

数据存储

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

所有权和租金

账户必须持有 Lamport(SOL 的一小部分)以支付与其数据大小成比例的存储费用(租金)。所有者字段指定控制账户的程序或钱包。只有所有者可以修改其数据或扣除 Lamport。可执行标志标记账户是否包含可执行代码。

举一个实际的例子,SPL 代币账户将其关联的钱包余额存储数据字段中,而其所有者是代币程序。

Solana 交易的剖析

交易是与 Solana 程序交互的工具。每笔交易包括:

  • 签名(唯一标识符)和以 lampports 支付的费用
  • 一个或多个指令(ixs),用于指定:
    • 要执行的程序(例如,Raydium 的交换功能)。
    • 要读取和写入的帐户(例如,令牌库、用户钱包)。
    • 特定于指令的参数(例如,swap 金额、费用)。

交易的主要特征是:

  • 原子执行:事务完全成功或失败 - 没有部分状态。
  • 跨程序调用 (CPI):程序可以调用其他程序,创建嵌套指令。
  • 日志和错误:失败的交易包括错误消息,而日志捕获运行时事件(例如,交换详细信息)。

分析 Dune 上的交易

Dune 的solana.transactions表提供了详细的见解:

  • block_slot:处理交易时的槽号。
  • fee:lampports 中的交易成本。
  • error:失败的原因(如果适用)。
  • accounts:所有涉及的账户的地址。
  • log_messages:发出的事件日志(例如,代币铸造)。

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

  • outer_instruction_index:事务内指令的位置。
  • inner_instruction_index:跟踪 CPI 层次结构。这是 inner_instruction 在相应指令中的位置,与stack_height不同。Dune 目前正在努力添加stack_height
  • performing_account:执行指令的程序。
  • data:原始指令字节(十六进制编码)。

在 Dune 上浏览 Solana 数据

Dune 支持 150 多个 Solana 解码程序,包括 Raydium 和 Magic Eden 等主要协议。社区已构建了 2,000 多个仪表板,涵盖从验证器性能到 meme 币趋势等指标。定期添加新程序。用户可以通过 Dune 网站提交解码请求。

Dune 将 Solana 数据分为三层:

1.原始数据

solana.blockssolana.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_slotblock_time提前过滤,并使用物化视图来获取经常访问的指标。

分区列 Dune Analytics

技巧 3:利用价格信息

通过将交易与prices.usd结合起来,将代币金额转换为美元。这可以将交易量具体化,尤其是对于波动性资产。

最后的想法

Dune 将 Solana 的海量数据转化为结构化、可访问的资源。通过掌握其数据集和工具,您可以发现推动决策的见解——无论您是在优化协议还是跟踪市场趋势。

如需进一步阅读,请探索Solana 的 Geyser 插件架构并观看此Solana Data YouTube 播放列表中的视频教程。

本文翻译自:How to Build a Solana Data Dashboard with Dune