tokenAccounts-Filter von LaserStream ermöglicht es einem gRPC-Transaktionsabonnement, Aktivitäten auf den zugehörigen Tokenkonten (ATAs), die ein Wallet besitzt, zu matchen, nicht nur Transaktionen, bei denen der Pubkey des Wallets direkt erscheint. Der gleiche Filter ist über WebSocket verfügbar — siehe Tokenkonto (ATA) Filterung über WebSocket.
Das Problem: einfache Kontofilter verpassen eingehende Token-Transfers
Wenn Sie ein Wallet mitaccountInclude: [wallet] überwachen, matchen Sie nur Transaktionen, bei denen dieser Wallet-Pubkey in den Account-Keys der Transaktion erscheint. Ein häufiger Fall bleibt unbemerkt: Wenn jemand dem Wallet ein SPL-Token (z. B. USDC) sendet, berührt der Transfer das zugehörige Tokenkonto (ATA) des Wallets — eine separate programmgenerierte Adresse — nicht den Pubkey des Wallets selbst.
So sieht ein einfaches accountInclude: [wallet]-Abonnement niemals eingehende Token-Transfers. Sie müssten jedes ATA, das das Wallet im Voraus besitzt, aufzählen und jedes in den Filter aufnehmen — aber ATAs werden bei Bedarf erstellt (eines pro Mint), sodass Sie die vollständige Menge im Voraus nicht kennen können.
Wie die tokenAccounts-Erweiterung funktioniert
Stellen Sie tokenAccounts auf einen Transaktionsfilter ein, um das Matching so zu erweitern, dass ein accountInclude-Wallet auch Transaktionen matcht, die ein Tokenkonto berühren, das es besitzt. Das Matching ist eigentümerbasiert: LaserStream löst die Tokenkonten auf, die sich im Besitz Ihrer accountInclude-Adressen befinden, zum Matching-Zeitpunkt, sodass es jedes Tokenkonto erfasst, das das Wallet besitzt — einschließlich nicht-kanonischer — nicht nur die abgeleitete ATA-Adresse. Sie müssen die ATAs niemals selbst auflisten.
Abonnements, die tokenAccounts auslassen, verhalten sich genau wie zuvor, daher ist es sicher, sie zu einem vorhandenen Filter hinzuzufügen.
Erweiterungsmodi
tokenAccounts nimmt einen von drei String-Werten an:
Beginnen Sie mit
"balanceChanged". Es erfasst reale Mittelbewegungen bei einem Bruchteil des Volumens von "all".
Verwenden Sie es in LaserStream gRPC
Fügen SietokenAccounts zu einem Transaktionsfilter in Ihrem SubscribeRequest hinzu. Das Helius LaserStream SDK konvertiert den String für Sie in das wire-level TokenAccountExpansionControlFlag-Enum (Teil von yellowstone-grpc-proto 12.5.0+).
Lesen, was übereinstimmte
Sobald eine Transaktion über ATA-Erweiterung übereinstimmt, lebt die Tokenbewegung des Wallets immeta.postTokenBalances und meta.preTokenBalances der Transaktion. Filtern Sie diese Einträge nach owner, um die Salden zu isolieren, die Ihr Wallet tatsächlich besitzt, und vergleichen Sie dann preTokenBalances mit postTokenBalances auf demselben accountIndex, um zu sehen, wie viel sich bei jedem Mint bewegt hat. Das obige Beispiel zeigt den Filterungsschritt; der Transaktionsüberwachungsleitfaden zeigt den vollständigen Unterschied.
Verwandt
Transaktionsüberwachung
Vollständige Filterstrategien und ein ausführbares Wallet-Watch-Beispiel über gRPC.
Tokenkonto-Filterung (WebSocket)
Dasselbe
tokenAccounts-Feld auf der WebSocket transactionSubscribe-Methode.Abonnementanfrage-Referenz
Jedes Transaktionsfilterfeld, einschließlich
tokenAccounts.Komprimierte Filter
Verfolgen Sie Hunderttausende von Konten in einem Stream.