Skip to main content
Transmite en tiempo real cada actualización de cuenta y transacción de Pump.fun mediante el SDK de LaserStream. Esta página te guía por un script completo de TypeScript que puedes ejecutar de principio a fin: imprime cada transacción a medida que llega, muestra estadísticas móviles (rendimiento, pagadores de comisiones únicos y comisiones totales en SOL) una vez por minuto y mantiene la conexión automáticamente cuando se producen reconexiones. Es un punto de partida útil para cualquier aplicación que necesite visibilidad continua de Pump.fun: bots de trading, paneles de análisis, canales de alertas o simplemente explorar la estructura de los datos para crear una solución más especializada.
Requisitos previos: Una clave de API de Helius (plan Business o Professional para LaserStream en Mainnet) y Node.js 18 o posterior. Es útil conocer las suscripciones de cuentas y el monitoreo de transacciones, pero no es obligatorio.

Configuración

Crea un proyecto nuevo, instala el SDK + bs58 (que se usa para decodificar firmas de transacciones) y configura tu clave de API:
Elige el punto de conexión más cercano al lugar donde se ejecutará este script. Consulta las regiones de LaserStream.

El script

Guárdalo como index.ts y ejecuta npx ts-node index.ts:

Qué hace el script

Una suscripción, dos bloques de filtros

Una sola llamada a subscribe(...) contiene dos grupos de filtros con nombre:
  • El filtro accounts recibe todas las cuentas cuyo propietario es el programa Pump.fun (curvas de vinculación, estado de emisión, etc.) cada vez que cambian sus datos.
  • El filtro transactions recibe todas las transacciones que interactúan con el programa Pump.fun. Las marcas vote: false, failed: false descartan los votos y las transacciones fallidas antes de que lleguen a tu controlador.
Ambos llegan a través de un único flujo gRPC, por lo que el SDK solo tiene que administrar una conexión. Si se interrumpe, el SDK vuelve a conectarse automáticamente y continúas recibiendo actualizaciones de ambos filtros.

Lectura de los campos sin procesar

Algunos valores de la carga útil necesitan una pequeña conversión antes de poder usarlos fácilmente:
  • tx.signature es un Buffer. Pásalo por bs58.encode(...) para obtener la firma base58 que verías en un explorador o en una respuesta de getTransaction.
  • tx.meta.fee es un u64 almacenado como cadena para evitar que los valores superiores a Number.MAX_SAFE_INTEGER pierdan precisión en JavaScript. Envuélvelo en Number(...) antes de realizar operaciones aritméticas. La misma convención de usar cadenas para u64 también se aplica a varios campos de bloques. Consulta Monitoreo de slots y bloques para ver la estructura de datos completa.

Estadísticas móviles

Un setInterval imprime una instantánea cada 60 segundos: transacciones totales, operaciones exitosas frente a fallidas, rendimiento, pagadores de comisiones únicos y comisiones totales en SOL. Presiona Ctrl+C para obtener una última instantánea antes de que finalice el script.

Extensión del script

Estas son algunas formas de llevarlo más lejos:
  • Decodifica los discriminadores de instrucciones para etiquetar las operaciones como buy / sell / create. Consulta Decodificación de datos de transacciones para ver el patrón de análisis.
  • Almacena las estadísticas móviles en una base de datos (Postgres, Redis, ClickHouse) en lugar de usar Set / contadores en memoria.
  • Genera alertas según ciertos umbrales: pagadores de comisiones grandes, picos repentinos de volumen o nuevas cuentas de curvas de vinculación.
  • Reproduce la actividad perdida durante el inicio configurando fromSlot en SubscribeRequest (hasta 24 horas atrás; consulta Reproducción histórica).
  • Combínalo con el monitoreo de slots y bloques para obtener contexto a nivel de bloque.
  • Sigue un token en lugar de todo el programa: coloca la emisión en accountInclude y configura matchMints: true en el filtro de transacciones para recibir cada transferencia, intercambio, emisión y quema de ese token (consulta Filtrado por emisión de tokens).

Próximos pasos

Transaction Monitoring

Los patrones generales de filtrado de transacciones que usa este script.

Decoding Transaction Data

Analiza la carga útil binaria para convertirla en transacciones de Solana legibles.

Account Subscriptions

Observa cambios de estado de cuentas específicas mediante filtros.

Historical Replay

Reproduce hasta 24 horas de actividad pasada de Pump.fun desde un slot inicial.