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:- Recepção de Fragmentos → O validador recebe fragmentos de transação (fragmentos de dados). ← Os fragmentos brutos (UDP) da Helius são entregues aqui.
- Decodificação de Fragmentos → Fragmentos são decodificados em transações brutas. ← Transações pré-processadas disponíveis aqui.
- Execução de Transação → A transação é executada pelo tempo de execução.
- Geração de Metadados → Saldos pré/pós, logs e informações de erros são calculados.
- Compromisso → A transação atinge o estado processado/confirmado/finalizado. ← LaserStream gRPC e LaserStream WebSocket entregam aqui.
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
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
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 dedicadasubscribePreprocessed com reconexão automática:
Rust
O SDK Rust oferece desempenho nativo:Go
O SDK Go fornece interfaces Go idiomáticas: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: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
meta contendo resultados de execução.