Skip to main content
公共测试版。 preprocessedSubscribe 可在 所有付费计划 上使用,并按 每条消息 0.1 积分 (每交易一条消息)计费。

什么是 preprocessedSubscribe

preprocessedSubscribe 是一种 Helius WebSocket 方法,用于流式传输预处理交易 — 即在交易达到 processed 承诺级别之前交付的预执行 Solana 交易。Helius 聚合多个预执行源 — 主要是直接从抵押节点到达时解码的碎片,并通过计划交易(预确认)信号补充 — 将它们作为单个去重的紧凑二进制消息流交付,无需您方的消除碎片基础设施。 从预确认信号获取的交易在此馈送上到达的时间比专用的 Preconfirmations 产品要晚,该产品仍是最早接收交易的途径。 这是早期的预处理 LaserStream 产品的继任者。如果您今天通过 gRPC 预处理交易 消费,请切换到此方法 — 它通过普通 WebSocket 连接以更低的延迟交付同类数据,而 gRPC 交付将被弃用。
preprocessedSubscribe 是一个 尽力而为的预执行信号,而不是承诺级别。流式传输的交易可能会失败、被丢弃或落在不同的分叉上。在视为最终结果之前,请与处理或确认的流进行对账。

端点

preprocessedSubscribewss://beta.helius-rpc.com 提供服务 — Helius Gatekeeper 端点 — 而不是 mainnet.helius-rpc.com。使用您的 API 密钥作为查询参数进行身份验证:
每个 API 密钥最多可建立 10 个并发连接/订阅

订阅

使用 preprocessedSubscribe 方法发送一个 JSON-RPC 请求。params 携带账户过滤器并且是必需的 — accountIncludeaccountRequired 必须在它们之间至少指定一个账户(参见过滤):
服务器用包含订阅 ID 的 JSON 文本帧确认订阅:
在此确认之后,交易更新以 二进制 WebSocket 帧到达 — 参见通知有效负载

过滤

每个订阅都通过 params 中的账户过滤器进行范围限定。过滤发生在服务器端,因此您只会收到您关心的交易:
过滤规则:
  • 三个过滤器以 AND 逻辑组合。
  • accountIncludeaccountRequired 必须在它们之间指定 至少一个账户 — 没有没有过滤的完整流。
  • 账户是 base58 编码的公钥。每个列表最多接受 5,000 个地址。

地址查找表(ALT)解析

账户过滤器不仅匹配交易的静态账户键 — Helius 在服务器端解析 地址查找表,因此 accountIncludeaccountExcludeaccountRequired 也匹配交易通过 ALT 加载的账户。只需传递账户的公钥;无需自行维护 ALT 映射或解析表。

通知有效负载

通知以 二进制 WebSocket 帧(而非 JSON)交付。每个帧以打包的字节布局携带一个交易: 按顺序读取固定的 73 字节前缀,然后使用 bincode 反序列化剩余字节为 VersionedTransaction 以读取指令、账户和地址表查找。签名包含在前缀中,因此您可以在不解码完整交易体的情况下识别和去重交易。 始终首先读取和检查 version 字节。如果 Helius 需要更新有效负载格式,版本将递增 — 进行分支以便您的解码器在模式更改时保持工作。

示例

可用数据是什么?

每个通知携带签名交易、其第一个签名和其插槽。由于交付发生在执行之前,流包括:
  • 执行状态或错误
  • 执行前/执行后的余额或代币余额变化
  • 日志消息或内部指令
  • 所消耗的计算单元
可以看作是接收到了“提案”而非“结果” — 您可以看到发送者尝试执行的内容,但无法看到真正发生了什么。在此阶段账目和程序状态更新尚不存在;如果您需要实时账户状态,请在 processed 承诺下使用 LaserStream gRPC

背压

对于慢速消费者,流不会无限期缓冲。如果您的客户端读取速度太慢,服务器端积压超过 4,000 条消息,Helius 会关闭连接 — 您将收到一个干净的 WebSocket 关闭帧。请比消息到达更快地排出帧:将繁重工作(如交易解码和策略逻辑)保持在接收循环之外,并在断开连接后重新连接和重新订阅。

交付保证

交付是尽力而为的,无法保证,并且没有历史重播。客户端应该:
  1. 连接关闭后重新连接和重新订阅。
  2. 按交易签名去重。
  3. 将插槽视为观察而非终结。
  4. 当执行结果重要时,与处理或确认的流对账。

定价

preprocessedSubscribe 可在 所有付费计划 上使用,并按 每条消息 0.1 积分 计费 — 每交易一条消息,从您的计划中扣除。详见 积分

相关

预处理交易 (gRPC)

相同的预执行数据通过 gRPC 提供。将弃用,建议使用此方法。

预确认

在成为碎片前进行流式传输的计划交易 — 最早的交易信号。

原始碎片 (UDP)

未处理的 UDP 碎片包。您需要实现碎片重组。

transactionSubscribe

具有丰富过滤和执行元数据的后执行交易。