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 的每个交易。要缩小流范围,请将过滤器对象作为第一个元素传递 — 过滤在服务器端发生,因此您只需支付并接收您关心的交易。-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。
预确认是一种早期信号,而非保证。交易尚未落到链上,仍可能失败或被丢弃。在将其视为最终结果之前,请通过标准确认级别检查来确认交易已落地。
解码交易
交易字节会完全按照验证者序列化的结果转发,并采用该交易版本的标准线编码。旧版和 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"]。
相关内容
Preconfirmations Overview
了解 Preconfirmations 的含义及其在验证者流水线中的位置。
preconfUnsubscribe
使用订阅 ID 停止订阅。