preprocessedSubscribe 在交易到达 processed 承诺级别之前流式传输签名交易,从切碎的交易中解码,无需在您这一侧进行取消切碎的基础设施。
本指南构建了一个监视器,观察交易程序的前执行,消除重复的数据流,保持在服务器的背压限制以下,并在操作前与处理过的数据进行对账。
将订阅范围缩小到您的目标
没有未过滤的数据流:accountInclude 和 accountRequired 必须在它们之间至少命名一个账户。对于交易监视器,请包含您针对的程序并排除其他噪声,否则您将为其付费:
accountRequired 字段中。
解码帧并通过签名去重
通知以二进制帧的形式到达:一个73字节的前缀,然后是经过bincode序列化的交易。签名在前缀中,因此您可以在不解码主体的情况下进行去重。数据流聚合了几个前执行源,同一交易可能不止一次到达:monitor.js
接收循环保持比数据流快
Helius 不会无限期缓冲慢速消费者:如果服务器端积压超过 4,000 条消息,连接将关闭。这就是为什么上面的处理器只读取 73 字节前缀并排队的原因。 反序列化和策略逻辑在一个单独的循环中运行:与处理过的数据进行对账
预处理的交易显示发送者尝试做的事情,而不是实际发生的事。它不包含执行状态、余额变化或日志,并且可能失败、被丢弃或进入不同的分叉。传递是尽力而为,没有历史重播,因此:- 在您的策略将任何内容记录为事实之前,与
transactionSubscribe在processed或confirmed承诺上进行对账。 - 在断开连接时,立即重新订阅并接受间隙,因为没有重播来填补它。
- 如果您需要实时账户状态而不是交易意图,那只有在执行后才存在:使用 LaserStream gRPC 在
processed。
相关指南
preprocessedSubscribe 参考
完整的负载布局、过滤规则、背压和定价
在预确认上进行交易
Helius 提供的最早的交易信号,来自调度程序本身