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. - Guarda las estadísticas acumuladas en una base de datos (Postgres, Redis, ClickHouse) en lugar de usar
Set/ contadores en memoria. - Genera alertas al alcanzar umbrales: grandes pagadores de comisiones, aumentos repentinos de volumen y nuevas cuentas de curva de vinculación.
- Reproduce la actividad omitida al iniciar mediante la configuración de
fromSlotenSubscribeRequest(hasta 48 horas atrás; consulta Reproducción histórica). - Combínalo con Monitoreo de slots y bloques para obtener contexto a nivel de bloque.
- Sigue un solo token en lugar de todo el programa: coloca el mint en
accountIncludey configuramatchMints: trueen el filtro de transacciones para recibir cada transferencia, intercambio, acuñación y quema de ese token (consulta Filtrado por mint de token).
Próximos pasos
Transaction Monitoring
Los patrones generales de filtrado de transacciones que usa este script.
Decoding Transaction Data
Analiza la carga útil binaria de la transacción para convertirla en transacciones de Solana legibles.
Account Subscriptions
Supervisa cambios específicos en el estado de las cuentas mediante filtros.
Historical Replay
Reproduce hasta 48 horas de actividad anterior de Pump.fun desde un slot inicial.