Skip to main content
Streamen Sie jedes Pump.fun-Kontoupdate und jede Transaktion in Echtzeit mit dem LaserStream SDK. Diese Seite führt durch ein vollständiges TypeScript-Skript, das Sie von Anfang bis Ende ausführen können: Es druckt jede Transaktion, sobald sie eingeht, meldet einmal pro Minute rollende Statistiken (Durchsatz, einzigartige Gebührenzahler, Gesamtgebühren in SOL) und bleibt über Wiederverbindungen hinweg automatisch verbunden. Es ist ein nützlicher Ausgangspunkt für alles, was kontinuierliche Pump.fun-Transparenz benötigt — Trading-Bots, Analysedashboards, Warnpipelines oder einfach, um die Datenform zu erkunden, damit Sie darauf aufbauend etwas Spezielleres entwickeln können.
Voraussetzungen: Ein Helius API-Schlüssel (Business- oder Professional-Plan für Mainnet LaserStream) und Node.js 18+. Vertrautheit mit Account-Abonnements und Transaktionsüberwachung ist hilfreich, aber nicht erforderlich.

Einrichtung

Erstellen Sie ein neues Projekt, installieren Sie das SDK + bs58 (wird verwendet, um Transaktionssignaturen zu dekodieren) und setzen Sie Ihren API-Schlüssel:
Wählen Sie den Endpunkt, der dem Ort, an dem dieses Skript ausgeführt wird, am nächsten ist — siehe die LaserStream-Regionen.

Das Skript

Speichern Sie dies als index.ts und führen Sie dann npx ts-node index.ts aus:

Was das Skript macht

Ein Abonnement, zwei Filterblöcke

Ein einzelner subscribe(...)-Aufruf enthält zwei benannte Filtergruppen:
  • Der accounts-Filter empfängt jedes Konto, das vom Pump.fun-Programm verwaltet wird (Bonding-Kurven, Mint-Zustand usw.), jedes Mal, wenn sich ihre Daten ändern.
  • Der transactions-Filter empfängt jede Transaktion, die mit dem Pump.fun-Programm interagiert. Die vote: false, failed: false-Flags verwerfen Stimmen und fehlgeschlagene Transaktionen, bevor sie Ihren Handler erreichen.
Beide kommen über einen einzigen gRPC-Stream an, sodass das SDK nur eine Verbindung zu verwalten hat. Wenn sie abbricht, stellt das SDK die Verbindung automatisch wieder her und Sie erhalten weiterhin Updates von beiden Filtern.

Lesen der Rohfelder

Einige Werte im Payload benötigen eine kleine Konvertierung, bevor sie einfach zu verwenden sind:
  • tx.signature ist ein Buffer. Führen Sie es durch bs58.encode(...), um die Base58-Signatur zu erhalten, die Sie in einem Explorer oder einer getTransaction-Antwort sehen würden.
  • tx.meta.fee ist ein u64, das als String gespeichert ist, damit Werte über Number.MAX_SAFE_INTEGER in JavaScript keine Genauigkeit verlieren. Wickeln Sie es in Number(...) ein, bevor Sie Rechenoperationen durchführen. Dasselbe String-für-u64-Konzept gilt auch für mehrere Blockebenenfelder — siehe Slot- und Blocküberwachung für die vollständige Datenform.

Rollende Statistiken

Ein setInterval druckt alle 60 Sekunden einen Snapshot: Gesamttransaktionen, Erfolge gegenüber Fehlern, Durchsatz, einzigartige Gebührenzahler und Gesamtgebühren in SOL. Drücken Sie Ctrl+C, um einen letzten Snapshot zu erhalten, bevor das Skript beendet wird.

Das Skript erweitern

Einige Richtungen, um dies weiterzuentwickeln:
  • Dekodieren von Anweisungsdiskriminatoren, um Trades als buy / sell / create zu kennzeichnen — siehe Dekodieren von Transaktionsdaten für das Parsing-Muster.
  • Persistieren der rollenden Statistiken in einer Datenbank (Postgres, Redis, ClickHouse) anstelle von In-Memory Set / Zählern.
  • Warnen bei Schwellenwerten — große Gebührenzahler, plötzliche Volumenspitzen, neue Bonding-Kurvenkonten.
  • Wiederholen versäumter Aktivitäten beim Start durch Setzen von fromSlot auf SubscribeRequest (bis zu 24 Stunden zurück — siehe Historisches Wiederholen).
  • Kombinieren mit Slot- und Blocküberwachung für Blockkontext.

Nächste Schritte

Transaktionsüberwachung

Die allgemeinen Transaktionsfiltermuster, die dieses Skript verwendet.

Dekodieren von Transaktionsdaten

Parsen Sie das binäre Transaktion-Payload in lesbare Solana-Transaktionen.

Kontoabonnements

Überwachen Sie spezifische Kontostandsänderungen mit Filtern.

Historisches Wiederholen

Wiederholen Sie bis zu 24 Stunden vergangene Pump.fun-Aktivität ab einem Startslot.