Skip to main content

Descripción general

getTransactionsForAddress es un método RPC exclusivo de Helius que devuelve el historial de transacciones de una dirección con filtrado avanzado, ordenamiento flexible y paginación eficiente. No forma parte del RPC estándar de Solana. A diferencia de getSignaturesForAddress, que solo devuelve firmas y omite las cuentas de tokens asociadas, getTransactionsForAddress puede devolver los datos completos de las transacciones, incluida la actividad de las cuentas de tokens asociadas (ATA) de una billetera, en una sola llamada. Esto lo convierte en la forma más rápida de obtener el historial completo de una dirección para rellenar datos históricos, indexar y realizar análisis. Este método devuelve hasta 1,000 transacciones completas por llamada.

Flexible sorting

Ordena cronológicamente (primero las más antiguas) o en orden inverso (primero las más recientes).

Advanced filtering

Filtra por intervalos de tiempo, slots, firmas, estado y transferencias de tokens.

Full transaction data

Obtén los detalles completos de la transacción en una sola llamada, sin necesidad de una llamada posterior a getTransaction.

Token accounts

Incluye las transacciones de las cuentas de tokens asociadas a una dirección.

Cuándo usarlo

Usa getTransactionsForAddress cuando necesites:
  • El historial completo de tokens de una billetera, incluidas las cuentas de tokens asociadas
  • Un relleno rápido de datos históricos en una sola llamada para un indexador o pipeline de datos
  • Análisis e informes de transacciones basados en tiempo o slots
  • Filtrado por estado para conservar solo las transacciones exitosas o solo las fallidas
  • Reproducción histórica cronológica (orden de la más antigua a la más reciente)
  • Análisis del lanzamiento de tokens: primeras transacciones de acuñación y primeros titulares
  • Historial de financiamiento de billeteras y detección de contrapartes
  • Informes de cumplimiento y auditoría para un periodo específico
Para obtener un historial analizado que solo incluya transferencias (pagos y conciliación de saldos), usa getTransfersByAddress.

Compatibilidad con redes

Inicio rápido

1

Get your API key

Obtén tu clave de API en el panel de Helius.
2

Query with advanced features

Obtén todas las transacciones exitosas de una billetera entre dos fechas, ordenadas cronológicamente:
3

Understand the parameters

Este ejemplo muestra las funciones principales:
  • transactionDetails: establécelo en 'full' para obtener los datos completos de las transacciones en una sola llamada
  • sortOrder: usa 'asc' para el orden cronológico (primero las más antiguas) o 'desc' para mostrar primero las más recientes
  • filters.blockTime: define intervalos de tiempo con gte (mayor o igual que) y lte (menor o igual que)
  • filters.status: filtra solo las transacciones 'succeeded' o 'failed'
  • filters.tokenAccounts: incluye transferencias, acuñaciones y quemas de cuentas de tokens asociadas

Parámetros de la solicitud

string
requerido
Clave pública codificada en base 58 de la cuenta cuyo historial de transacciones quieres consultar
string
predeterminado:"signatures"
Nivel de detalle de la transacción que se devolverá:
  • signatures: información básica de la firma (más rápido)
  • full: datos completos de la transacción (elimina la necesidad de llamadas a getTransaction y admite un límite de hasta 1,000)
string
predeterminado:"desc"
Orden de los resultados:
  • desc: primero los más recientes (predeterminado)
  • asc: primero los más antiguos (orden cronológico, ideal para análisis históricos)
number
predeterminado:"1000"
Número máximo de transacciones que se devolverán:
  • Hasta 1000 cuando transactionDetails: "signatures"
  • Hasta 1000 cuando transactionDetails: "full"
