1
查找程序
猜测的指令名称是过滤器静默匹配不到内容的最常见方式。因此,首先调用 优先使用程序的地址而不是目录名称 —— 因为多个目录条目可以共享同一个名称,并且名称查找可能解析为程序的旧版本。
describeProgram 以获取匹配器对比的确切名称。Request
Response
route 和 shared_accounts_route 是涵盖大多数 Jupiter v6 交换的两个指令,因此需要对此进行过滤。2
构建过滤器
结合程序 ID、前一步的指令名称以及您要监控的钱包。字段通过 AND 组合,因此这将匹配与钱包的 SOL 账户相关的路由指令:
accounts.roles 将 user_transfer_authority 固定在指令中钱包的精确位置,这比单独使用 accounts.include 更严格:简单的地址匹配也可能捕捉到钱包作为指令中不相关账户出现的情况。角色名称完全匹配,因此它们是从 describeProgram 的 roles 列表中复制的,而不是猜测的。保留 includeCpi: true(默认值) —— 交换的实际代币运动发生在内层指令中。3
订阅并处理通知
使用过滤器打开订阅,然后读取每个匹配指令的解码参数:
matchedIndexes 仅指向过滤器命中的指令 — 跳过事务中的其他部分。在读取之前,请检查 decoded 是否存在:来自未索引程序版本的路线指令到达时带有 decoded: null 和原始字段。接下来的步骤
过滤字段参考
所有过滤字段、选项和限制。
处理重新连接
使此订阅在断开连接和部署时保持活动状态。