跳转到主要内容
LaserStream提供与Geyser节点完全相同的传递保证。本指南涵盖您可以期待的LaserStream流的消息传递行为。
这些保证适用于标准订阅(交易、账户、槽、区块)。预处理交易在单独的尽力传递保证下运行。

精确一次传递

LaserStream保证精确一次传递。每个消息恰好传递到您的流一次——您不会收到重复消息,也不会跳过任何消息。 LaserStream通过同时连接到多个Solana节点并在转发到您的流之前去重传入数据来实现这一点。这种多节点架构还消除了单点故障,确保最大正常运行时间而不牺牲传递的正确性。

按承诺级别的消息排序

传递排序取决于消息的承诺级别:

确认和最终确定

所有确认最终确定的消息都是按顺序传递的。您可以依赖这些承诺级别提供一致的、顺序的链上状态视图。

处理

所有处理的消息按照升序槽顺序发出,除非出现分叉。在分叉事件中,槽顺序可能会暂时偏离,因为网络围绕规范链重新组织。一旦分叉解决,升序顺序将恢复。
在处理承诺级别,处理槽以后可能被跳过或分叉的几率很小。Geyser不会发送分叉更新的明确回滚通知。如果您的应用程序使用处理级数据,必须考虑一些更新可能属于最终被放弃的槽的可能性。对于需要确定性的应用程序,请使用确认最终确定的承诺级别。

插槽通知

已处理的插槽通知是在该插槽的所有消息都已传递后到达的。这意味着,当您收到已处理的插槽通知时,可以确信与该插槽关联的所有交易和账户更新数据已发送到您的流。您可以使用插槽通知作为清除或释放该插槽的缓冲数据的信号。

断开连接时的数据连续性

LaserStream 维护最近插槽数据的缓冲区,支持最多 24 小时(约 216,000 个插槽)的历史重播。如果您的应用程序断开连接,您可以重新连接并从上一个已处理的插槽继续,不会丢失任何数据。 使用LaserStream SDK 客户端时,此恢复会自动处理——客户端通过插槽号跟踪您的流位置,并无缝重新连接。无需手动重新连接逻辑。

承诺级别参考

级别描述延迟排序回退风险
已处理包含在节点已知的最新区块中;尚无集群范围内的投票~400毫秒插槽顺序递增(可能在分叉期间中断)插槽被跳过或分叉的可能性较小
已确认大多数权益(≥66%)已对区块投票(乐观确认)几秒钟严格排序可以忽略不计
最后确定已确认且至少有31个额外的已确认区块建立在其上(32票锁定)~12-15秒严格排序基本不可逆