string
Token de paginación de la respuesta anterior (formato: "slot:position")
string
predeterminado:"finalized"
Nivel de confirmación: finalized o confirmed. No se admite el nivel processed.
object
Opciones de filtrado avanzado para restringir los resultados.
object
Filtra por número de slot mediante operadores de comparación: gte, gt, lte, ltEjemplo: { "slot": { "gte": 1000, "lte": 2000 } }
object
Filtra por marca de tiempo Unix mediante operadores de comparación: gte, gt, lte, lt, eqEjemplo: { "blockTime": { "gte": 1640995200, "lte": 1641081600 } }
object
Filtra por firma de transacción mediante operadores de comparación: gte, gt, lte, ltEjemplo: { "signature": { "lt": "SIGNATURE_STRING" } }
string
Filtra por el estado de éxito o fallo de la transacción:
  • succeeded: solo transacciones exitosas
  • failed: solo transacciones fallidas
  • any: transacciones exitosas y fallidas (predeterminado)
Ejemplo: { "status": "succeeded" }
string
predeterminado:"none"
Filtra las transacciones de cuentas de tokens relacionadas:
  • none: devuelve solo las transacciones que hacen referencia a la dirección proporcionada (predeterminado)
  • balanceChanged: devuelve las transacciones que hacen referencia a la dirección proporcionada o modifican el saldo de una cuenta de tokens propiedad de esa dirección (recomendado)
  • all: devuelve las transacciones que hacen referencia a la dirección proporcionada o a cualquier cuenta de tokens propiedad de esa dirección
