全新:Solana Privacy Rings 现已上线主网
一篇探讨 Solana 分片和领先数据流解决方案 LaserStream 的文章
博客/开发

赢下毫秒之争:分片、LaserStream 与 Solana 的速度优势

Developer Experience EngineerX 上的 0xIchigoLinkedIn 上的 0xIchigoGitHub 上的 0xIchigo
阅读需 13 分钟

如果你有一台能让你永远领先未来 10 毫秒的时间机器,你会怎么做?你会进行哪些交易?监控哪些账户?你能多赚多少钱? 

LaserStream 是 Helius 的下一代 gRPC 流服务。它无需维护专用节点,性能却能在全球所有地区持续超越其他数据流服务。 

以尽可能快的速度传输数据,对于检测链上事件(例如兑换、清算和价格更新)以及提交响应这些事件的交易至关重要。对 RFQ 交易台、清算机器人和高频交易而言,几毫秒的差距就决定了是赢得机会,还是错失机会。

LaserStream 在延迟敏感型操作中拥有一流性能,很大程度上是因为它构建在低延迟分片之上。也就是说,LaserStream 会在传播的区块数据可用后立即接收,使用户能够更早看到 Solana 状态更新。凭借全球分布式管道、自动重放、自动故障转移和客户端 SDK,LaserStream 无疑是在 Solana 上传输实时数据最简单、最快捷的方式。这些优势让 LaserStream 集成成为交易所、交易应用、MEV 机器人以及所有重视延迟敏感型操作的开发者不可或缺的选择。

本文将探讨 Solana 区块的最小单元——分片,解释它为何重要,以及 LaserStream 如何利用它构建速度尽可能快的数据流解决方案。本文各节均可独立阅读。不过,如果你刚开始了解 Solana 上的分片和数据流,按顺序阅读各节会更有帮助。

什么是分片?

分片是实现 Solana 高性能数据传播的基础单元,让你能够更早获知链上状态变化。

Solana 的设计目标是实现极致的速度和吞吐量。为此,它无法将区块作为单个大型单元在网络中传输。区块会被拆分为称为分片的小型数据包——它们是 Solana 数据传播的原子单元。 

这些分片代表交易数据在组装成区块前的不同部分。每个分片大小约为 1.2 KB,经过优化后可装入标准网络数据包的最大传输单元(MTU),从而避免分片并实现极速传输。 

分片分为两种:

数据分片

数据分片封装区块中的核心交易数据,并将其拆分成固定大小的片段。它们包含序列化的条目批次,即以数量作为前缀的交易组,以便高效处理。

编码分片

编码分片使用 Reed-Solomon 纠删码提供冗余。这是一种通过生成奇偶校验数据实现的前向纠错技术,可用于重建缺失或损坏的分片。编码分片与数据分片共同组成前向纠错(FEC)集,通常采用均衡比例(例如 32 个数据分片对应 32 个编码分片),能够容忍最高 50% 的数据包丢失。领导者可根据网络状况调整这一比例,以保持高可靠性。

分片如何在 Solana 上传播?

该流程从领导者(即当前负责生成区块的验证者)开始。领导者将交易分批并序列化为条目。随后,这些条目会被拆分(即 shredded)成称为分片的较小片段。按照 Solana 的分片规范,领导者会使用旧版系统(即单独签署每个分片)或基于 Merkle 的方案(即签署整个 FEC 集的 Merkle 根)为所有分片签名,从而确保真实性和数据完整性。 

分片通过 Turbine 发送给其他验证者。Turbine 是 Solana 基于多层扇出的传播系统。在 Turbine 中,领导者将分片传输到根节点,根节点再以树状结构将其分发到后续各层验证者。每层以 200 个节点的扇出规模转发到下一层。根据活跃验证者数量,通常需要经过 2 至 3 跳。这种树状结构既能尽量减少带宽使用,又能在数毫秒内将交易分发至整个网络。

按质押权重进行的重排会优先向质押量较高的验证者传输数据。Turbine 首先按验证者持有的质押量(即质押权重)对其排序。质押量较高的验证者会排在列表前面;经过确定性重排后,它们往往会位于树中更靠前、更接近领导者的层级。因此,跳数越少,延迟越低。也就是说,质押量更高的验证者会更早收到分片。   

注意: Alpenglow 实施后,Rotor 将在未来取代 Turbine。即使发生这些变化,验证者的质押量仍会影响它向哪些对等节点广播。

分片如何重新组装成区块?

验证者收到分片后,会先验证其签名以确认真实性,并使用 Reed-Solomon 纠删码,通过 FEC 集中可用的编码分片重建任何缺失或损坏的数据分片。 

随后,重建的数据分片会执行逆分片处理。也就是说,系统会使用分片索引按顺序拼接其载荷,重新形成序列化的条目批次。 

接着,这些批次会被反序列化为单笔交易和条目,并组装成完整区块。

分片为何重要? 

分片之所以重要,是因为在时机至关重要的网络中,它缩短了反应窗口。 

分片对于发挥 Solana 的高性能优势至关重要,尤其是在高频交易、询价(RFQ)交易台、清算引擎和预言机更新等延迟敏感型应用中。 

