¿Qué es Parsed Streams?
Parsed Streams es un servicio WebSocket que supervisa 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 defines. Tú indicas «Me interesan las instrucciones de ruta de Jupiter» o «Me interesa todo lo que afecte a esta cuenta», y el servidor se encarga de supervisar, 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, unsummary 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 compromiso confirmed.
El modelo mental
Si ya conoces los aspectos internos de Solana, puedes continuar. De lo contrario, este es el modelo en el que se basa toda la API. Una transacción es un mensaje firmado. Indica quién 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 estos datos de entrada y usando 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 los exchanges 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, estableceincludeCpi 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 contiene 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áquinas para su interfaz, llamado IDL. El manual enumera todas las instrucciones del programa, lo que significan sus campos de datos y la función de cada posición de cuenta. Helius mantiene un catálogo de estos manuales para miles de programas. Gracias a este catálogo, una lista de direcciones sin procesar se convierte en cuentas con nombre: para una transferencia de tokens, la posición 0 se convierte en source, la posición 1 en destination y la posición 2 en authority. En lugar de adivinar qué significa la tercera dirección, lees {"name": "authority", "pubkey": "9xQe...", "isSigner": true}. Estos nombres son los roles que puedes usar para filtrar.
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 pueden decodificarse, por lo que cada una queda en uno de estos tres estados, que puedes identificar directamente mediante sus campos:
- Decodificada: la instrucción contiene un objeto
decodedconargseaccountscon nombre. - Reconocida: además de
decoded, la instrucción contiene unsummarycon untype(comoswap), undescriptionlegible para humanos y un payloadparsedDataestructurado, como metadatos de un swap con cantidades y mints. - Sin decodificar: el programa o la instrucción no están en el catálogo,
decodedesnully, 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.
programs: a qué programa llama la instruccióninstructionNames: cómo denomina el manual del programa a esa acciónaccounts.include: qué direcciones afectaaccounts.roles: qué posición con nombre debe contener cada direcciónincludeCpieincludeFailed: si se incluyen las instrucciones internas y las transacciones fallidas
Comparación
vs Enhanced WebSockets
Enhanced WebSockets transmite transacciones completas o actualizaciones de cuentas sin decodificarlas. Parsed Streams busca coincidencias a nivel de instrucción y decodifica todo por ti.
vs LaserStream gRPC
LaserStream es un flujo gRPC de alto rendimiento que filtras y decodificas en el cliente. Parsed Streams es una API WebSocket que filtra y decodifica en el servidor.
vs Parsed Events
Parsed Events aplica 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. Parsed Streams envía las transacciones nuevas a medida que se incorporan.
Programas compatibles
Parsed Streams decodifica más de 3600 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:DEXs & AMMs
DEXs & AMMs
Launchpads
Launchpads
Lending & Perps
Lending & Perps
NFTs & Compression
NFTs & Compression
Acceso y precios
Parsed Streams está disponible de forma general en todos los planes, incluido Free. Sustituye a Enhanced Transaction Webhooks para los datos de transacciones analizadas en tiempo real. Obtén tu clave de API en el panel de Helius. Cada evento entregado cuesta 1 crédito, la misma tarifa que los eventos de webhook. Consulta Créditos para ver la lista completa de precios. Parsed Streams se ofrece en el endpoint de Gatekeeper, el mismo host que el tráfico RPC y WebSocket de Helius. No hay un host independiente para Parsed Streams:api-key (o el encabezado x-api-key). La clave se comprueba cuando se abre la conexión: si falta o no es válida, se rechaza con HTTP 401; si un 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 un filtro real mediante la detección de programas y suscríbete a él.
Track Pump.fun Mints
Un listener que se reconecta de forma segura y registra cada nuevo lanzamiento de tokens de Pump.fun.
Handling Reconnects
Detecta desconexiones, aumenta gradualmente el tiempo de espera, vuelve a suscribirte y recupera los slots omitidos.