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つのアカウントのみが含まれている必要があります(例: アカウント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: 更新を受け取りたい取引の最高バージョンを指定します。レガシー、v0、およびv1の取引を受け取るには、値を1に設定します。トランザクションv1のサポート を参照してください。
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を介したトークンアカウント(ATA)フィルタリングを参照してください。
新しいJupiter DCAの監視
Jupiter DCA、またはドルコスト平均法は、Solanaで定期的な取引をスケジュールする方法です。これらの定期購入/販売注文はオンチェーンで記録されるため、トレーダーはtransactionSubscribeメソッドとgetAssetを使用して新しい注文をリスニングできます。
通知例

新しいpump.funトークンの監視
通知例

サブスクリプションの管理
サブスクリプションID
transactionSubscribeが成功すると、サーバーはresultフィールドにサブスクリプションIDを返します。これは、サブスクリプションからのすべての通知においてparams.subscriptionに表示される同じ番号です:
解除
通知を受け取らないようにするには、サブスクリプションIDを使ってtransactionUnsubscribeを呼び出します。同じ接続での各transactionSubscribe呼び出しは個別のIDを持つ別のサブスクリプションを作成するため、再サブスクライブする前に解除して重複通知の受信を避けてください。
transactionUnsubscribeを呼び出した直後に数件のフライトメッセージが届くことがあります。これは予想される動作です。