跳转到主要内容

概述

OrbitFlare Jetstream v2 是一个高性能 gRPC 服务,用于实时流式传输 Solana 交易。它在更丰富、更灵活的协议之上提供与 v1 相同的极低延迟数据流——让您可以即时调整订阅,并接收预先计算好的交易元数据,从而让客户端的工作更少。 v2 与 v1 在相同的端点上提供服务(JetstreamV2 服务在同一连接上按 gRPC 方法路径进行路由),因此您的网络设置无需任何改动——唯一的区别只是您用来生成客户端的协议。

亮点

  • 动态过滤器——在数据流打开期间随时添加和移除过滤器,每个过滤器都带有由客户端选择的 filter_id,并会在每笔匹配的交易上回显。无需重连,且每次更改都会通过 FilterResult 得到确认。
  • 可选富化——直接在每笔交易上请求 fee_payerwritable_accountsprogram_idscompute_unit_price(计算单元价格,即微 lamports/CU,而非总费用)、compute_limittx_size 以及已解析的地址查找表地址,而无需在客户端重新推导。
  • 槽位生命周期流——专用的 SubscribeSlots 流为每个槽位发出 ALIVE / COMPLETE / DEAD 事件,并附带当前 leader 和父槽位。
  • 内置存活检测——每条消息都携带一个单调递增的 sequence 编号用于间隙检测,并且当交易流空闲时服务器会发出 Heartbeat
  • 按需富化——默认情况下,v2 交易是一条包含核心字段的扁平消息;随时可以按订阅开启富化,在您需要时添加额外字段。
如需逐项对照每项能力及其为您节省的工作,请参见 v2 有哪些新变化

身份验证

身份验证与 v1 相同:在 x-token gRPC 元数据头中提供您的 API 密钥,或使用 IP 白名单身份验证。设置详情请参见身份验证

连接

  1. 选择离您基础设施最近的区域端点(与 v1 主机相同)。
  2. jetstream.v2 protobuf 定义生成客户端——请参见参考文档中的代码生成
  3. 使用您的 x-token API 密钥(或从白名单 IP)进行身份验证并打开数据流。

流式传输的工作原理

SubscribeTransactions 是一个双向流——您可以在接收数据的同一连接上管理订阅:
  1. 打开数据流并发送一个包含一个或多个过滤器的 AddFilters 请求。每个过滤器至少需要 account_include / account_exclude / account_required 之一。(空的”匹配一切”过滤器会被拒绝。)account_required任一匹配——如果一笔交易引用了所列账户中的至少一个(与 account_include 相同,也与 v1 相同),则匹配,而不需要引用全部账户。
  2. 服务器为每个过滤器回复一个 FilterResultaccepted,或一个 rejection_reason)。
  3. 匹配的交易作为 FilteredTransaction 消息到达,每条都列出它所匹配的 filter_id 值。
  4. 随时发送 AddFilters / RemoveFilters 来更改您接收的内容——无需重连。
  5. 当交易流空闲时,服务器会发送 Heartbeat 消息;请使用它们(以及 Ping/Pong)来确认存活。
  6. 跟踪 sequence 编号以检测任何间隙,如果数据流关闭则重新连接(并重新发送您的过滤器)。
要接收富化交易,请在过滤器上设置 include_enrichment: true
富化是面向整个订阅的:如果您的任一活动过滤器设置了 include_enrichment,则该会话接收的每笔交易都会被富化。在您需要额外字段时,随时可以按订阅开启它——它不会给数据流增加任何延迟;唯一的区别是消息略大一些。

槽位事件

打开 SubscribeSlots(一个独立的、服务器流式 RPC,无参数)以接收每次槽位转换的 SlotEvent
  • ALIVE——收到了该槽位的第一个 shred。
  • COMPLETE——收到了该槽位的最后一个 shred。
  • DEAD——该槽位被跳过,或在未完成的情况下被后续槽位取代。
每个事件都包含 current_leader(32 字节公钥,当前 leader 可用时)和 parent_slot

选择 v1 还是 v2

对于新集成,v2 是推荐的协议——富化、槽位事件和动态过滤都在这里。v1 仍然可用并受支持;如果您已有 v1 客户端,目前没有强制迁移。这两个服务在相同的端点上并行运行。

最佳实践

  1. 过滤——始终设置至少一个账户约束,并为每个过滤器使用稳定且唯一的 filter_id,以便您可以关联匹配结果并在之后移除过滤器。
  2. 富化——除非您需要额外字段,否则将其关闭;它会应用于整个订阅。
  3. 重连——跟踪 sequence 以发现间隙并自动重连,同时重新发送您的过滤器。
  4. 存活检测——依靠 Heartbeat / Ping 来检测停滞的连接。

另请参阅

v2 有哪些新变化

完整的 v1 与 v2 对比,以及每项能力为您节省的工作。

v2 协议参考

完整的 v2 Protocol Buffer 规范、端点和代码生成。

Jetstream (v1)

v1 概述、客户端示例和过滤指南。

Yellowstone gRPC

支持内部指令和完整元数据的基于 Geyser 的全保真度流式传输。

支持

如需有关 Jetstream v2 的技术支持或问题咨询,请联系我们的支持团队或加入我们的 Discord 社区