什么是transactionSubscribe?
transactionSubscribe WebSocket方法(为标准Solana WebSocket API的Helius扩展)支持实时交易事件。
要使用它,请提供TransactionSubscribeFilter,且可选地包含TransactionSubscribeOptions进行进一步定制。
transactionSubscribe 位于与标准 Solana 订阅方法相同的统一 wss://mainnet.helius-rpc.com 和 wss://devnet.helius-rpc.com 端点。
TransactionSubscribeFilter
vote:布尔标志,用于包含/排除与投票相关的交易failed:布尔标志,用于包含/排除失败的交易signature:根据其签名过滤特定交易的更新accountInclude:要接收交易更新的账户列表。仅需一个账户包含在交易更新中(例如,账户 1 或 2)。accountExclude:要从交易更新中排除的账户列表accountRequired:交易必须包括所有指定的账户才能包含在更新中(例如,账户 1 和 2)。tokenAccounts:选择加入关联代币账户 (ATA) 扩展 (balanceChanged,all, 或none)。参见下文的监视钱包,包括代币转账。
TransactionSubscribeOptions(可选)
commitment: 用于获取数据的承诺级别 (processed,confirmed或finalized)encoding: 返回数据的编码格式 (base58,base64或jsonParsed)transactionDetails: 返回数据的详细程度 (full,signatures,accounts和none)showRewards: 布尔标志,指示是否应在更新中包括奖励数据maxSupportedTransactionVersion: 指定要接收更新的最高交易版本。设置值为1以接收传统、v0 和 v1 交易。请参阅 Transaction v1 support。
maxSupportedTransactionVersion 是必需的,用于返回给定交易的账户和完整级别详细信息(即,transactionDetails: "accounts" | "full")。交易订阅示例
在此示例中,我们订阅包含 Raydium 账户675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 的交易。
当发生包含 675k...1Mp8 账户的交易,并出现在交易的 accountKeys 中时,我们将收到一个 WSS 通知。
根据订阅选项,交易通知将在 processed 承诺级别,jsonParsed 编码,full 交易详情下发送,并会显示奖励。
示例通知
监视钱包,包括代币转账
当您使用accountInclude 监视钱包时,只匹配钱包公钥直接出现在账户密钥中的交易。一个常见的情况没有匹配到:当有人向钱包发送 SPL 代币(例如 USDC)时,转账涉及的是钱包的关联代币账户 (ATA),而不是钱包公钥—因此简单的 accountInclude: [wallet] 订阅从未看到它。
设置 tokenAccounts 字段以扩展匹配,使被监视的账户也匹配其拥有代币余额的交易:
balanceChanged:当钱包拥有的代币余额在交易中变更(或其代币账户被关闭)时匹配。用于“告诉我何时资金实际移动”。这是更窄、低量的最常见选择。all:匹配任何引用钱包拥有的代币余额的交易,即使未更改。流量更大。none:不扩展。与省略字段相同(默认)。
-32602。省略 tokenAccounts 的订阅与之前的行为完全相同。有关ATA扩展如何工作的完整概述,请参阅 通过WebSocket的Token账户(ATA)过滤。
监控新的Jupiter DCA
Jupiter DCA,或称为定期定额投资,是在Solana上安排定期交易的一种方式。由于这些计划的买/卖订单是在链上记录的,交易者可以使用transactionSubscribe方法和getAsset来监听新订单。
示例通知

监控新的pump.fun代币
示例通知

管理订阅
订阅ID
当transactionSubscribe成功时,服务器会在result字段中返回一个订阅ID。这是每个来自该订阅的通知中出现的params.subscription中的相同号码:
取消订阅
要停止接收通知,请使用订阅ID调用transactionUnsubscribe。同一连接上的每个transactionSubscribe调用都会创建一个具有自己ID的独立订阅,因此请确保在重新订阅之前取消订阅以避免接收重复通知。
transactionUnsubscribe后,短时间内可能仍会有一些传输中的消息到达。这是预期行为。