Skip to main content
O filtro tokenAccounts do LaserStream permite que uma assinatura de transação gRPC corresponda à atividade nas contas de token associadas (ATAs) que uma carteira possui, não apenas transações onde o pubkey da carteira aparece diretamente. O mesmo filtro está disponível via WebSocket — veja Filtragem de Conta de Token (ATA) via WebSocket.

O problema: filtros de conta simples perdem transferências de token recebidas

Quando você observa uma carteira com accountInclude: [wallet], apenas corresponde a transações onde essa pubkey de carteira aparece nas chaves de conta da transação. Um caso comum passa despercebido: quando alguém envia para a carteira um token SPL (USDC, por exemplo), a transferência toca na conta de token associada (ATA) da carteira — um endereço derivado separado — não na própria pubkey da carteira. Portanto, uma assinatura accountInclude: [wallet] simples nunca vê transferências de token recebidas. Você teria que enumerar todas as ATAs que a carteira possui antecipadamente e adicionar cada uma ao filtro — mas as ATAs são criadas sob demanda (uma por mint), então você não pode saber o conjunto completo com antecedência.

Como funciona a expansão tokenAccounts

Defina tokenAccounts em um filtro de transação para expandir a correspondência de modo que uma carteira accountInclude também corresponda a transações que toquem uma conta de token que ela possui. A correspondência é baseada em proprietário: o LaserStream resolve as contas de token possuídas pelos seus endereços accountInclude no momento da correspondência, assim capturando qualquer conta de token que a carteira possua — incluindo as não canônicas — não apenas o endereço ATA derivado. Você nunca precisa listar as ATAs. Assinaturas que omitem tokenAccounts se comportam exatamente como antes, portanto é seguro adicionar a um filtro existente.

Modos de Expansão

tokenAccounts aceita um dos três valores de string: Comece com "balanceChanged". Captura movimento real de fundos com uma fração do volume de "all".

Use no LaserStream gRPC

Adicione tokenAccounts a um filtro de transação no seu SubscribeRequest. O Helius LaserStream SDK converte a string para o enum de nível de wire TokenAccountExpansionControlFlag para você (parte do yellowstone-grpc-proto 12.5.0+).
Veja o Guia de Monitoramento de Transação para um exemplo mais completo que diferencia saldos antes e depois, e a referência de Pedido de Inscrição para cada campo de filtro de transação.

Lendo o que foi correspondido

Uma vez que uma transação corresponda via expansão ATA, o movimento de token da carteira reside na meta.postTokenBalances e na meta.preTokenBalances da transação. Filtre essas entradas por owner para isolar os saldos que sua carteira realmente possui, então compare preTokenBalances com postTokenBalances no mesmo accountIndex para ver quanto cada mint moveu. O exemplo acima mostra a etapa de filtragem; o Guia de Monitoramento de Transações mostra a diferença completa.

Relacionado

Monitoramento de Transações

Estratégias completas de filtragem e um exemplo executável de monitoramento de carteira sobre gRPC.

Filtragem de Conta de Token (WebSocket)

O mesmo campo tokenAccounts no método WebSocket transactionSubscribe.

Referência de Solicitação de Assinatura

Cada campo de filtro de transação, incluindo tokenAccounts.

Filtros Compactados

Acompanhe centenas de milhares de contas em um único stream.