Skip to main content

Was ist transactionSubscribe?

Die transactionSubscribe WebSocket-Methode (eine Helius-Erweiterung der standardmäßigen Solana WebSocket API) ermöglicht Echtzeit-Transaktionsereignisse. Um sie zu verwenden, geben Sie eine TransactionSubscribeFilter an und fügen Sie optional TransactionSubscribeOptions für weitere Anpassungen hinzu. transactionSubscribe befindet sich auf denselben einheitlichen wss://mainnet.helius-rpc.com und wss://devnet.helius-rpc.com Endpoints wie die standardmäßigen Solana-Subscription-Methoden.

TransactionSubscribeFilter

  • vote: Boolean-Flag zum Ein-/Ausschließen von wahlbezogenen Transaktionen
  • failed: Boolean-Flag zum Ein-/Ausschließen von fehlgeschlagenen Transaktionen
  • signature: filtert Updates zu einer bestimmten Transaktion basierend auf ihrer Signatur
  • accountInclude: Liste von Konten, für die Sie Transaktionsupdates erhalten möchten. Nur eines der Konten muss in den Transaktionsupdates enthalten sein (z.B. Konto 1 ODER 2).
  • accountExclude: Liste von Konten, die Sie von Transaktionsupdates ausschließen möchten
  • accountRequired: Transaktionen müssen alle angegebenen Konten enthalten, um in Updates eingeschlossen zu werden (z.B. Konto 1 UND 2)
  • tokenAccounts: Opt-in-Erweiterung des zugeordneten Token-Kontos (ATA) (balanceChanged, all, oder none). Siehe Ein Wallet beobachten, einschließlich Token-Transfers unten.
Sie können bis zu 50.000 Adressen in den accountInclude, accountExclude und accountRequired Arrays einschließen.

TransactionSubscribeOptions (Optional)

  • commitment: Commitment-Level zum Abrufen von Daten (processed, confirmed, oder finalized)
  • encoding: Kodierungsformat der zurückgegebenen Daten (base58, base64, oder jsonParsed)
  • transactionDetails: Detaillierungsgrad der zurückgegebenen Daten (full, signatures, accounts und none)
  • showRewards: Boolean-Flag, das angibt, ob Belohnungsdaten in den Updates enthalten sein sollen
  • maxSupportedTransactionVersion: gibt die höchste Version von Transaktionen an, von der Sie Updates erhalten möchten. Setzen Sie den Wert auf 1, um Legacy-, v0- und v1-Transaktionen zu erhalten. Siehe Unterstützung für Transaktionen v1.
maxSupportedTransactionVersion ist erforderlich, um die Konten und vollständigen Details einer bestimmten Transaktion zurückzugeben (d.h. transactionDetails: "accounts" | "full").

Transaktionsabonnement-Beispiel

In diesem Beispiel abonnieren wir Transaktionen, die das Raydium-Konto 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 enthalten. Wenn eine Transaktion auftritt, die das 675k...1Mp8 Konto in der accountKeys der Transaktion enthält, erhalten wir eine WSS-Benachrichtigung. Basierend auf den Abonnementoptionen wird die Transaktionsbenachrichtigung auf dem processed Commitment-Level, jsonParsed Kodierung, full Transaktionsdetails gesendet und zeigt Belohnungen an.

Beispielbenachrichtigung

Ein Wallet beobachten, einschließlich Token-Transfers

Wenn Sie ein Wallet mit accountInclude beobachten, stimmen Sie nur Transaktionen zu, bei denen der Wallet-Pubkey direkt in den Kontoschlüsseln erscheint. Ein häufiger Fall rutscht durch: Wenn jemand dem Wallet ein SPL-Token (z.B. USDC) sendet, berührt der Transfer das zugeordnete Token-Konto (ATA) des Wallets, nicht den Wallet-Pubkey — daher sieht ein einfaches accountInclude: [wallet] Abonnement es nie. Setzen Sie das tokenAccounts Feld, um das Matching zu erweitern, sodass das beobachtete Konto auch Transaktionen zugeordnet wird, bei denen es einen Token-Saldo besitzt:
  • balanceChanged: passt, wenn das Wallet einen Token-Saldo besitzt, dessen Betrag sich geändert hat (oder dessen Token-Konto geschlossen wurde) in der Transaktion. Verwenden Sie dies für “Sag mir, wann tatsächlich Geld bewegt wurde.” Dies ist die engere, volumenärmere und häufigste Wahl.
  • all: passt auf jede Transaktion, die sich auf einen Token-Saldo bezieht, den das Wallet besitzt, auch wenn er unverändert ist. Höheres Volumen.
  • none: keine Erweiterung. Gleich wie das Weglassen des Feldes (der Standard).
Das Matching basiert auf dem Eigentümer: Es erfasst jedes Token-Konto, das das Wallet besitzt, einschließlich nicht-kanonischer, nicht nur der abgeleiteten ATA-Adresse. Ein ungültiger Wert gibt den JSON-RPC-Fehler -32602 zurück. Abonnements, die tokenAccounts weglassen, verhalten sich genau wie zuvor. Für einen vollständigen Überblick darüber, wie ATA-Erweiterung funktioniert, siehe Token-Konto-(ATA)-Filterung über WebSocket.

Überwachung neuer Jupiter-DCA

Jupiter DCA oder Dollar-Cost-Averaging ist eine Möglichkeit, wiederkehrende Trades auf Solana zu planen. Da diese geplanten Kauf-/Verkaufsaufträge on-chain erfasst werden, können Trader die Methode transactionSubscribe und getAsset verwenden, um auf neue Aufträge zu hören.

Beispielbenachrichtigung

Terminal-Tabellen neuer Jupiter-DCA-Aufträge, die das Benutzer-Wallet, das Token-Paar, die Öffnungszeit, die Gesamteingabe, den Betrag pro Zyklus und das Intervall zeigen

Überwachung neuer pump.fun-Token

Beispielbenachrichtigung

Terminal-Tabellen neu erstellter pump.fun-Token, die die Transaktionssignatur, das Ersteller-Wallet und die Token-Mint-Adresse zeigen

Verwaltung von Abonnements

Abonnement-IDs

Wenn transactionSubscribe erfolgreich ist, gibt der Server eine Abonnement-ID im result Feld zurück. Dies ist die gleiche Nummer, die in params.subscription bei jeder Benachrichtigung von diesem Abonnement erscheint:
Speichern Sie die Abonnement-ID aus der Antwort. Sie benötigen sie, um das Abonnement zu beenden.

Abbestellen

Um keine Benachrichtigungen mehr zu erhalten, rufen Sie transactionUnsubscribe mit der Abonnement-ID auf. Jeder transactionSubscribe Aufruf auf derselben Verbindung erstellt ein separates Abonnement mit eigener ID, also stellen Sie sicher, dass Sie sich abmelden, bevor Sie sich erneut anmelden, um doppelte Benachrichtigungen zu vermeiden.
In diesem Beispiel abonnieren wir Raydium-Transaktionen, erfassen die Abonnement-ID aus der Serverantwort und melden uns dann mit dieser ID ab. Einige in-flight Nachrichten können immer noch kurz nach dem Aufruf von transactionUnsubscribe ankommen. Dies ist das erwartete Verhalten.