公共测试版。
preprocessedSubscribe 可在 所有付费计划 上使用,并按 每条消息 0.1 积分 (每交易一条消息)计费。什么是 preprocessedSubscribe?
preprocessedSubscribe 是一种 Helius WebSocket 方法,用于流式传输预处理交易 — 即在交易达到 processed 承诺级别之前交付的预执行 Solana 交易。Helius 聚合多个预执行源 — 主要是直接从抵押节点到达时解码的碎片,并通过计划交易(预确认)信号补充 — 将它们作为单个去重的紧凑二进制消息流交付,无需您方的消除碎片基础设施。
从预确认信号获取的交易在此馈送上到达的时间比专用的 Preconfirmations 产品要晚,该产品仍是最早接收交易的途径。
这是早期的预处理 LaserStream 产品的继任者。如果您今天通过 gRPC 预处理交易 消费,请切换到此方法 — 它通过普通 WebSocket 连接以更低的延迟交付同类数据,而 gRPC 交付将被弃用。
端点
preprocessedSubscribe 从 wss://beta.helius-rpc.com 提供服务 — Helius Gatekeeper 端点 — 而不是 mainnet.helius-rpc.com。使用您的 API 密钥作为查询参数进行身份验证:
订阅
使用preprocessedSubscribe 方法发送一个 JSON-RPC 请求。params 携带账户过滤器并且是必需的 — accountInclude 和 accountRequired 必须在它们之间至少指定一个账户(参见过滤):
过滤
每个订阅都通过params 中的账户过滤器进行范围限定。过滤发生在服务器端,因此您只会收到您关心的交易:
过滤规则:
- 三个过滤器以 AND 逻辑组合。
accountInclude和accountRequired必须在它们之间指定 至少一个账户 — 没有没有过滤的完整流。- 账户是 base58 编码的公钥。每个列表最多接受 5,000 个地址。
地址查找表(ALT)解析
账户过滤器不仅匹配交易的静态账户键 — Helius 在服务器端解析 地址查找表,因此accountInclude、accountExclude 和 accountRequired 也匹配交易通过 ALT 加载的账户。只需传递账户的公钥;无需自行维护 ALT 映射或解析表。
通知有效负载
通知以 二进制 WebSocket 帧(而非 JSON)交付。每个帧以打包的字节布局携带一个交易:
按顺序读取固定的 73 字节前缀,然后使用
bincode 反序列化剩余字节为 VersionedTransaction 以读取指令、账户和地址表查找。签名包含在前缀中,因此您可以在不解码完整交易体的情况下识别和去重交易。
始终首先读取和检查 version 字节。如果 Helius 需要更新有效负载格式,版本将递增 — 进行分支以便您的解码器在模式更改时保持工作。
示例
可用数据是什么?
每个通知携带签名交易、其第一个签名和其插槽。由于交付发生在执行之前,流不包括:- 执行状态或错误
- 执行前/执行后的余额或代币余额变化
- 日志消息或内部指令
- 所消耗的计算单元
processed 承诺下使用 LaserStream gRPC。
背压
对于慢速消费者,流不会无限期缓冲。如果您的客户端读取速度太慢,服务器端积压超过 4,000 条消息,Helius 会关闭连接 — 您将收到一个干净的 WebSocket 关闭帧。请比消息到达更快地排出帧:将繁重工作(如交易解码和策略逻辑)保持在接收循环之外,并在断开连接后重新连接和重新订阅。交付保证
交付是尽力而为的,无法保证,并且没有历史重播。客户端应该:- 连接关闭后重新连接和重新订阅。
- 按交易签名去重。
- 将插槽视为观察而非终结。
- 当执行结果重要时,与处理或确认的流对账。
定价
preprocessedSubscribe 可在 所有付费计划 上使用,并按 每条消息 0.1 积分 计费 — 每交易一条消息,从您的计划中扣除。详见 积分。
相关
预处理交易 (gRPC)
相同的预执行数据通过 gRPC 提供。将弃用,建议使用此方法。
预确认
在成为碎片前进行流式传输的计划交易 — 最早的交易信号。
原始碎片 (UDP)
未处理的 UDP 碎片包。您需要实现碎片重组。
transactionSubscribe
具有丰富过滤和执行元数据的后执行交易。