跳转到主要内容
启动 Preconfirmations 订阅——这些交易会在被收集到条目并转换为 shred 之前交付。这是 Helius 提供的最低延迟交易信号。一个订阅会同时传输 Helius 预确认和 BAM 预确认:前者在领导者执行交易的瞬间发出,并携带执行状态;后者在验证者承诺执行交易时发出。使用 includeSource 选择任一来源。

端点

preconfSubscribe 从 Helius Gatekeeper 端点提供服务:
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
beta 主机名指的是 Gatekeeper 投放,而不是预确认的成熟程度——随着流量迁移到 Gatekeeper,它将成为标准端点。
流不是连续的。覆盖范围随网络股份转发至 Helius 或运行 BAM 的份额而变化,因此预期有不带消息的槽位——优雅地处理这些间隙。参见覆盖范围。

授权

string
必填
你的 Helius API 密钥,作为 api-key 查询参数传递。所有付费套餐均可使用 Preconfirmations。

正文

array
可选。省略 params 以接收来自 Helius 和 BAM 的每个交易。要缩小流范围,请将过滤器对象作为第一个元素传递 — 过滤在服务器端发生,因此您只需支付并接收您关心的交易。
无效的来源、公钥、签名、指令过滤器或区域代码会返回 JSON-RPC 错误 -32602(参数无效)。将 includeSource 与已弃用的 includeBam 字段组合使用也会返回 -32602。指令过滤器仅检查顶层指令,不会匹配通过跨程序调用(CPI)调用的指令。memcmp 的结束偏移量和 dataSize 不得超过 4,096 字节。 账户过滤器不仅匹配交易的静态账户密钥——Helius 会在服务器端解析 v0 地址查找表,因此 accountInclude、accountExclude 和 accountRequired 也会匹配交易通过 ALT 加载的账户。

区域代码

对于 Helius 预确认,区域是 Helius 接收交易的位置。对于 BAM 预确认,区域是发出预确认的 BAM 区域端点,而不是 Helius 接收交易的位置。BAM 的新加坡和达拉斯端点分别映射到 sgp 和 dal。

响应

integer
订阅 ID(取消订阅时需要)

通知

返回 JSON 确认后,通知会以二进制 WebSocket 帧(而非 JSON)的形式交付。Helius 和 BAM 预确认采用相同的布局。每个帧都是经过紧凑编码的字节布局,携带一笔交易: 载荷没有来源字段。不要根据 tx_index = 0 推断其来自 BAM,因为其他来源也可能报告 0。
始终先读取并检查 version 字节。 当前值为 1。如果 Helius 需要更新载荷格式,版本号将递增——请根据版本号进行分支处理, 以确保解码器在架构变更后仍能正常工作。
预确认是一种早期信号,而非保证。交易尚未落到链上,仍可能失败或被丢弃。在将其视为最终结果之前,请通过标准确认级别检查来确认交易已落地。

解码交易

交易字节会完全按照验证者序列化的结果转发,并采用该交易版本的标准线编码。旧版和 v0 交易使用 bincode 生成的签名优先布局。交易 v1(SIMD-0385)使用消息优先布局,签名位于末尾,因此 bincode 无法处理 v1 载荷。 请使用可处理所有版本的解码器。在 Rust 中,agave-transaction-view 可就地解析旧版、v0 和 v1 交易,是推荐选项;搭配当前 Solana SDK VersionedTransaction 使用的 wincode 也可以。在 JavaScript 中,请确保你的库版本支持交易 v1。有关 Rust 示例,请参阅指南。

重复通知

Helius 和 BAM 预确认会分别按来源去重,而不会跨来源去重。一小部分交易会同时通过两者到达 Helius,因此你可能会收到两次相同的签名,而且两份通知可能报告不同的时隙。请在客户端按签名去重,并确保由交易触发的操作具有幂等性。请参阅指南。

定价

Preconfirmations 适用于所有付费套餐:Developer、Business、Professional 和 Enterprise。免费套餐不符合使用条件。详情请参阅积分。 即使某个时隙在 Preconfirmations 的覆盖范围内,只要交付的消息数为零,就不会消耗积分。当某个时隙至少交付一条消息时,每个打开的 preconfSubscribe 订阅将按 300 积分或每条已交付消息 10 积分中的较高者计费。未覆盖的时隙不消耗积分。有关来源和区域的计费资格,请参阅定价。 每个并发订阅在收到至少一条消息时都会单独计费。使用 preconfUnsubscribe 关闭不再需要的订阅。使用 includeSource: ["helius"] 时,仅由 BAM 覆盖的时隙不会计费。设置 regionInclude 后,所选区域之外的覆盖时隙不会消耗该订阅的积分;只有当订阅收到至少一条消息时,匹配的时隙才会计费。 计费按消息计算,而不是按唯一签名计算。如果一笔交易同时由 Helius 和 BAM 交付,则会计算两次。如果你只需要 Helius Preconfirmations,请设置 includeSource: ["helius"]。
为了控制成本,请尽可能将账户过滤器合并到一个订阅中,使用 regionInclude 将计费限制在你需要的区域,不需要 BAM 时设置 includeSource: ["helius"],并在 Helius 控制面板中监控积分。

相关内容

Preconfirmations Overview

了解 Preconfirmations 的含义及其在验证者流水线中的位置。

preconfUnsubscribe

使用订阅 ID 停止订阅。