Skip to main content
Los flujos analizados están en beta abierta. Están disponibles en los planes de pago. Autentícate con la clave de API de tu proyecto. La API aún puede cambiar antes de su disponibilidad general.

¿Qué son los flujos analizados?

Los flujos analizados son un servicio WebSocket que observa cada transacción confirmada de Solana (excepto las transacciones de voto), la decodifica y te envía las transacciones que coinciden con un filtro que tú defines. Indicas «Me interesan las instrucciones de ruta de Jupiter» o «Me interesa cualquier operación que afecte a esta cuenta», y el servidor se encarga de observar, decodificar y buscar coincidencias. Recibes transacciones completas y ya decodificadas: cada instrucción con argumentos y cuentas con nombre, además de la comisión, la lista completa de claves de cuenta, un summary a nivel de transacción de lo que ocurrió, las transferencias de SOL y tokens, y referencias a las instrucciones exactas que coincidieron con tu filtro. Todos los datos se entregan con el nivel de confirmación confirmed.

El modelo mental

Si ya conoces los detalles internos de Solana, continúa con la siguiente sección. De lo contrario, este es el modelo en el que se basa toda la API. Una transacción es un mensaje firmado. Identifica a quien paga la comisión, enumera todas las cuentas que afectará y contiene una lista de instrucciones. Cuando examinas una, ves una firma (su identificador único), el slot en el que se incluyó, la comisión pagada, las claves de cuenta, si se completó correctamente o falló y las instrucciones. Una instrucción es una acción: ejecutar este programa con esta entrada y usar estas cuentas. Un swap en Jupiter, una transferencia de tokens o un memo. Por lo general, una transacción contiene varias instrucciones que se ejecutan en orden. Los programas pueden llamar a otros programas. Cuando Jupiter ejecuta un swap, no mueve los tokens por sí mismo. Su instrucción de ruta llama al programa de tokens para moverlos y a los programas de intercambio que mantienen la liquidez. Esas llamadas anidadas también son instrucciones y se denominan instrucciones internas (o CPI, invocaciones entre programas). Esto es importante cuando escribes un filtro: gran parte de la actividad real, como los movimientos de tokens dentro de un swap, ocurre en instrucciones internas, por lo que tu filtro coincide con ellas de forma predeterminada. Si solo quieres las instrucciones que firmó un usuario, establece includeCpi en false. Las cuentas son los elementos on-chain con los que trabaja una instrucción: billeteras, saldos de tokens, pools y mints. Cada instrucción las incluye como una lista ordenada de direcciones, y el orden forma parte del contrato: el programa define qué significa cada posición. Por ejemplo, el programa de tokens espera primero la cuenta de la que se tomarán los tokens, luego la cuenta que los recibirá y, por último, el propietario que aprueba la transferencia. Los roles asignan nombres a esas posiciones. La mayoría de los programas conocidos publican un manual legible por máquina para su interfaz, denominado IDL. El manual enumera todas las instrucciones del programa, el significado de sus campos de datos y la finalidad de cada posición de cuenta. Helius mantiene un catálogo de estos manuales para miles de programas. Con este catálogo, una simple lista de direcciones se convierte en cuentas con nombre: para una transferencia de tokens, la posición 0 se convierte en source, la posición 1 se convierte en destination y la posición 2 se convierte en authority. En lugar de adivinar qué significa la tercera dirección, puedes leer {"name": "authority", "pubkey": "9xQe...", "isSigner": true}. Estos nombres son los roles que puedes usar en los filtros. La decodificación aplica la misma idea a los datos de entrada de la instrucción. Durante la transmisión, esos datos son bytes opacos. Con el manual del programa, los bytes se convierten en valores con nombre: {"in_amount": "1000000", "slippage_bps": 50}. No todas las instrucciones se pueden decodificar, por lo que cada una queda en uno de tres estados que puedes identificar directamente mediante sus campos:
  • Decodificada: la instrucción contiene un objeto decoded con args e accounts con nombre.
  • Reconocida: además de decoded, la instrucción contiene un summary con un type (como swap), un description legible para humanos y una carga útil parsedData estructurada, como metadatos de un swap con cantidades y mints.
  • Sin decodificar: el programa o la instrucción no está en el catálogo, decoded es null y, en su lugar, la instrucción contiene los bytes sin procesar (rawData) y la lista simple de direcciones (rawAccounts), por lo que siempre tienes datos con los que trabajar.
Ese es todo el modelo, y tu filtro se crea directamente a partir de él:
  • programs: a qué programa llama la instrucción
  • instructionNames: cómo denomina esa acción el manual del programa
  • accounts.include: qué direcciones afecta
  • accounts.roles: qué dirección debe ocupar cada posición con nombre
  • includeCpi e includeFailed: si se incluyen las instrucciones internas y las transacciones fallidas
Los filtros seleccionan instrucciones; las notificaciones entregan la transacción completa.

Comparación

vs Enhanced WebSockets

Los WebSockets mejorados transmiten transacciones completas o actualizaciones de cuentas sin decodificarlas. Los flujos analizados buscan coincidencias a nivel de instrucción y decodifican todo por ti.

vs LaserStream gRPC

LaserStream es un flujo continuo de datos gRPC de alto rendimiento que filtras y decodificas en el cliente. Los flujos analizados son una API WebSocket que filtra y decodifica en el servidor.

vs Parsed Events

Los eventos analizados aplican la misma decodificación a transacciones históricas: analiza firmas o recorre por páginas el historial de una dirección bajo demanda mediante REST y GraphQL. Los flujos analizados envían las transacciones nuevas conforme se registran.

Programas compatibles

Los flujos analizados decodifican más de 3,600 programas a partir de sus IDL on-chain, además de programas principales como SPL Token, Token-2022 y System Program mediante decodificadores integrados. Puedes filtrar por la dirección de cualquier programa. Las instrucciones que el servicio no puede decodificar se transmiten como datos de instrucción sin procesar. Estos son algunos de los programas decodificados más utilizados:
¿No ves un programa? Es probable que aún esté en el catálogo. Llama a describeProgram con su dirección para consultar sus instrucciones, eventos y roles de cuenta.

Acceso

Los flujos analizados están en beta abierta y disponibles en los planes de pago. Obtén tu clave de API en el panel de Helius. Conéctate al endpoint beta:
Autentícate con la clave de API de tu proyecto. Pásala como parámetro de consulta api-key (o mediante el encabezado x-api-key). La clave se verifica cuando se abre la conexión: si falta o no es válida, la solicitud se rechaza con HTTP 401; si el proyecto alcanzó su límite de conexiones, recibe HTTP 429.

Primeros pasos

Quickstart

Conéctate, envía tu primer filtro y lee una notificación.

Track Jupiter Swaps

Crea y suscribe un filtro real mediante la detección de programas.

Track Pump.fun Mints

Un listener resistente a reconexiones que registra cada nuevo despliegue de tokens de Pump.fun.

Handling Reconnects

Detecta desconexiones, aumenta progresivamente el tiempo de espera, vuelve a suscribirte y recupera los slots omitidos.