Zum Hauptinhalt springen
Preconfirmations überträgt Transaktionen per stream, bevor sie zu shred verarbeitet werden. Helius sendet Preconfirmations in dem Moment, in dem der Leader sie ausführt, zusammen mit ihrem Ausführungsstatus. In diesem Leitfaden erstellst du einen Listener, der ein Zielkonto überwacht, jede Transaktion dekodiert und mit Sender Max reagiert.
Preconfirmations sind in allen kostenpflichtigen Tarifen verfügbar und kosten 10 Credits pro zugestellter Nachricht. Für einen slot ohne zugestellte Nachrichten fallen keine Credits an. Sobald ein slot mindestens eine Nachricht zustellt, gilt für jedes Abonnement ein Mindestbetrag von 300 Credits. Weitere Informationen findest du unter Preise.

Grenze den stream ein, bevor du dich verbindest

Ein ungefiltertes preconfSubscribe stellt jede Transaktion für jeweils 10 Credits zu. Filtere serverseitig, damit dir nur die Transaktionen berechnet werden, mit denen du handelst. Jedes Abonnement wird unabhängig abgerechnet, sobald es in einem berechtigten, abgedeckten slot mindestens eine Nachricht empfängt. Fasse Kontofilter daher nach Möglichkeit in einem Abonnement zusammen. Verwende regionInclude, um die Abrechnung auf die benötigten Regionen zu beschränken. Lege includeSource: ["helius"] fest, wenn du BAM nicht benötigst, und überwache deine Credits im Helius Dashboard.
Drei Filter decken die meisten Trading-Listener ab:
  • failed: false verwirft Transaktionen, von denen bereits bekannt ist, dass sie rückgängig gemacht wurden. Es gibt keinen Grund, bei ihnen um Schnelligkeit zu konkurrieren.
  • regionInclude bindet den stream an die Region, die deiner Infrastruktur am nächsten liegt. So verbraucht ein regionsübergreifender Hop nicht deinen Vorsprung.
  • accountInclude findet jede Transaktion, die dein Ziel referenziert, etwa eine Wallet, einen AMM-Pool oder ein Programm. Helius löst Address Lookup Tables serverseitig auf. Der Filter greift daher auch, wenn das Konto über eine ALT geladen wird.

Verbinden, abonnieren und dekodieren

preconfSubscribe wird über den Gatekeeper endpoint (wss://beta.helius-rpc.com) bereitgestellt. Benachrichtigungen kommen als binäre Frames statt als JSON an. Jeder Frame besteht aus einem festen 18-Byte-Präfix, gefolgt von der mit bincode serialisierten Transaktion:
listener.js
Prüfe zuerst das Versionsbyte. Wenn Helius das payload-Format aktualisiert, wird die Version erhöht. Eine Verzweigung anhand der Version sorgt dafür, dass dein Decoder weiter funktioniert. Die deserialisierte Transaktion liefert dir die Anweisungen, Konten und die Signatur.

Mit Sender Max reagieren

Eine Preconfirmation lohnt sich nur, wenn deine response zuerst landet. Sende deine Reaktion über Sender Max: Der Tip von 0,001 SOL gelangt in den Priority-Tip-Puffer und wird über alle Hochgeschwindigkeitsrouten weitergeleitet:
Halte diesen Handler kurz. Entscheide und sende. Verschiebe Logging, Abrechnung und Abstimmung aus dem Empfangspfad. Unter Trades mit Sender landen findest du den vollständigen Sendeablauf, einschließlich des Aufwärmens der Verbindung und der Gebührenschätzung.

Landung bestätigen und mit Lücken rechnen

Eine Preconfirmation bietet nur einen frühen Einblick. Die Transaktion ist noch nicht gelandet und kann weiterhin fehlschlagen oder verworfen werden. Deshalb gelten zwei Regeln:
  • Bestätige die Landung mit den üblichen Prüfungen über commitment (getSignatureStatuses oder einen stream mit processed-commitment), bevor du die beobachtete Transaktion oder deine Reaktion als final behandelst.
  • Rechne mit Lücken. Die Abdeckung hängt vom Anteil des Stake ab, der an Helius weitergeleitet wird. Deshalb erzeugen manche slot keine Nachrichten. Das ist erwartetes Verhalten und keine unterbrochene Verbindung. Der Keepalive-Ping hilft dir, beides zu unterscheiden. Abonniere nach dem Schließen erneut.

Weitere Leitfäden

preconfSubscribe API reference

Vollständige Filtersemantik, Regionscodes und Aufbau des binären payload

Trade on Preprocessed Transactions

Abdeckung vor der Ausführung für 0,1 Credits pro Nachricht in allen kostenpflichtigen Tarifen