tokenAccounts de LaserStream permite que una suscripción de transacciones gRPC detecte actividad en las cuentas de tokens asociadas (ATA) que posee una billetera, no solo transacciones en las que aparece directamente la clave pública de la billetera. El mismo filtro está disponible mediante WebSocket; consulta Filtrado de cuentas de tokens (ATA) mediante WebSocket.
El problema: los filtros de cuentas simples omiten las transferencias de tokens entrantes
Cuando supervisas una billetera conaccountInclude: [wallet], solo detectas transacciones en las que la clave pública de esa billetera aparece entre las claves de cuenta de la transacción. Un caso común queda fuera: cuando alguien envía un token SPL (USDC, por ejemplo) a la billetera, la transferencia interactúa con la cuenta de tokens asociada (ATA) de la billetera —una dirección independiente derivada por un programa—, no con la clave pública de la billetera.
Por lo tanto, una suscripción simple con accountInclude: [wallet] nunca detecta transferencias de tokens entrantes. Tendrías que enumerar de antemano todas las ATA que posee la billetera y agregar cada una al filtro. Sin embargo, las ATA se crean bajo demanda (una por cada mint), así que no puedes conocer el conjunto completo con anticipación.
Cómo funciona la expansión tokenAccounts
Configura tokenAccounts en un filtro de transacciones para ampliar la coincidencia, de modo que una billetera incluida en accountInclude también coincida con las transacciones que interactúan con una cuenta de tokens que posee. La coincidencia se basa en el propietario: LaserStream identifica, en el momento de la coincidencia, las cuentas de tokens que poseen tus direcciones de accountInclude. Así, detecta cualquier cuenta de tokens que posea la billetera, incluidas las no canónicas, no solo la dirección ATA derivada. Nunca tienes que enumerar las ATA por tu cuenta.
Las suscripciones que omiten tokenAccounts se comportan exactamente igual que antes, por lo que puedes agregarlo de forma segura a un filtro existente.
Para buscar coincidencias por token en lugar de por billetera, consulta Filtrado por mint de token. Las dos opciones se pueden combinar, por lo que un solo filtro puede supervisar la actividad de una billetera específica en un token específico.
Modos de expansión
tokenAccounts acepta uno de tres valores de cadena:
Comienza con
"balanceChanged". Captura movimientos reales de fondos con una fracción del volumen de "all".
Úsalo en LaserStream gRPC
AgregatokenAccounts a un filtro de transacciones en tu SubscribeRequest. El SDK de Helius LaserStream convierte por ti la cadena en la enumeración TokenAccountExpansionControlFlag del protocolo (incluida en yellowstone-grpc-proto 12.5.0 o posterior).
Cómo interpretar la coincidencia
Cuando una transacción coincide mediante la expansión de ATA, el movimiento de tokens de la billetera aparece en los camposmeta.postTokenBalances e meta.preTokenBalances de la transacción. Filtra esas entradas por owner para aislar los saldos que realmente posee tu billetera. Luego, compara preTokenBalances con postTokenBalances en el mismo accountIndex para ver cuánto se movió de cada mint. El ejemplo anterior muestra el paso de filtrado; la guía de supervisión de transacciones muestra la comparación completa.
Contenido relacionado
Transaction Monitoring
Estrategias completas de filtrado y un ejemplo ejecutable para supervisar una billetera mediante gRPC.
Token Account Filtering (WebSocket)
El mismo campo
tokenAccounts en el método transactionSubscribe de WebSocket.Subscribe Request Reference
Todos los campos de filtro de transacciones, incluido
tokenAccounts.Compressed Filters
Supervisa cientos de miles de cuentas en un solo flujo.
Token Mint Filtering
Suscríbete a todas las transacciones de un mint de token con
matchMints.