Skip to main content
A opção notifyOn nos métodos WebSocket accountSubscribe e programSubscribe permite que uma inscrição ignore atualizações para contas que uma transação bloqueou para escrita, mas nunca escreveu. O mesmo filtro está disponível via gRPC — veja Filtragem notifyOn para a versão gRPC.

O problema: bloqueios de escrita geram atualizações duplicadas

No Solana, o validador emite uma atualização de conta para cada conta que uma transação bloqueia para escrita — mesmo quando nenhuma instrução realmente escreveu na conta, então seus lamports e dados permanecem inalterados. Para contas movimentadas, isso significa um fluxo constante de notificações duplicadas de “nada mudou” que consomem largura de banda sem trazer novas informações.

Modos de filtro

notifyOn aceita um dos dois valores de string: Dois detalhes importantes:
  • Uma escrita de dados idênticos ainda conta como uma escrita e é entregue. write filtra toques apenas de bloqueio, não gravações que por acaso deixam os mesmos bytes. Na prática, essas gravações de dados idênticos são raras — menos de 5% das atualizações na maioria dos casos.
  • As atualizações que write descarta são duplicatas exatas do estado que você já recebeu. Se você depende de notificações como um sinal de “esta conta foi bloqueada por uma transação” (por exemplo, rastreamento de atividade), mantenha-se em lock.
Inscrições que omitem o campo se comportam exatamente como antes, então é seguro adicionar a uma inscrição existente.

Use no accountSubscribe

Adicione notifyOn ao objeto de configuração:

Use no programSubscribe

A mesma chave funciona no objeto de configuração programSubscribe, filtrando atualizações no-op em todas as contas que o programa possui:
A análise é fail-open: apenas "write" (sem distinção entre maiúsculas e minúsculas) opta por entrar. Qualquer outra coisa — ausente, um erro de digitação, um token desconhecido — resolve para lock, então um erro mantém você no caminho de todas as atualizações em vez de causar erro ou silenciosamente descartar dados.

Relacionados

accountSubscribe

Referência completa do método accountSubscribe, incluindo notifyOn.

programSubscribe

Referência completa do método programSubscribe, incluindo notifyOn.

Filtragem notifyOn (gRPC)

O mesmo filtro em contas do LaserStream gRPC.

Como Usar accountSubscribe

Guia para transmissão de atualizações de conta via WebSocket.