Skip to main content
Der 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 mit accountInclude: [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 Sie tokenAccounts 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+).
Sehen Sie sich den Transaktionsüberwachungsleitfaden für ein ausführlicheres Beispiel an, das Vor- und Nachbilanzen vergleicht, und den Abonnementanfrage-Referenz für jedes Transaktionsfilterfeld.

Lesen, was übereinstimmte

Sobald eine Transaktion über ATA-Erweiterung übereinstimmt, lebt die Tokenbewegung des Wallets im meta.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.