Skip to main content
Le filtre tokenAccounts de LaserStream permet à un abonnement aux transactions gRPC de correspondre aux activités sur les comptes de tokens associés (ATAs) qu’un portefeuille possède, et pas seulement aux transactions où la clé publique du portefeuille apparaît directement. Le même filtre est disponible via WebSocket — voir Filtrage des comptes de tokens (ATA) via WebSocket.

Le problème : les filtres de compte simples manquent les transferts de tokens entrants

Quand vous surveillez un portefeuille avec accountInclude: [wallet], vous ne faites correspondre que les transactions où la clé publique du portefeuille apparaît dans les clés de compte de la transaction. Un cas courant échappe à cette surveillance : lorsque quelqu’un envoie un token SPL au portefeuille (USDC, par exemple), le transfert touche le compte de token associé (ATA) du portefeuille — une adresse dérivée par programme distincte — pas la clé publique du portefeuille elle-même. Ainsi, un abonnement simple accountInclude: [wallet] ne voit jamais les transferts de tokens entrants. Vous devriez énumérer chaque ATA que le portefeuille possède à l’avance et ajouter chacun au filtre — mais les ATAs sont créés à la demande (un par frappe), vous ne pouvez donc pas connaître l’ensemble complet à l’avance.

Comment fonctionne l’expansion tokenAccounts

Définissez tokenAccounts sur un filtre de transaction pour élargir la correspondance afin qu’un portefeuille accountInclude corresponde également aux transactions qui touchent un compte de token qu’il possède. La correspondance est basée sur le propriétaire : LaserStream résout les comptes de tokens détenus par vos adresses accountInclude au moment de la correspondance, permettant de capturer tout compte de token que le portefeuille possède — y compris les non canoniques — pas seulement l’adresse ATA dérivée. Vous n’avez jamais à lister les ATAs vous-même. Les abonnements qui omettent tokenAccounts se comportent exactement comme avant, donc il est sûr de l’ajouter à un filtre existant.

Modes d’expansion

tokenAccounts prend l’une des trois valeurs de chaîne : Commencez avec "balanceChanged". Il capture les mouvements de fonds réels à une fraction du volume de "all".

Utilisation dans LaserStream gRPC

Ajoutez tokenAccounts à un filtre de transaction dans votre SubscribeRequest. Le SDK Helius LaserStream convertit la chaîne en enum de niveau filaire TokenAccountExpansionControlFlag pour vous (à partir de yellowstone-grpc-proto 12.5.0+).
Voir le guide de surveillance des transactions pour un exemple plus complet qui compare les soldes avant et après, et la référence de demande d’abonnement pour chaque champ de filtre de transaction.

Lecture de ce qui a été correspondant

Une fois qu’une transaction correspond via l’expansion ATA, le mouvement de tokens du portefeuille se trouve dans meta.postTokenBalances et meta.preTokenBalances de la transaction. Filtrez ces entrées par owner pour isoler les soldes que votre portefeuille possède réellement, puis comparez preTokenBalances à postTokenBalances sur le même accountIndex pour voir combien chaque frappe a déplacé. L’exemple ci-dessus montre l’étape de filtrage ; le guide de surveillance des transactions montre la comparaison complète.

Connexe

Surveillance des transactions

Stratégies de filtrage complètes et exemple exécutable de surveillance de portefeuille via gRPC.

Filtrage des comptes de tokens (WebSocket)

Le même champ tokenAccounts sur la méthode WebSocket transactionSubscribe.

Référence de demande d'abonnement

Chaque champ de filtre de transaction, y compris tokenAccounts.

Filtres comprimés

Suivez des centaines de milliers de comptes dans un flux unique.