与大多数其他区块链不同,分片能让开发者最早看到正在发生的链上事件。其他区块链上的应用必须等待区块完整生成并确认,这可能增加数百毫秒乃至数秒的延迟。 

原始分片处理起来可能很麻烦,因为接收方必须验证其真实性,重建任何缺失的数据分片,对其执行逆分片和反序列化以还原交易与条目,最后再解析兑换或账户变更等可操作事件。

如果你希望获得分片的低延迟优势,又不想自行构建这套管道,Preprocessed Transactions 可以代你执行逆分片,并通过 WebSocket 在达到 processed 承诺级别前最多提前 8ms 传输已签名交易。

不过,这种对待处理交易和账户更新的“提前预览”能带来无可比拟的优势,直接提高竞争场景中的成功率。

例如,监控抵押率的清算机器人可以通过分片发现并处理风险头寸,远早于使用 WebSockets 等较慢方式的竞争对手,从而赢得清算机会。 

分片延迟层级

需要注意的是,不同来源的分片延迟并不相同。

高质押量验证者

质押量较高的验证者在 Turbine 传播树中享有最高优先级。它们通常直接从领导者或较前的扇出层接收分片,并受益于质押加权服务质量(SWQoS)。

已质押验证者

质押量中等的验证者在传播队列中的优先级较低,分片需要额外经过更多跳,因此会遇到中等程度的延迟。它们参与共识,因此能够可靠地获取数据,但延迟可能会因网络位置和当前质押分布而略有变化。与高质押量验证者相比,低质押量验证者并不适合竞争极其激烈且对时间敏感的操作。

未质押验证者

没有质押量的验证者不具备已质押节点的服务质量优势,不适合为延迟关键型操作传输 Solana 实时数据。它们处于 Turbine 扇出结构的末端,最后才会收到分片。

在树中的位置越靠前,你就有越多时间在网络其他部分跟上之前做出响应。 

全球差异 

重要的是,Turbine 与地理位置无关。物理距离和网络状况会带来超出 Turbine 跳数之外的延迟,因此全球传播可能会放大延迟差异。 

例如,跨区域传输的分片(如从美国的领导者传输到亚太地区的验证者)可能因跨洲路由、数据包重传甚至对等互联问题而延迟——即使是位于 Turbine 前几层的高质押量验证者也不例外。

这种地理分布带来了优化机会。单个高质押量验证者可能在本地表现出色,但如果位置不够理想,其全球性能可能会落后。分布式分片网络可以聚合来自不同来源、速度尽可能快的分片,从而降低波动并实现稳定的接收速度,缓解这一问题。在全球场景中,这类系统可以持续超越质押量最高的验证者。

要让构建延迟关键型系统的开发者保持竞争优势,可靠地从优化来源获取分片至关重要。不过,这需要强大的基础设施来有效处理恢复、验证和全球分发。此外,目前 Solana 上大多数热门实时数据流工具都没有利用分片。

在 Solana 上传输数据

希望传输实时数据的 Solana 开发者有多种选择,每种方案都需要在延迟、可靠性和复杂性之间进行不同取舍:

Webhook

Webhook 支持事件驱动更新。当特定账户或程序发生变化时,它会将数据推送到你的应用。通过编程方式集成非常简单,甚至无需编写任何代码,直接在 Helius Dashboard 中即可完成设置。开发者可以传输特定交易类型的可读解析数据、原始交易载荷,甚至能以格式化消息的形式将这些更新直接发送到特定 Discord 频道。

尽管 webhook 非常可靠,并被 Solana 上许多知名公司采用,但它只会在交易确认之后发送通知。这意味着 webhook 可能比基于分片的数据晚数百毫秒,因此对于高频交易或清算等延迟关键型操作而言过于缓慢。

标准 WebSockets

Solana 的 JSON RPC API 支持 WebSocket 订阅,例如用于账户变更的 accountSubscribe、用于交易日志的 logSubscribe,以及用于程序事件的 programSubscribe。WebSockets 会在客户端与 RPC 提供商之间保持持久连接,并在交易和账户变更处理完成后立即传输更新。WebSockets 支持双向通信,适合实时监控特定账户或事件,同时减少轮询开销。

不过,与 webhook 一样,WebSockets 会在分片重新组装后(即达到 processed、confirmed 或 finalized 承诺级别时)传输数据。根据承诺级别的不同,这会增加 400ms 到 30s 的延迟。 

WebSockets 也被视为一种脆弱的连接类型,因为连接可能因各种问题中断,需要自定义重试逻辑。除非使用轮询作为补充,否则断开连接可能造成永久性数据丢失,削弱其实时可靠性。 

增强型 WebSockets

与标准 WebSockets 相比,增强型 WebSockets 有显著改进,提供多项性能优化和更强的过滤能力。更好的事件解析和更少的噪声,使其更适合开发者在生产环境中使用。

增强型 WebSockets 可以降低标准 WebSockets 的延迟,非常适合常规流式应用。例如,与标准 WebSockets 和 webhook 相比,使用增强型 WebSockets 传输 Pump AMM 数据时有明显的性能提升。 

