Skip to main content

概述

预处理交易是在执行前的 Solana 交易,在达到 processed 承诺级别之前交付。Helius 汇总了多个预执行来源——主要是直接解码到验证器的碎片,并通过预确认信号进行补充——并将它们作为单一去重流交付,不需要接收原始碎片包或在您这边操作解碎片基础设施。 从预确认信号获取的交易比专门的 Preconfirmations 产品流中到达得晚,后者仍然是最早的访问方式。 使用预处理交易的方式是 preprocessedSubscribe WebSocket 方法(公开测试版)——在所有付费计划中提供,每条消息0.1 积分。

preprocessedSubscribe (WSS)

推荐的预处理交易流传输方式:账户过滤、紧凑的二进制载荷,适用于所有付费计划。

预处理交易在生命周期中的位置

在 Solana 的架构中,交易在成为完全处理之前会经历几个阶段:
  1. 碎片接收 → 验证器接收交易碎片(数据片段)。← 原始碎片(UDP) 在此交付。
  2. 碎片解码 → 碎片解码成原始交易。← 预处理交易主要在此交付。
  3. 交易执行 → 运行时执行交易。
  4. 元数据生成 → 计算预/后余额、日志和错误信息。
  5. 承诺 → 交易达到已处理/确认/最终状态。← LaserStream gRPC 和 LaserStream WebSocket 在此交付。
执行后的订阅在第 5 阶段交付数据——在完全执行和元数据生成之后。预处理的交易在第 2 阶段时间点交付——在碎片解码后,执行完成之前。对于更早的信号,预确认在交易成为碎片之前流传交易。 权衡: 您更早接收交易数据,但没有执行元数据,如余额变化、日志或错误信息。
这仅是交易流。 账户和程序状态更新在运行时执行交易之前不存在。如果您需要实时 账户或程序更新——代币余额、绑定曲线状态、程序账户——请使用 LaserStream gRPC 在 processed 承诺 代替。

可用数据是什么?

预处理交易包含完整的签名交易,但缺乏执行元数据:

可用数据

  • ✅ 交易签名 - 唯一的交易标识符
  • ✅ 账户密钥 - 交易引用的所有账户
  • ✅ 指令 - 完整的指令数据和程序调用
  • ✅ 最新块哈希 - 交易到期参考
  • ✅ 签名 - 所有交易签名
  • ✅ 插槽编号 - 观察到交易的插槽

缺失数据

  • ❌ 交易元数据 - 代币余额变化、预/后余额、交易状态
  • ❌ 交易错误 - 无法确定交易是否失败
  • ❌ 内部指令 - 不包含跨程序调用 (CPI)
  • ❌ 日志消息 - 程序日志在执行期间生成
  • ❌ 消耗的计算单元 - 无法获得执行指标
将预处理交易视为接收“提案”而非“结果”。您看到发送者试图做什么,但不清楚实际发生了什么。

交付保证

交付是尽力而为,无法保证,并且没有历史重播。流式交易是预执行信号,不是承诺级别——可能失败、被丢弃或着陆在不同的分支上。通过签名去重,并在执行结果重要时与处理或确认流对账。 对于需要保证交付和完整数据的关键应用,使用 LaserStream gRPC。

何时使用预处理交易

需要解码、预执行交易而不需操作碎片解码器的低延迟应用:
  • propAMMs
  • 狙击手
  • 复制交易者
  • 清算机器人
  • 套利
如果每微秒都重要,并且您可以以线速度去碎片化,请使用 raw shreds(UDP)。如果您需要最早的信号,请使用 Preconfirmations。

定价

preprocessedSubscribe 在所有付费计划中可用,按每条消息0.1 积分计费——每传递一笔交易计一条消息。详情见 Credits。

常见问题

不,过滤器由初始 preprocessedSubscribe 确定。为了避免间隙,建议开启第二个连接新过滤器,等待其订阅确认,然后切换服务至新过滤器。
10 个并发连接的限制是按每个 API 密钥实施的。项目中的每个 API 密钥都有自己的 10 个连接限制。

下一步

通过 preprocessedSubscribe 订阅

端点、账户过滤、二进制有效负载布局和代码示例。

预确认

在交易成为碎片之前流传——最早的交易信号。

原始碎片 (UDP)

通过 UDP 传输的未处理碎片包。您实现解碎片。

Helius 发送者

以最快的交易着陆速度采取行动。