1
Schau dir das Programm an
Vermutete Anweisungsnamen sind die häufigste Ursache dafür, dass ein Filter stillschweigend nichts trifft. Rufe Bevorzuge die Programm-Adresse gegenüber einem Katalognamen — mehr als ein Katalogeintrag kann einen Namen teilen, und eine Namenssuche kann zu einer älteren Version des Programms auflösen.
describeProgram zuerst auf, um die genauen Namen zu erhalten, gegen die der Matcher vergleicht.Request
Response
route und shared_accounts_route sind die beiden Anweisungen, die die meisten Jupiter v6 Swaps abdecken, daher wirst du darauf filtern.2
Erstelle den Filter
Kombiniere die Programm-ID, die Anweisungsnamen aus dem vorherigen Schritt und die Wallet, die du beobachtest. Felder werden mit UND kombiniert, sodass dies Routenanweisungen entspricht, die das SOL-Konto der Wallet berühren:
accounts.roles fixiert user_transfer_authority auf die genaue Position der Wallet in der Anweisung, was strenger ist als accounts.include allein: eine einfache Adressübereinstimmung würde auch die Wallet als ein nicht zugehöriges Konto an anderer Stelle in der Anweisung erfassen. Rollennamen stimmen genau überein, daher werden sie aus describeProgram’s roles-Liste kopiert, nicht geraten. Lass includeCpi: true (die Standardeinstellung) — die tatsächlichen Token-Bewegungen eines Swaps erfolgen in inneren Anweisungen.3
Abonniere und bearbeite Benachrichtigungen
Öffne das Abonnement mit dem Filter und lese dann die dekodierten Argumente jeder übereinstimmenden Anweisung:
matchedIndexes zeigt nur auf die Anweisungen, die dein Filter getroffen hat — überspringe alles andere in der Transaktion. Überprüfe, dass decoded vorhanden ist, bevor du es liest: Eine Routenanweisung von einer nicht indexierten Programmversion kommt stattdessen mit decoded: null und rohen Feldern an.Nächste Schritte
Filterfeld-Referenz
Alle Filterfelder, Optionen und Grenzen.
Umgang mit Wiederverbindungen
Halte dieses Abonnement über Trennungen und Bereitstellungen hinweg am Leben.