Skip to main content
Diffusez chaque mise à jour de compte Pump.fun et transaction en temps réel en utilisant le SDK LaserStream. Cette page décrit un script complet TypeScript que vous pouvez exécuter de bout en bout : il imprime chaque transaction au fur et à mesure, rapporte des statistiques continues (débit, payeurs de frais uniques, frais totaux en SOL) une fois par minute, et reste connecté lors des reconnexions automatiquement. C’est un point de départ utile pour tout ce qui nécessite une visibilité continue de Pump.fun — bots de trading, tableaux de bord analytiques, pipelines d’alerte, ou simplement explorer la forme des données pour construire quelque chose de plus spécialisé.
Prérequis : Une clé API Helius (plan Business ou Professional pour Mainnet LaserStream) et Node.js 18+. Une connaissance des Abonnements de Comptes et de la Surveillance des Transactions est utile mais non requise.

Configuration

Créez un nouveau projet, installez le SDK + bs58 (utilisé pour décoder les signatures de transaction), et définissez votre clé API :
Choisissez le point de terminaison le plus proche de l’endroit où ce script s’exécutera — voir les régions LaserStream.

Le script

Enregistrez ceci comme index.ts, puis exécutez npx ts-node index.ts :

Ce que fait le script

Un abonnement, deux blocs de filtres

Un seul appel subscribe(...) transporte deux groupes de filtres nommés :
  • Le filtre accounts reçoit chaque compte possédé par le programme Pump.fun (courbes de liaison, état de la frappe, etc.) chaque fois que leurs données changent.
  • Le filtre transactions reçoit chaque transaction qui interagit avec le programme Pump.fun. Les drapeaux vote: false, failed: false suppriment les votes et les transactions échouées avant qu’ils n’atteignent votre gestionnaire.
Les deux arrivent via un flux gRPC unique, donc le SDK n’a qu’une seule connexion à gérer. Si elle tombe, le SDK se reconnecte automatiquement et vous continuez à recevoir des mises à jour des deux filtres.

Lecture des champs bruts

Quelques valeurs dans la charge utile nécessitent une petite conversion avant d’être faciles à utiliser :
  • tx.signature est un Buffer. Passez-le par bs58.encode(...) pour obtenir la signature base58 que vous verriez dans un explorateur ou dans une réponse getTransaction.
  • tx.meta.fee est un u64 stocké sous forme de chaîne pour que les valeurs au-dessus de Number.MAX_SAFE_INTEGER ne perdent pas de précision en JavaScript. Enveloppez-le dans Number(...) avant de faire des calculs. La même convention chaîne-pour-u64 s’applique à plusieurs champs de niveau bloc aussi — voir Surveillance de Slot et Bloc pour la forme complète des données.

Statistiques continues

Un setInterval imprime un instantané toutes les 60 secondes : total des transactions, succès versus échecs, débit, payeurs de frais uniques et frais totaux en SOL. Appuyez sur Ctrl+C pour un dernier instantané avant que le script ne se termine.

Extension du script

Quelques directions pour aller plus loin :
  • Décodez les discriminateurs d’instruction pour étiqueter les échanges comme buy / sell / create — voir Décodage des Données de Transactions pour le modèle d’analyse.
  • Conservez les statistiques continues dans une base de données (Postgres, Redis, ClickHouse) au lieu de Set / compteurs en mémoire.
  • Alertez sur les seuils — grands payeurs de frais, pics soudains de volume, nouveaux comptes à courbe de liaison.
  • Rejouez l’activité manquée au démarrage en définissant fromSlot sur SubscribeRequest (jusqu’à 24 heures en arrière — voir Relecture Historique).
  • Combinez avec Surveillance de Slot et Bloc pour un contexte de niveau bloc.

Prochaines étapes

Surveillance des Transactions

Les modèles généraux de filtrage des transactions que ce script utilise.

Décodage des Données de Transactions

Analysez la charge utile binaire des transactions en transactions Solana lisibles.

Abonnements de Comptes

Surveillez les changements d’état de comptes spécifiques avec des filtres.

Relecture Historique

Rejouez jusqu’à 24h d’activité passée de Pump.fun à partir d’un slot de départ.