O que é o Parsed Streams?
Parsed Streams é um serviço WebSocket que monitora todas as transações confirmadas da Solana (exceto transações de voto), decodifica cada uma e envia a você as transações que correspondem a um filtro definido por você. Você diz “quero instruções de rota do Jupiter” ou “quero qualquer coisa que interaja com esta conta”, e o servidor faz o monitoramento, a decodificação e a correspondência para você. Você recebe transações completas, já decodificadas: todas as instruções com argumentos e contas nomeados, além da taxa, da lista completa de chaves de contas, de umsummary no nível da transação sobre o que aconteceu, das transferências de SOL e tokens e de referências às instruções exatas que corresponderam ao seu filtro. Todos os dados são entregues com o nível de compromisso confirmed.
O modelo mental
Se você já conhece os detalhes internos da Solana, pule esta seção. Caso contrário, este é o modelo no qual toda a API se baseia. Uma transação é uma mensagem assinada. Ela identifica o pagador da taxa, lista todas as contas com as quais interagirá e contém uma lista de instruções. Ao examinar uma transação, você vê: uma assinatura (seu ID exclusivo), o slot em que ela foi incluída, a taxa paga, as chaves das contas, se ela foi bem-sucedida ou falhou e as instruções. Uma instrução é uma ação: execute este programa, com esta entrada, usando estas contas. Um swap no Jupiter, uma transferência de tokens, um memorando. Uma transação geralmente contém várias instruções, que são executadas em ordem. Programas podem chamar outros programas. Quando o Jupiter executa um swap, ele não movimenta os tokens diretamente. A instrução de rota chama o programa de tokens para movimentar os tokens e os programas de corretoras que mantêm a liquidez. Essas chamadas aninhadas também são instruções, chamadas de instruções internas (ou CPIs, invocações entre programas). Isso é importante ao criar um filtro: grande parte da atividade real, como as movimentações de tokens dentro de um swap, ocorre em instruções internas. Portanto, seu filtro corresponde a elas por padrão. Se você quiser apenas as instruções assinadas por um usuário, definaincludeCpi como false.
Contas são os elementos on-chain com os quais uma instrução trabalha: carteiras, saldos de tokens, pools e mints. Cada instrução as inclui como uma lista ordenada de endereços, e a ordem funciona como um contrato: o programa define o significado de cada posição. O programa de tokens, por exemplo, espera primeiro a conta da qual os tokens serão retirados, depois a conta que os receberá e, por fim, o proprietário que aprova a transferência.
Funções dão nomes a essas posições. A maioria dos programas conhecidos publica um manual legível por máquina para sua interface, chamado IDL. O manual lista todas as instruções do programa, o significado de seus campos de dados e a finalidade de cada posição de conta. A Helius mantém um catálogo desses manuais para milhares de programas. Com ele, uma simples lista de endereços se transforma em contas nomeadas: para uma transferência de tokens, a posição 0 se torna source, a posição 1 se torna destination e a posição 2 se torna authority. Em vez de tentar adivinhar o significado do terceiro endereço, você lê {"name": "authority", "pubkey": "9xQe...", "isSigner": true}. Esses nomes são as funções que você pode usar nos filtros.
Decodificação é a mesma ideia aplicada aos dados de entrada da instrução. Durante a transmissão, esses dados são bytes opacos. Com o manual do programa, os bytes se tornam valores nomeados: {"in_amount": "1000000", "slippage_bps": 50}. Nem todas as instruções podem ser decodificadas. Portanto, cada uma fica em um dos três estados que você pode identificar diretamente pelos campos:
- Decodificada: a instrução contém um objeto
decodedcomargsnomeados eaccountsnomeadas. - Reconhecida: além de
decoded, a instrução contém umsummarycom umtype(comoswap), umdescriptionlegível por humanos e um payloadparsedDataestruturado, como metadados de swap com valores e mints. - Não decodificada: o programa ou a instrução não está no catálogo,
decodedénulle, em vez disso, a instrução contém os bytes brutos (rawData) e a lista simples de endereços (rawAccounts). Assim, você sempre tem dados com os quais trabalhar.
programs: qual programa a instrução chamainstructionNames: como o manual do programa chama essa açãoaccounts.include: com quais endereços ela interageaccounts.roles: qual posição nomeada deve conter cada endereçoincludeCpieincludeFailed: se instruções internas e transações com falha são consideradas
Comparação
vs Enhanced WebSockets
O Enhanced WebSockets transmite transações completas ou atualizações de contas sem decodificação. Parsed Streams encontra correspondências no nível das instruções e decodifica tudo para você.
vs LaserStream gRPC
O LaserStream é um fluxo gRPC de alta capacidade que você filtra e decodifica no cliente. Parsed Streams é uma API WebSocket que filtra e decodifica no servidor.
vs Parsed Events
O Parsed Events aplica a mesma decodificação a transações históricas: analise assinaturas ou percorra o histórico de um endereço por páginas sob demanda via REST. Parsed Streams envia novas transações à medida que elas são incluídas.
Programas compatíveis
Parsed Streams decodifica mais de 3.600 programas usando suas IDLs on-chain, além de programas essenciais como SPL Token, Token-2022 e System Program por meio de decodificadores integrados. Você pode filtrar por qualquer endereço de programa. As instruções que o serviço não consegue decodificar são transmitidas como dados brutos de instrução. Alguns dos programas decodificados mais usados:DEXs & AMMs
DEXs & AMMs
Launchpads
Launchpads
Lending & Perps
Lending & Perps
NFTs & Compression
NFTs & Compression
Acesso e preços
Parsed Streams está disponível de forma geral em todos os planos, incluindo o Free. Ele substitui os Enhanced Transaction Webhooks para dados de transações analisados em tempo real. Obtenha sua chave de API no painel da Helius. Cada evento entregue custa 1 crédito, a mesma tarifa dos eventos de webhook. Consulte Créditos para ver a lista completa de preços. O Parsed Streams é disponibilizado no endpoint do Gatekeeper, o mesmo host usado pelo tráfego de RPC e WebSocket da Helius. Não há um host separado para o Parsed Streams:api-key (ou o cabeçalho x-api-key). A chave é verificada quando a conexão é aberta: uma chave ausente ou inválida é rejeitada com HTTP 401, e um projeto que atingiu seu limite de conexões recebe HTTP 429.
Comece agora
Quickstart
Conecte-se, envie seu primeiro filtro e leia uma notificação.
Track Jupiter Swaps
Crie e assine um filtro real usando a descoberta de programas.
Track Pump.fun Mints
Um listener seguro para reconexões que registra cada nova implantação de token da Pump.fun.
Handling Reconnects
Detecte desconexões, aumente gradualmente o intervalo entre tentativas, assine novamente e recupere os slots perdidos.