Skip to main content
Aviso de descontinuação. Transações pré-processadas via gRPC serão descontinuadas. Mude para o método WebSocket preprocessedSubscribe — ele entrega os mesmos dados de transação pré-execução com menor latência.
Transações pré-processadas são a maneira mais rápida de receber transações Solana via gRPC. A Helius decodifica fragmentos diretamente quando chegam ao validador e envia as transações resultantes para você, dando acesso aos dados de transação milissegundos antes de qualquer assinatura pós-execução — aproximadamente 8 ms antes do nível de compromisso processed em média. Este guia explica quando usar transações pré-processadas, quais dados estão disponíveis e como se inscrever nelas usando os SDKs LaserStream (que também fornecem transações pré-processadas pela mesma conexão gRPC).

Onde as transações pré-processadas se encaixam no ciclo de vida

Na arquitetura do Solana, as transações passam por várias etapas antes de serem totalmente processadas:
  1. Recepção de Fragmentos → O validador recebe fragmentos de transação (fragmentos de dados). ← Os fragmentos brutos (UDP) da Helius são entregues aqui.
  2. Decodificação de Fragmentos → Fragmentos são decodificados em transações brutas. ← Transações pré-processadas disponíveis aqui.
  3. Execução de Transação → A transação é executada pelo tempo de execução.
  4. Geração de Metadados → Saldos pré/pós, logs e informações de erros são calculados.
  5. Compromisso → A transação atinge o estado processado/confirmado/finalizado. ← LaserStream gRPC e LaserStream WebSocket entregam aqui.
Assinaturas pós-execução entregam dados no estágio 5 — após a execução completa e geração de metadados. Assinaturas pré-processadas entregam no estágio 2 — imediatamente após decodificar fragmentos, antes da execução ser concluída. A troca: você recebe dados de transação milissegundos mais cedo, mas sem metadados de execução como mudanças de saldo, logs ou informações de erro.
Este é um fluxo apenas de transações. Atualizações de estado de conta e programa não existem até que o tempo de execução execute a transação (estágio 4). Se precisar de atualizações em tempo real de conta ou programa — saldos de tokens, estado da curva de vinculação, contas de programas, qualquer coisa que não seja uma transação bruta — use LaserStream gRPC no nível de compromisso processed, que é a maneira mais rápida de receber mudanças de conta/programa.
Precisa de sinais de transação ainda mais rápidos? Experimente Pré-confirmações para transmitir transações agendadas e Fragmentos Brutos (UDP) para dados de transação não processados.

Garantias de Entrega Melhor Esforço

A entrega de transações pré-processadas é de melhor esforço, não garantida. Almejamos uma taxa de entrega de 99,99%, mas algumas transações podem ser perdidas durante:
  • Atualizações de infraestrutura e reimplantações
  • Problemas de rede ou conectividade do validador
  • Casos extremos na decodificação ou processamento de fragmentos
Para aplicações críticas que exigem entrega garantida, use assinaturas de transação padrão.

Quais dados estão disponíveis?

Transações pré-processadas incluem a mensagem completa da transação, mas sem metadados de execução:

Dados Disponíveis

  • Assinatura da transação - Identificador único da transação
  • Chaves de conta - Todas as contas referenciadas pela transação
  • Instruções - Dados completos de instrução e chamadas de programa
  • Bloco recente - Referência de expiração da transação
  • Assinaturas - Todas as assinaturas de transação
  • É transação de voto - Se é uma transação de voto
  • Número do slot - Qual slot continha esta transação

Dados Ausentes

  • Metadados da transação - Mudanças nos saldos de tokens, saldos pré/pós, status da transação
  • Erros de transação - Não podemos determinar se a transação falhou
  • Instruções internas - Invocações de programa cruzado (CPIs) não estão incluídas
  • Mensagens de log - Logs de programas são gerados durante a execução
  • Unidades de computação consumidas - Métricas de execução indisponíveis
Pense em transações pré-processadas como receber a “proposta” sem o “resultado.” Você vê o que o usuário tentou fazer, mas não o que realmente aconteceu.

Suporte a SDK e Requisitos de Versão

Assinaturas de transações pré-processadas são suportadas em todos os SDKs LaserStream:

JavaScript/TypeScript

Versão 0.2.8 ou posterior

Rust

Versão 0.1.5 ou posterior

Go

Versão 0.1.0 ou posterior

Exemplos de Implementação

JavaScript/TypeScript

O SDK JavaScript fornece uma função dedicada subscribePreprocessed com reconexão automática:
Exemplo completo: preprocessed-transaction-sub.ts

Rust

O SDK Rust oferece desempenho nativo:
Exemplo completo: preprocessed_transaction_sub.rs

Go

O SDK Go fornece interfaces Go idiomáticas:
Exemplo completo: preprocessed-transaction-sub.go

Estrutura de Assinatura e Filtragem

Estrutura de Requisição

A requisição de assinatura pré-processada segue uma estrutura semelhante a assinaturas padrão, mas com um conjunto focado de filtros:

Estrutura de Resposta

Atualizações chegam com a mensagem completa da transação e metadados básicos:
O campo transaction.transaction contém a estrutura completa da transação Solana incluindo:
  • Mensagem - Chaves de conta, instruções, bloco recente
  • Assinaturas - Todas as assinaturas de transação
  • Consultas de tabela de endereços - Para transações versionadas
Isto é idêntico à estrutura de transação em assinaturas padrão, mas sem o campo meta contendo resultados de execução.