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 comaccountInclude: [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
AdicionetokenAccounts 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+).
Lendo o que foi correspondido
Uma vez que uma transação corresponda via expansão ATA, o movimento de token da carteira reside nameta.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.