Skip to main content
时隙和区块监控可帮助你了解 Solana 的网络共识、区块生成时间和整体健康状况。借助 LaserStream,你可以使用 helius-laserstream SDK 实时跟踪时隙进度、区块最终确认情况和网络性能指标。
前提条件: 本指南假设你已完成 LaserStream gRPC 快速入门并拥有 API 密钥。

监控类型

跟踪网络共识进度监控不同确认级别的时隙进展:
时隙数据包括: 时隙编号、父时隙、确认状态(processed / confirmed / finalized)和领导者信息。
最适合: 网络健康状况监控、时隙时间分析、共识跟踪。

实用示例

示例 1:网络健康状况监控器

跟踪时隙进度并识别网络问题:

示例 2:区块生成监控器

跟踪区块生成和交易量:

示例 3:筛选后的区块监控器

监控包含特定程序活动的区块:

数据结构

每个时隙代表约 400ms 的网络时间。三个确认级别分别提供逐步增强的保证:processed(初始)、confirmed(获得绝大多数投票)、finalized(不可逆)。
u64 字段(slot、parent)会以字符串形式传入,以在超出 Number.MAX_SAFE_INTEGER 后保持精度。需要进行算术运算时,请使用 Number(slot.slot) 转换。status 是数值枚举;请使用 CommitmentLevel[slot.status] 获取人类可读的名称。
数值字段(slot、parentSlot、executedTransactionCount、entriesCount,以及 blockHeight 和 blockTime 中的值)会以字符串形式输出,因为它们在底层 proto 中是 u64。进行算术运算或比较时,请使用 Number(...) 包装它们。
包含所有交易和账户的完整区块可能达到数 MB。同样适用将 u64 表示为字符串的约定;进行算术运算时,请使用 Number(...) 包装数值字段。在每笔交易中,meta.fee、meta.preBalances、meta.postBalances 等也都是字符串。

性能注意事项

Slot Monitoring

轻量级:带宽占用极低,处理开销很小。适用于监控仪表板。

Block Metadata

均衡:带宽占用适中,无需完整数据即可获得区块级洞察。适用于分析。

Full Blocks

数据量较大:包含完整交易数据,需要强大的处理能力。务必搭配过滤器使用。

Filtered Blocks

优化:使用 accountInclude,并禁用不需要的 includeAccounts/includeEntries。

使用场景

跟踪网络健康状况和性能,包括时隙时间、拥塞和共识。

错误处理

症状: 时隙进度出现缺口。原因: 网络连接问题、验证器停机、客户端处理延迟。解决方案: 跟踪时隙缺口并发出警报;通过历史重放实现追赶逻辑;监控连接健康状况。
症状: 区块数据过多。解决方案: 使用区块元数据代替完整区块;应用账户过滤器;禁用不必要的数据(条目、账户);进行异步处理。
症状: 时隙时间不一致。分析: 计算移动平均值;跟踪偏差;监控网络健康指标;与验证器性能进行关联分析。

最佳实践

生产环境准则:
  • 从元数据开始 — 订阅完整区块之前,先使用区块元数据
  • 应用过滤器 — 使用 accountInclude 丢弃无关数据
  • 监控时间 — 跟踪时隙进度,将其用作网络健康状况的预警指标
  • 处理缺口 — 与历史重放结合使用,以便重新连接时自动回填缺失的时隙
  • 异步处理 — 不要让繁重的计算阻塞流处理
  • 根据需求选择确认级别 — 低延迟 UI 使用 processed,状态写入使用 confirmed/finalized

后续步骤

Transaction Monitoring

按程序、账户、投票或失败状态筛选交易。

Stream Pump AMM Data

实际示例:监控 Pump AMM 交易。

Decoding Transaction Data

将二进制 transactionUpdate 载荷解析为可读的 Solana 交易。

Yellowstone protocol reference

使用原始 Yellowstone gRPC 协议实现相同的工作流。