不过,从根本上说,增强型 WebSockets 仍然是在分片重新组装后才传输数据。这依然限制了它在分秒必争的应用中的实用性。此外,尽管经过增强,它仍缺少自动重放或故障转移功能,需要手动处理数据缺口。 

Yellowstone gRPC

Yellowstone gRPC 是一种从验证者到客户端的低延迟流协议,可提供分片级数据访问。它能在相应承诺级别更快地传输更新,因此速度明显快于 WebSockets 和 webhook。 

Yellowstone 提供双向流,可立即创建和取消订阅,还具备高级过滤能力,让你能够精确控制针对特定交易、账户或程序更新所接收的数据。

Yellowstone 非常适合希望获得无限速、无积分限制和有保障的隔离硬件以进行自定义节点配置的用户。不过,它也存在几项重大取舍:

1. 基础设施负担

要充分发挥 Yellowstone gRPC 的潜力,你需要拥有自己的专用节点。这要求你能够获取硬件、正确配置并持续管理硬件,还需要具备相关领域的专业知识,才能调试任何硬件问题。

2. 延迟波动

Yellowstone gRPC 能够传输分片级数据,并不意味着它一定会以最优方式传输。延迟会因提供商而异,也取决于你的专用节点是否与针对分片优化的数据源(即高质押量验证者)配对。与中低质押量验证者配对意味着它们无法持续进入 Turbine 第一层,因此你在接收许多分片时仍会处于下游。

3. 故障风险

依赖单个专用节点会造成单点故障,而 Yellowstone gRPC 缺少原生重放功能,进一步加剧了这一问题。

4. 资源需求

在通过 Yellowstone 传输数据的同时,让专用节点承担大量 RPC 调用,可能导致性能下降。 

长期以来,Yellowstone gRPC 一直是许多团队在 Solana 上传输实时数据的首选服务。它速度快,适合高级用户,但如果没有遍布全球的专用节点集群,就很难稳定实现全球低延迟覆盖。

LaserStream

LaserStream 兼具分片级数据接收的速度,以及全球分布式服务的可靠性和覆盖范围,同时无需承担运行多个专用节点的成本和运维负担。 

LaserStream 通过以下方式实现这一点:

  • 多源接收:LaserStream 接收延迟最低的分片,在全球范围内持续超越竞争对手。
  • 全球覆盖:LaserStream 在全球多个地区均可使用,开发者可以使用距离其基础设施最近的端点。每个地区都会运行多台服务器来提供冗余,并支持自动故障转移。
  • 零缺口:LaserStream 的历史重放允许开发者重放过去最多 48 小时内的近期区块链数据。这有助于处理连接中断并确保数据连续性。 
  • 开发者友好体验:LaserStream 可直接替代 Yellowstone gRPC——无需迁移,无需学习新语法,也无需处理麻烦。

简而言之,LaserStream 是 Yellowstone gRPC 和 WebSockets 的可扩展、低延迟、容错型升级方案。它能在链上事件于网络中发生时立即持续提供数据,无需投入数百万资金进行质押,也无需自行运营高性能基础设施。 

LaserStream 是利用分片能力在 Solana 上实现超低延迟数据流的最简单方式。

客户端与性能

LaserStream 提供多种客户端,支持 Go、Rust 和 JavaScript/TypeScript。这些客户端会持续跟踪已传输的槽,在连接中断时自动执行重放。无论因何原因断开连接,客户端都会自动重新连接,并从上一个已处理的槽恢复传输。

LaserStream 的 JavaScript 客户端尤其值得关注,因为它使用原生 Rust 绑定。因此,该客户端的吞吐量可达 1.3 GB/s。这比当前 Yellowstone gRPC JavaScript 客户端提升了 40 倍,后者最高只能达到 30 MB/s。 

随着 Solana 持续扩展,Yellowstone gRPC JavaScript 客户端将难以跟上。LaserStream JavaScript 客户端充足的性能余量,可确保你的应用随着网络需求增长安全扩展。 

实际成果

低延迟 DEX 聚合器 DFlow 最近集成了 LaserStream,用于向其价格引擎提供数据。它选择集成 LaserStream,是因为这样既能实现全球扩展,又无需担心专用节点,还能节省工程资源,专注于路由和业务代码。 

据报道,自集成以来,DFlow 已节省超过八小时的周期性工程维护时间,在不间断传输数据的同时保持 100% 在线率,并通过更快的交易确认提升了报价速度。 

我们最重视的是用户安全。为了向交易者提供最优价格和最小价差,我们依靠 LaserStream 为价格引擎提供最新、最快的链上数据

Nitesh Nath
Nitesh Nath
DFlow CEO

更快的数据流,现在即可实现。

毫秒不只是延迟,更是机会。使用 LaserStream,你不仅能跟上网络,还能始终领先一步。 

想为交易、清算或预言机获取亚秒级数据?使用 LaserStream,获取目前速度最快的 Solana 数据。 

此外,如果你是高级用户并希望直接接收原始分片,请填写此表单与我们联系。

更多资源

订阅 Helius

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

放大图片