includeBam: false 仅接收 Helius 预确认。
端点
preconfSubscribe 从 Helius Gatekeeper 端点提供服务:
wss://beta.helius-rpc.com/?api-key=<API_KEY>
beta 主机名指的是 Gatekeeper 投放,而不是预确认的成熟程度——随着流量迁移到 Gatekeeper,它将成为标准端点。
流不是连续的。覆盖范围随网络股份转发至 Helius 或运行 BAM 的份额而变化,因此预期有不带消息的槽位——优雅地处理这些间隙。参见覆盖范围。
授权
string
必填
您的 Helius API 密钥,作为
api-key 查询参数传递。需要专业计划或更高级别。正文
array
可选。省略
params 可接收来自 Helius 和 BAM 的每个预定交易。要缩小流的范围,请将过滤对象作为第一个元素传递——过滤在服务器端进行,因此您只需为您关心的交易付费并接收它们。-32602(无效参数)。
账户过滤器匹配的不仅仅是交易的静态账户密钥——Helius 在服务器端解析 v0 地址查找表,所以 accountInclude、accountExclude 和 accountRequired 也匹配通过 ALT 加载的账户。
地区代码
对于 Helius 预确认,地区是 Helius 吸收交易的位置。对于 BAM 预确认,它是发出预确认的区域 BAM 端点,而不是 Helius 吸收的位置。BAM 的新加坡和达拉斯端点映射到
sgp 和 dal。
响应
integer
订阅 ID(用于取消订阅)
通知
在 JSON 确认后,通知以二进制 WebSocket 帧传递(不是 JSON)。Helius 和 BAM 预确认共享相同的布局。每个帧是一个打包的字节布局,承载一个计划交易:
负载没有源字段。不要从
tx_index = 0 和 status = 2 推断 BAM 来源,因为 Helius 预确认可能携带相同的值。
只有 Helius 预确认携带执行状态。 Helius
预确认在验证器提供时报告
0(失败)或 1(成功),在不可用时报告 2。BAM 预确认始终
报告 2(未知),因此单靠 status 无法判断 BAM 来源的
交易是否成功。如果您的策略取决于执行状态,请设置
includeBam: false 或在链上确认结果。解码交易
交易字节将按照验证器序列化它们的方式直接转发,以交易版本的标准线编码进行。遗留和 v0 交易使用bincode 生成的签名优先布局。交易 v1(SIMD-0385)使用消息优先布局,签名在末尾,因此 bincode 在 v1 负载上会失败。
使用能处理每个版本的解码器。在 Rust 中,agave-transaction-view 可在原地解析遗留、v0 和 v1 交易,是推荐的选项;wincode 结合当前的 Solana SDK VersionedTransaction 也有效。在 JavaScript 中,请确保库版本支持交易 v1。参见 指南以获取 Rust 示例。
重复通知
Helius 和 BAM 预确认按来源去重,而不是跨来源去重。小部分交易会同时通过 Helius 到达,因此您可能会接收到相同的签名两次,而且两个副本可能会报告不同的槽位。在客户端按签名去重,并使交易触发的操作幂等。参见 指南。定价
预确认需要 专业计划或更高,费用为 每条消息 10 个积分——每个流式传输的交易一条消息。查看 积分 了解详情。 计费是按消息,而不是按唯一签名。由 Helius 和 BAM 传递的交易会计数两次。如果只需 Helius 预确认,请设置includeBam: false。
相关
Preconfirmations Overview
什么是预确认以及它们在验证器管道中的位置。
preconfUnsubscribe
停止通过其 ID 进行的订阅。