Skip to main content
Beta Público. As transações pré-processadas fazem parte da família de produtos Shred Delivery da Helius. Elas estão disponíveis para qualquer assinante do plano Professional ou superior e são medidas em 20 créditos por 1 MB.Em média, as transações pré-processadas chegam ~8 ms mais rápido que o nível de compromisso processed, ao custo de metadados de execução (veja compromissos abaixo).
As transações pré-processadas são a maneira mais rápida de receber transações Solana via gRPC. Helius decodifica fragmentos diretamente à medida que chegam ao validador e envia as transações resultantes para você, fornecendo acesso aos dados da transação milissegundos mais cedo do que 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 servem 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). ← 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 → Saldo pré/pós, logs e informações de erro são computados.
  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. O compromisso: você recebe os dados da transação milissegundos mais cedo, mas sem metadados de execução como alterações 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 runtime execute a transação (estágio 4). Se você precisa de atualizações de conta ou programa em tempo real — saldos de token, estado da curva de vinculação, contas de programa, qualquer coisa que não seja uma transação bruta — use LaserStream gRPC no 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 de Melhor Esforço

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

Que dados estão disponíveis?

As transações pré-processadas incluem a mensagem completa da transação, mas faltam 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
  • Recent blockhash - Referência de expiração da transação
  • Assinaturas - Todas as assinaturas de transação
  • É transação de voto - Se esta é uma transação de voto
  • Número do slot - Qual slot continha esta transação

Dados Ausentes

  • Metadados da transação - Mudanças de saldos de token, 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 entre programas (CPIs) não estão incluídas
  • Mensagens de log - Logs de programa são gerados durante a execução
  • Unidades de computação consumidas - Métricas de execução indisponíveis
Pense nas 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

As assinaturas de transação pré-processadas são suportadas em todos os SDKs LaserStream:

JavaScript/TypeScript

Versão 0.2.8 ou mais recente

Rust

Versão 0.1.5 ou mais recente

Go

Versão 0.1.0 ou mais recente

Exemplos de Implementação

JavaScript/TypeScript

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

Rust

O SDK de Rust fornece desempenho nativo:
Exemplo completo: preprocessed_transaction_sub.rs

Go

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

Estrutura de Inscrição e Filtragem

Estrutura de Requisição

A requisição de inscrição pré-processada segue uma estrutura semelhante às inscrições padrão, mas com um conjunto focado de filtros:

Estrutura de Resposta

As 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, recent blockhash
  • Assinaturas - Todas as assinaturas de transação
  • Consultas de tabela de endereços - Para transações versionadas
Isso é idêntico à estrutura de transação em inscrições padrão, mas sem o campo meta contendo os resultados de execução.