Skip to main content
LaserStream の tokenAccounts フィルターを使用すると、gRPC トランザクションサブスクリプションで、ウォレットの公開鍵が直接含まれるトランザクションだけでなく、ウォレットが所有する関連トークンアカウント (ATA) 上のアクティビティも照合できます。同じフィルターは WebSocket でも利用できます。詳しくは、WebSocket でのトークンアカウント (ATA) フィルタリングを参照してください。

問題点:通常のアカウントフィルターでは受信トークン転送を検出できません

accountInclude: [wallet] でウォレットを監視する場合、そのウォレットの公開鍵がトランザクションのアカウントキーに含まれるトランザクションのみが照合されます。しかし、一般的なケースが検出対象から漏れます。誰かがウォレットに SPL トークン(USDC など)を送信すると、転送ではウォレットの公開鍵自体ではなく、別のプログラム派生アドレスであるウォレットの関連トークンアカウント (ATA) にアクセスします。 そのため、通常の accountInclude: [wallet] サブスクリプションでは、受信トークン転送を検出できません。ウォレットが所有するすべての ATA を事前に列挙し、それぞれをフィルターに追加する必要があります。しかし、ATA は必要に応じて(ミントごとに 1 つ)作成されるため、完全なセットを事前に把握することはできません。

tokenAccounts 拡張の仕組み

トランザクションフィルターに tokenAccounts を設定すると、照合範囲が拡張され、accountInclude ウォレットが所有するトークンアカウントにアクセスするトランザクションも照合対象になります。照合は所有者ベースです。LaserStream は照合時に accountInclude アドレスが所有するトークンアカウントを解決するため、派生 ATA アドレスだけでなく、非正規のものを含め、ウォレットが所有するすべてのトークンアカウントを検出します。ATA を自分で列挙する必要はありません。 tokenAccounts を省略したサブスクリプションは従来どおりに動作するため、既存のフィルターにも安全に追加できます。 ウォレットではなくトークンで照合する方法については、トークンミントフィルタリングを参照してください。この 2 つのフラグは組み合わせられるため、1 つのフィルターで、単一トークンにおける特定ウォレットのアクティビティを監視できます。

拡張モード

tokenAccounts には、次の 3 つの文字列値のいずれかを指定します。 まずは "balanceChanged" を使用してください。"all" よりもはるかに少ないデータ量で、実際の資金移動を検出できます。

LaserStream gRPC での使用方法

SubscribeRequest のトランザクションフィルターに tokenAccounts を追加します。Helius LaserStream SDK は、文字列をワイヤーレベルの TokenAccountExpansionControlFlag 列挙型に自動変換します(yellowstone-grpc-proto 12.5.0 以降に含まれます)。
前後の残高差分を計算する詳細な例については、トランザクション監視ガイドを参照してください。すべてのトランザクションフィルターフィールドについては、Subscribe リクエストのリファレンスを参照してください。

照合結果の確認

ATA 拡張によってトランザクションが照合されると、ウォレットのトークン移動はトランザクションの meta.postTokenBalances と meta.preTokenBalances に記録されます。これらのエントリを owner でフィルタリングし、ウォレットが実際に所有する残高だけを抽出します。次に、同じ accountIndex における preTokenBalances と postTokenBalances の差分を計算し、各ミントの移動量を確認します。上記の例ではフィルタリング手順を示しています。完全な差分計算については、トランザクション監視ガイドを参照してください。

関連情報

Transaction Monitoring

詳細なフィルタリング方法と、gRPC で実行できるウォレット監視の例です。

Token Account Filtering (WebSocket)

WebSocket の transactionSubscribe メソッドで同じ tokenAccounts フィールドを使用します。

Subscribe Request Reference

tokenAccounts を含む、すべてのトランザクションフィルターフィールドです。

Compressed Filters

1 つのストリームで数十万のアカウントを追跡します。

Token Mint Filtering

matchMints を使用して、トークンミントのすべてのトランザクションをサブスクライブします。