1
Look Up the Program
Erratene Anweisungsnamen sind der häufigste Grund dafür, dass ein Filter unbemerkt keine Treffer liefert. Rufe zuerst Verwende vorzugsweise die Adresse des Programms statt eines Katalognamens. Mehrere Katalogeinträge können denselben Namen haben, und eine Namenssuche kann eine ältere Version des Programms zurückgeben.
describeProgram auf, um die exakten Namen abzurufen, mit denen der Matcher vergleicht. Dies ist derzeit nur auf wss://fs-beta.helius-rpc.com/?api-key=<API_KEY> verfügbar. Sende den request daher dorthin und nicht über deine Subscription-Verbindung.Request
Response
route und shared_accounts_route sind die beiden Anweisungen, die die meisten Jupiter-v6-Swaps abdecken. Deshalb filterst du nach ihnen.2
Build the Filter
Kombiniere die Programm-ID, die Namen der Anweisungen aus dem vorherigen Schritt und die Wallet, die du beobachtest. Die Felder werden mit AND verknüpft. So findest du Route-Anweisungen, die das SOL-Konto der Wallet verwenden:
accounts.roles bindet user_transfer_authority an die exakte Position der Wallet in der Anweisung. Das ist strenger als accounts.include allein: Eine einfache Übereinstimmung mit der Adresse würde auch Treffer liefern, wenn die Wallet an anderer Stelle in der Anweisung als nicht zugehöriges Konto vorkommt. Rollennamen müssen exakt übereinstimmen. Kopiere sie deshalb aus der Liste roles von describeProgram, statt sie zu erraten. Belasse includeCpi: true auf dem Standardwert. Die token eines Swaps werden tatsächlich in inneren Anweisungen übertragen.3
Subscribe and Handle Notifications
Öffne die Subscription mit dem Filter. Lies dann die decodierten Argumente jeder gefundenen Anweisung:
matchedIndexes verweist nur auf die Anweisungen, die dein Filter gefunden hat. Überspringe alle anderen Anweisungen in der Transaktion. Prüfe vor dem Lesen, ob decoded vorhanden ist: Eine Route-Anweisung aus einer nicht indexierten Programmversion kommt stattdessen mit decoded: null und Rohfeldern an.Nächste Schritte
Filter Fields Reference
Alle Filterfelder, Optionen und Grenzwerte.
Handling Reconnects
Halte diese Subscription trotz Verbindungsabbrüchen und deployment aktiv.