Skip to main content
LaserStream fornece as mesmas garantias de entrega que os nós Geyser. Este guia cobre o que você pode esperar do comportamento de entrega de mensagens dos seus streams do LaserStream.
Essas garantias se aplicam a assinaturas padrão (transações, contas, slots, blocos). Transações pré-processadas (parte da Shred Delivery) operam sob garantias de entrega em um melhor esforço separadas.

Entrega exatamente uma vez

O LaserStream garante entrega exatamente uma vez. Cada mensagem é entregue ao seu stream exatamente uma vez — você nunca receberá mensagens duplicadas e nenhuma mensagem será pulada. LaserStream alcança isso conectando-se a vários nós Solana simultaneamente e deduplicando dados recebidos antes de encaminhá-los para o seu stream. Esta arquitetura multi-nó também elimina pontos únicos de falha, garantindo o máximo de tempo de atividade sem sacrificar a correção da entrega.

Ordenação de mensagens por nível de compromisso

A ordenação de entrega depende do nível de compromisso das mensagens:

Confirmado e finalizado

Todas as mensagens confirmadas e finalizadas são entregues em ordem. Você pode confiar nesses níveis de compromisso para fornecer uma visão consistente e sequencial do estado on-chain.

Processado

Todas as mensagens processadas são emitidas em ordem crescente de slot, a menos que haja um fork. No caso de um fork, a ordem de slot pode temporariamente se desviar à medida que a rede se reorganiza em torno da cadeia canônica. Uma vez que o fork é resolvido, a ordem ascendente é retomada.
No nível de compromisso processado, há uma pequena chance de que um slot processado possa ser posteriormente pulado ou desviado devido a um fork. O Geyser não envia notificações de rollback explícitas para atualizações desviadas por forks. Se seu aplicativo consome dados de nível processado, você deve considerar a possibilidade de que algumas atualizações possam pertencer a slots que são abandonados no final. Para aplicativos que exigem certeza, use o nível de compromisso confirmado ou finalizado.

Ordenação dentro de um slot

Dentro de um único slot, o LaserStream entrega atualizações de conta e transações com as seguintes garantias:

Atualizações de contas antes das transações

Para cada transação, as atualizações de conta que ela causou são entregues antes da própria transação:

Ordenação entre transações

O LaserStream preserva a mesma ordenação que o plugin Geyser do Agave. Se as atualizações de diferentes transações chegam em uma ordem determinística depende de seus locks de escrita:
  • Mesmo lock de escrita (ex., três negociações no mesmo pool Raydium): sempre determinístico. O Agave executa estas transações sequencialmente, pois escrevem na mesma conta.
  • Locks de escrita diferentes (ex., duas transações não relacionadas): não necessariamente determinístico. O Agave pode executar estas em paralelo, e suas atualizações podem ser intercaladas no stream.
Para reconstruir uma ordem totalmente determinística, independentemente dos locks de escrita, use o índice de bloco/transação dos dados da transação.

Normalização da versão de escrita

O LaserStream normaliza as versões de escrita em toda sua arquitetura multi-nó. Ao contrário do Geyser ou Yellowstone bruto — onde as versões de escrita são locais para cada nó e podem diferir — o LaserStream fornece versões de escrita consistentes nas quais você pode confiar para ordenar atualizações de conta de nível processado.
Exceção temporária: Contas maiores que 512KB estão atualmente em buffer no plugin Geyser por razões de desempenho, o que pode afetar a ordenação determinística para essas contas. Esta limitação será removida em breve.

Notificações de slot

Notificações de slot processadas chegam após todas as mensagens para aquele slot terem sido entregues. Isso significa que, quando você recebe uma notificação de slot processada, pode ter certeza de que todos os dados de atualização de transações e contas associados a esse slot já foram enviados para o seu stream. Você pode usar notificações de slot como um sinal para liberar dados em buffer para aquele slot.

Continuidade de dados na desconexão

O LaserStream mantém um buffer de dados de slot recentes, permitindo reprodução histórica por até 24 horas (~216.000 slots) de dados passados. Se o seu aplicativo se desconectar, você pode reconectar e retomar a partir do seu último slot processado sem perder nenhum dado. Ao usar um cliente SDK do LaserStream, essa recuperação é tratada automaticamente — o cliente rastreia sua posição no stream pelo número do slot e se reconecta de forma transparente. Não é necessário lógica de reconexão manual.

Referência de nível de compromisso