Ejemplo: { "tokenAccounts": "balanceChanged" }
object
Filtra las transacciones en las que la dirección consultada participó en una transferencia de tokens que coincide con una contraparte, dirección de transferencia, acuñación o intervalo de importes sin procesar. Todos los campos son opcionales y se combinan con semántica AND.Ejemplo: { "tokenTransfer": { "direction": "in", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }
string
Dirección de la contraparte. Coincide con transferencias cuyo otro extremo es esta dirección.
string
predeterminado:"any"
Filtra por la dirección de la transferencia con respecto a la dirección consultada:
  • in: transferencias recibidas por la dirección consultada
  • out: transferencias enviadas por la dirección consultada
  • any: transferencias entrantes y salientes
string
Acuñación del token por la que se filtrará.
object
Comparación de importes mediante el importe sin procesar en cadena, no el importe de la IU ni el ajustado por decimales. Admite gt, gte, lt e lte.
string
Formato de codificación de los datos de transacciones (solo se aplica cuando transactionDetails: "full"). Es el mismo que el de la API getTransaction. Opciones: json, jsonParsed, base64, base58
number
Define la versión máxima de transacción que se devolverá. Si se omite, solo se devolverán transacciones heredadas. Establécelo en 1 para incluir transacciones heredadas, v0 y v1.
number
El slot mínimo en el que se puede evaluar la solicitud

Medición

Las respuestas exitosas se miden según lo que se devuelve:

Respuesta

La estructura de la respuesta depende de transactionDetails. El modo de firmas devuelve registros ligeros de firmas; el modo completo devuelve objetos completos de transacciones y metadatos.

Campos de la respuesta

El campo transactionIndex es exclusivo de getTransactionsForAddress. Otros endpoints similares, como getSignaturesForAddress, getTransaction e getTransactions, no incluyen este campo. En el modo completo, meta es el objeto completo de metadatos de la transacción, con una estructura idéntica a la que devuelve getTransaction. Incluye preTokenBalances e postTokenBalances, por lo que puedes calcular los cambios en los saldos de tokens (por ejemplo, para detectar intercambios) directamente desde la respuesta, sin llamadas posteriores.

Filtros

Puedes usar operadores de comparación para slot, blockTime e signature, además de los filtros especiales status, tokenAccounts e tokenTransfer. Al combinar varios filtros, el resultado se restringe a su intersección.

Operadores de comparación

Estos operadores funcionan como consultas de bases de datos para darte un control preciso sobre el intervalo de datos.

Filtros de enumeración

Ejemplos de filtros combinados:

Cuentas de tokens asociadas

En Solana, una billetera no almacena tokens directamente. En su lugar, la billetera posee cuentas de tokens, y esas cuentas almacenan los tokens. Cuando alguien te envía USDC, este se deposita en tu cuenta de tokens USDC, no en la dirección principal de tu billetera. Este método es único porque puede consultar el historial completo de tokens, incluidas las cuentas de tokens asociadas (ATA) de una billetera. Los métodos RPC nativos, como getSignaturesForAddress, no incluyen las ATA. El filtro tokenAccounts controla este comportamiento:
  • none (predeterminado): solo devuelve las transacciones que hacen referencia directa a la dirección de la billetera. Úsalo si solo te interesan las interacciones directas de la billetera.
  • balanceChanged (recomendado): devuelve las transacciones que hacen referencia a la dirección de la billetera o modifican el saldo de una cuenta de tokens propiedad de la billetera. Esto excluye el spam y operaciones no relacionadas, como el cobro de comisiones o las delegaciones, para ofrecerte una vista clara de la actividad relevante de la billetera.
  • all: devuelve todas las transacciones que hacen referencia a la dirección de la billetera o a cualquier cuenta de tokens propiedad de esta.
El filtro tokenAccounts no admite transacciones anteriores a diciembre de 2022. Depende de los metadatos de transferencia de tokens incorporados a Solana en el slot 111,491,819. Para cubrir la actividad anterior, consulta la solución alternativa para cuentas de tokens históricas.

Filtro de transferencias de tokens

El filtro tokenTransfer restringe los resultados a las transacciones en las que la dirección consultada participó en una transferencia de tokens que coincide con criterios específicos: una contraparte, acuñación, dirección de transferencia o intervalo de importes determinados. Úsalo para responder preguntas como:
  • ¿Cuándo recibió esta billetera USDC de una contraparte específica?
  • Muestra todas las transferencias salientes superiores a 1,000 tokens.
  • ¿Cuándo interactuó esta billetera con esta acuñación específica?
El filtro es un campo opcional dentro del objeto filters de la configuración de la solicitud:
Todos los campos dentro de tokenTransfer son opcionales. La combinación de varios campos se trata como AND. Operadores de intervalo de importes: Puedes combinar operadores de importes, como { "gte": 1000000, "lte": 5000000 } para un intervalo cerrado. tokenTransfer se combina con los demás filtros de nivel superior (slot, blockTime, status e tokenAccounts); el resultado final es la intersección.

Ejemplos

Análisis basados en tiempo

Genera informes mensuales de transacciones:
Procesa los datos para el análisis:

Creación de acuñaciones de tokens

Busca la transacción de creación de la acuñación de un token específico:
Para la creación de un pool de liquidez, consulta la dirección del pool:
Esto permite encontrar el momento exacto en que se creó una acuñación de tokens o un pool de liquidez, incluida la dirección del creador y los parámetros iniciales.

Transacciones de financiamiento

Averigua quién financió una dirección específica:
Después, analiza los datos de la transacción para encontrar transferencias de SOL:
Las primeras transacciones suelen revelar la fuente de financiamiento y pueden ayudar a identificar direcciones relacionadas o patrones de financiamiento.

Transferencias de tokens

Filtra por tokenTransfer para aislar movimientos específicos de tokens. Entradas de USDC a una dirección:
Transferencias salientes de gran valor a una contraparte específica:
Combinado con un intervalo de slots y un estado:

Paginación

Cuando tengas más transacciones que el límite, usa el paginationToken de la respuesta para obtener la página siguiente. El token es una cadena simple con el formato "slot:position" que indica a la API desde dónde continuar. Usa el token de paginación de cada respuesta para obtener la página siguiente:

Varias direcciones

No puedes consultar varias direcciones en una sola solicitud. Cada consulta de dirección cuenta como una solicitud independiente a la API y se mide como tal. Para obtener transacciones de varias direcciones, consulta cada dirección dentro del mismo intervalo de tiempo o slots y, después, combina y ordena los resultados:
Para analizar historiales más extensos, recorre intervalos de tiempo o slots (por ejemplo, 1000 slots por vez) y repite este patrón.

Prácticas recomendadas

Rendimiento. Usa transactionDetails: "signatures" cuando no necesites los datos completos de las transacciones. Usa tamaños de página razonables para mejorar los tiempos de respuesta y filtra por intervalos de tiempo o slots específicos para realizar consultas más focalizadas. Filtrado. Comienza con filtros amplios y restrínge los resultados progresivamente. Usa filtros basados en tiempo para los flujos de análisis e informes, y combina varios filtros para crear consultas precisas dirigidas a tipos de transacciones o periodos específicos. Paginación. Guarda los tokens de paginación cuando necesites reanudar consultas grandes más adelante. Supervisa la profundidad de paginación para planificar el rendimiento y usa el orden ascendente cuando necesites reproducir eventos históricos en orden cronológico. Manejo de errores. Gestiona los límites de frecuencia con reintentos y espera exponencial. Valida las direcciones antes de realizar solicitudes y almacena en caché los resultados cuando corresponda para reducir el uso de la API.

Limitaciones y casos extremos

Un pequeño conjunto de direcciones se redirige al archivo heredado, se limita a una alternativa de análisis por slots o devuelve resultados vacíos. La detección de cuentas de tokens antes del slot 111,491,819 también requiere una solución alternativa. Expande las secciones siguientes para consultar todos los detalles.
Redirección al archivo antiguo. Las solicitudes para estas direcciones se redirigen a nuestro sistema de archivo antiguo.Alternativa de análisis por slots. Las solicitudes para estas direcciones se reenvían a nuestro nuevo sistema de archivo y pueden consultarse mediante un análisis slot por slot (máximo de 100 slots). Sin embargo, estos datos no están indexados.Devuelve resultados vacíos (is_reserved_address). Las solicitudes se reenvían a nuestro nuevo sistema de archivo; sin embargo, los datos no están indexados y las consultas devuelven resultados vacíos.
Para las direcciones con actividad de cuentas de tokens anterior al slot 111,491,819, el filtro tokenAccounts no puede determinar la propiedad porque el campo owner aún no existía en los metadatos de saldos de tokens. Para obtener resultados completos, puedes detectar manualmente esas cuentas de tokens mediante el análisis de las instrucciones de transacciones antiguas y, después, consultar getTransactionsForAddress en paralelo para cada una.

¿En qué se diferencia de getSignaturesForAddress?

Si conoces el método estándar getSignaturesForAddress, getTransactionsForAddress reúne flujos de trabajo de varios pasos en una sola llamada y agrega filtrado, ordenamiento y compatibilidad con cuentas de tokens. Para convertir código existente paso a paso, consulta la guía de migración.

Obtén transacciones completas en una sola llamada

Con getSignaturesForAddress, necesitas dos pasos:
Con getTransactionsForAddress, solo necesitas una llamada:

Obtén el historial de tokens en una sola llamada

Con getSignaturesForAddress, primero debes llamar a getTokenAccountsByOwner y, después, consultar cada cuenta de tokens:
Con getTransactionsForAddress, solo necesitas establecer filters.tokenAccounts:

Funciones adicionales

Chronological sorting

Ordena las transacciones de la más antigua a la más reciente con sortOrder: 'asc'.

Time-based filtering

Filtra por intervalos de tiempo mediante filtros blockTime.

Status filtering

Obtén solo transacciones exitosas o fallidas con el filtro status.

Simpler pagination

Usa paginationToken en lugar de las confusas firmas before/until.

Próximos pasos

Indexing guide

Usa getTransactionsForAddress para rellenar datos históricos y sincronizar un índice de Solana.

getTransfersByAddress

Historial analizado que solo incluye transferencias para pagos y conciliación.

API reference

Esquema completo de solicitud y respuesta de getTransactionsForAddress.

Historical data overview

Compara todos los métodos de datos históricos de Solana.