Skip to main content
El filtro tokenAccounts del método WebSocket transactionSubscribe permite que una suscripción detecte actividad en las cuentas de tokens asociadas (ATA) que posee una billetera, no solo transacciones donde aparece directamente la clave pública de la billetera. El mismo filtro está disponible mediante gRPC. Consulta Filtrado de cuentas de tokens (ATA) para ver la versión de gRPC.

El problema: los filtros de cuentas simples omiten las transferencias de tokens entrantes

Cuando supervisas una billetera con accountInclude: [wallet], solo detectas las 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 pasa inadvertido: cuando alguien envía un token SPL (por ejemplo, USDC) a la billetera, la transferencia interactúa con la cuenta de tokens asociada (ATA) de la billetera —una dirección independiente derivada por el programa—, no con la propia clave pública de la billetera. Por lo tanto, una suscripción simple con accountInclude: [wallet] nunca detecta las 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), por lo que no puedes conocer el conjunto completo con anticipación.

Cómo funciona la expansión de tokenAccounts

Configura tokenAccounts en la suscripción para ampliar las coincidencias, de modo que una billetera indicada en accountInclude también detecte transacciones que interactúan con una cuenta de tokens que posee. La coincidencia se basa en el propietario: LaserStream resuelve, en el momento de buscar coincidencias, las cuentas de tokens que poseen tus direcciones de accountInclude. De este modo, detecta cualquier cuenta de tokens que posea la billetera, incluidas las no canónicas, y 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.

Modos de expansión

tokenAccounts acepta uno de estos tres valores de cadena: Comienza con "balanceChanged". Captura movimientos reales de fondos con una fracción del volumen de "all".

Úsalo en transactionSubscribe

tokenAccounts es una extensión de Helius para la API WebSocket estándar de Solana. Un valor no válido devuelve el error JSON-RPC -32602: Invalid tokenAccounts value '<x>', expected one of: none, balanceChanged, all.

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 campos meta.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ó cada mint. El ejemplo anterior muestra el paso de filtrado.

Contenido relacionado

transactionSubscribe

Todos los filtros y opciones de transactionSubscribe, incluido tokenAccounts.

Token Account Filtering (gRPC)

La misma expansión de tokenAccounts en los filtros de transacciones de LaserStream mediante gRPC.

WebSocket Quickstart

Conéctate a LaserStream WebSocket y transmite tus primeros eventos.