tokenAccounts-Filter von LaserStream kann eine gRPC-Transaktions-Subscription Aktivitäten auf den zugehörigen Token Accounts (ATAs) einer Wallet erkennen, nicht nur Transaktionen, in denen der Pubkey der Wallet direkt vorkommt. Derselbe Filter ist über WebSocket verfügbar – siehe Filtern nach Token Accounts (ATA) über WebSocket.
Das Problem: Einfache Account-Filter übersehen eingehende token-Übertragungen
Wenn du eine Wallet mitaccountInclude: [wallet] überwachst, werden nur Transaktionen erkannt, bei denen der Pubkey dieser Wallet in den Account-Keys der Transaktion vorkommt. Ein häufiger Fall wird übersehen: Wenn jemand ein SPL-token wie USDC an die Wallet sendet, betrifft die Übertragung den zugehörigen Token Account (ATA) der Wallet – eine separate, vom Programm abgeleitete Adresse – und nicht den Pubkey der Wallet selbst.
Eine einfache accountInclude: [wallet]-Subscription erkennt daher keine eingehenden token-Übertragungen. Du müsstest vorab jeden ATA der Wallet ermitteln und einzeln zum Filter hinzufügen. ATAs werden jedoch bei Bedarf erstellt – einer pro Mint –, sodass du nicht alle im Voraus kennen kannst.
So funktioniert die tokenAccounts-Erweiterung
Setze tokenAccounts in einem Transaktionsfilter, damit eine accountInclude-Wallet auch mit Transaktionen übereinstimmt, die einen Token Account in ihrem Besitz betreffen. Das Matching ist owner-basiert: LaserStream ermittelt beim Matching die Token Accounts, die deinen accountInclude-Adressen gehören. Dadurch erkennt es jeden Token Account der Wallet – einschließlich nicht kanonischer Accounts – und nicht nur die abgeleitete ATA-Adresse. Du musst die ATAs nie selbst auflisten.
Subscriptions ohne tokenAccounts verhalten sich genau wie bisher. Du kannst das Feld daher problemlos zu einem vorhandenen Filter hinzufügen.
Wenn du nach token statt nach Wallet filtern möchtest, sieh dir Token-Mint-Filterung an. Die beiden Flags lassen sich kombinieren. So kann ein Filter die Aktivität einer einzelnen Wallet für einen einzelnen token überwachen.
Erweiterungsmodi
tokenAccounts akzeptiert einen von drei String-Werten:
Beginne mit
"balanceChanged". Damit erfasst du tatsächliche Geldbewegungen bei nur einem Bruchteil des Volumens von "all".
In LaserStream gRPC verwenden
FügetokenAccounts einem Transaktionsfilter in deinem SubscribeRequest hinzu. Das Helius LaserStream SDK konvertiert den String für dich in das TokenAccountExpansionControlFlag-Enum auf Wire-Ebene (Teil von yellowstone-grpc-proto ab Version 12.5.0).
Treffer auslesen
Sobald eine Transaktion über die ATA-Erweiterung übereinstimmt, findest du die token-Bewegungen der Wallet inmeta.postTokenBalances und meta.preTokenBalances der Transaktion. Filtere diese Einträge nach owner, um die Guthaben zu isolieren, die tatsächlich deiner Wallet gehören. Vergleiche dann preTokenBalances mit postTokenBalances für denselben accountIndex, um zu sehen, wie stark sich jeder Mint bewegt hat. Das obige Beispiel zeigt den Filterschritt. Der Leitfaden zur Transaktionsüberwachung zeigt den vollständigen Vergleich.
Verwandte Themen
Transaction Monitoring
Umfassende Filterstrategien und ein ausführbares Beispiel zur Wallet-Überwachung über gRPC.
Token Account Filtering (WebSocket)
Dasselbe Feld
tokenAccounts für die WebSocket-Methode transactionSubscribe.Subscribe Request Reference
Alle Felder für Transaktionsfilter, einschließlich
tokenAccounts.Compressed Filters
Verfolge Hunderttausende Konten in einem einzigen stream.
Token Mint Filtering
Abonniere mit
matchMints jede Transaktion für einen token Mint.