Voraussetzungen: Ein Helius API key (Business- oder Professional-Tarif für Mainnet LaserStream) und Node.js 18+. Kenntnisse zu Kontosubscriptions und Transaktionsüberwachung sind hilfreich, aber nicht erforderlich.
Einrichtung
Erstelle ein neues Projekt, installiere das SDK undbs58 (zum Dekodieren von Transaktionssignaturen) und lege deinen API key fest:
Das Skript
Speichere es alsindex.ts und führe dann npx ts-node index.ts aus:
Funktionsweise des Skripts
Eine Subscription, zwei Filterblöcke
Ein einzelnersubscribe(...)-Aufruf enthält zwei benannte Filtergruppen:
- Der Filter
accountsempfängt jedes Konto, das dem Pump.fun-Programm gehört (Bonding Curves, Mint-Status usw.), sobald sich dessen Daten ändern. - Der Filter
transactionsempfängt jede Transaktion, die mit dem Pump.fun-Programm interagiert. Die Flagsvote: false, failed: falsefiltern Votes und fehlgeschlagene Transaktionen heraus, bevor sie deinen Handler erreichen.
Rohdatenfelder auslesen
Einige Werte im payload benötigen eine kleine Konvertierung, bevor du sie problemlos verwenden kannst:tx.signatureist einBuffer. Übergib ihn anbs58.encode(...), um die Base58-Signatur zu erhalten, die du in einem Explorer oder einergetTransaction-response sehen würdest.tx.meta.feeist ein u64-Wert, der als String gespeichert wird, damit Werte überNumber.MAX_SAFE_INTEGERin JavaScript nicht an Präzision verlieren. Übergib ihn vor Berechnungen anNumber(...). Dieselbe String-Konvention für u64 gilt auch für mehrere Felder auf Blockebene. Die vollständige Datenstruktur findest du unter Slot- und Blocküberwachung.
Fortlaufende Statistiken
EinsetInterval gibt alle 60 Sekunden eine Momentaufnahme aus: Gesamtzahl der Transaktionen, erfolgreiche und fehlgeschlagene Transaktionen, Durchsatz, eindeutige Gebührenzahler und Gesamtgebühren in SOL. Drücke Ctrl+C, um vor dem Beenden des Skripts eine letzte Momentaufnahme auszugeben.
Das Skript erweitern
Einige Möglichkeiten, das Skript weiterzuentwickeln:- Dekodiere Instruction-Discriminators, um Trades als
buy/sell/createzu kennzeichnen. Das Parsing-Muster findest du unter Transaktionsdaten dekodieren. - Speichere die fortlaufenden Statistiken in einer Datenbank (Postgres, Redis, ClickHouse) statt in
Set/ Zählern im Arbeitsspeicher. - Löse Warnungen aus, wenn Schwellenwerte überschritten werden, etwa bei hohen Gebührenzahlern, plötzlichen Volumenspitzen oder neuen Bonding-Curve-Konten.
- Spiele beim Start verpasste Aktivitäten erneut ab, indem du
fromSlotfürSubscribeRequestfestlegst (bis zu 48 Stunden rückwirkend – siehe Historische Wiedergabe). - Kombiniere dies mit der Slot- und Blocküberwachung, um Kontext auf Blockebene zu erhalten.
- Verfolge einen einzelnen token statt des gesamten Programms: Trage den Mint in
accountIncludeein und legematchMints: trueim Transaktionsfilter fest, um jeden Transfer, Swap, Mint und Burn für diesen token zu empfangen (siehe Nach token-Mint filtern).
Nächste Schritte
Transaction Monitoring
Die allgemeinen Muster zur Transaktionsfilterung, die dieses Skript verwendet.
Decoding Transaction Data
Parse den binären Transaktions-payload in lesbare Solana-Transaktionen.
Account Subscriptions
Überwache mit Filtern bestimmte Änderungen am Kontostatus.
Historical Replay
Spiele bis zu 24 Stunden vergangener Pump.fun-Aktivitäten ab einem Start-slot erneut ab.