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:
El script
Guárdalo comoindex.ts y ejecuta npx ts-node index.ts:
Qué hace el script
Una suscripción, dos bloques de filtros
Una sola llamada asubscribe(...) contiene dos grupos de filtros con nombre:
- El filtro
accountsrecibe 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
transactionsrecibe todas las transacciones que interactúan con el programa Pump.fun. Las marcasvote: false, failed: falsedescartan los votos y las transacciones fallidas antes de que lleguen a tu controlador.
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.signaturees unBuffer. Pásalo porbs58.encode(...)para obtener la firma base58 que verías en un explorador o en una respuesta degetTransaction.tx.meta.feees un u64 almacenado como cadena para evitar que los valores superiores aNumber.MAX_SAFE_INTEGERpierdan precisión en JavaScript. Envuélvelo enNumber(...)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
UnsetInterval 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
fromSlotenSubscribeRequest(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
accountIncludey configuramatchMints: trueen 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.