tokenAccounts sur la méthode WebSocket transactionSubscribe permet à une souscription de faire correspondre l’activité sur les comptes de jetons associés (ATA) qu’un portefeuille possède, et pas seulement les transactions où la clé publique du portefeuille apparaît directement. Le même filtre est disponible sur gRPC — voir Filtrage des comptes de jetons (ATA) pour la version gRPC.
Le problème : les filtres de comptes simples manquent les transferts de jetons entrants
Lorsque vous surveillez un portefeuille avecaccountInclude: [wallet], vous ne faites correspondre que les transactions où cette clé publique du portefeuille apparaît dans les clés de compte de la transaction. Un cas courant échappe : quand quelqu’un envoie un jeton SPL (par exemple USDC) au portefeuille, le transfert touche le compte de jetons associé (ATA) du portefeuille — une adresse dérivée par programme distincte — pas la clé publique du portefeuille elle-même.
Ainsi, une souscription simple accountInclude: [wallet] ne voit jamais les transferts de jetons entrants. Vous devriez énumérer chaque ATA que le portefeuille possède à l’avance et les ajouter tous au filtre — mais les ATA sont créés à la demande (un par frappe), donc vous ne pouvez pas connaître l’ensemble complet à l’avance.
Comment fonctionne l’expansion tokenAccounts
Configurez tokenAccounts sur la souscription pour élargir la correspondance de sorte qu’un portefeuille accountInclude corresponde également aux transactions qui touchent un compte de jeton qu’il possède. La correspondance est basée sur le propriétaire : LaserStream résout les comptes de jetons détenus par vos adresses accountInclude au moment de la correspondance, donc il capte tout compte de jeton que le portefeuille possède — y compris les comptes non canoniques — et pas seulement l’adresse ATA dérivée. Vous n’avez jamais besoin de lister les ATA vous-même.
Les souscriptions qui omettent tokenAccounts se comportent exactement comme avant, donc c’est sûr à ajouter à un filtre existant.
Modes d’expansion
tokenAccounts prend l’une des trois valeurs de chaîne :
Commencez avec
"balanceChanged". Il capture le vrai mouvement de fonds à une fraction du volume de "all".
Utilisez-le dans transactionSubscribe
tokenAccounts est une extension Helius à l’API WebSocket standard de Solana. Une valeur invalide renvoie une erreur JSON-RPC -32602 : Invalid tokenAccounts value '<x>', expected one of: none, balanceChanged, all.
Lecture de ce qui a fait correspondance
Une fois qu’une transaction correspond via l’expansion ATA, le mouvement des jetons du portefeuille se trouve dans lemeta.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 bougé. L’exemple ci-dessus montre l’étape de filtrage.
Connexe
transactionSubscribe
Chaque filtre et option
transactionSubscribe, y compris tokenAccounts.Filtrage des comptes de jetons (gRPC)
La même expansion
tokenAccounts sur les filtres de transaction LaserStream gRPC.Démarrage rapide WebSocket
Connectez-vous à LaserStream WebSocket et diffusez vos premiers événements.