Skip to main content
El método RPC getSignatureStatuses te permite obtener el estado de procesamiento y confirmación de una lista de firmas de transacciones. Esto resulta útil para determinar si la red ha procesado, confirmado o finalizado las transacciones. A menos que la opción searchTransactionHistory esté habilitada, este método consulta principalmente una caché de estados recientes en el nodo RPC. Para transacciones más antiguas, es fundamental habilitar searchTransactionHistory.
Evita agrupar solicitudes para mejorar el rendimientoAgrupar métodos de archivo aumenta considerablemente la latencia. No se permiten lotes de más de 10 solicitudes.

Casos de uso comunes

  • Confirmar la finalidad de una transacción: Verifica si una transacción enviada alcanzó el nivel de confirmación deseado (p. ej., confirmed o finalized).
  • Consultar estados por lotes: Comprueba de forma eficiente el estado de varias transacciones a la vez, por ejemplo, después de un envío por lotes.
  • Actualizar la interfaz según el estado de la transacción: Muestra al usuario el estado de una transacción en tiempo real.
  • Comprobar errores: Identifica si alguna de las transacciones de una lista falló y por qué.

Parámetros de la solicitud

  1. signatures (array de string): (Obligatorio) Un arreglo de firmas de transacciones codificadas en base 58. Puedes consultar hasta 256 firmas en una sola solicitud.
  2. options (object, opcional): Un objeto de configuración opcional con el siguiente campo:
    • searchTransactionHistory (boolean, opcional): Si es true, el nodo RPC buscará las firmas en todo su historial de transacciones. Si es false (el valor predeterminado), solo buscará en una caché de estados recientes. Para transacciones antiguas o que podrían haberse descartado, establece este valor en true.

Estructura de la respuesta

El campo result de la respuesta JSON-RPC contiene un objeto con dos campos:
  • context (object): Un objeto que contiene:
    • slot (u64): El slot en el que el nodo RPC procesó esta solicitud.
  • value (array de object | null): Un arreglo de objetos de estado que corresponde al orden de las firmas en la solicitud. Cada elemento puede ser:
    • Un objeto con los siguientes campos si se encuentra la firma:
      • slot (u64): El slot en el que se procesó la transacción.
      • confirmations (number | null): La cantidad de bloques confirmados desde que se procesó la transacción. Es null si la transacción está finalizada (como la finalidad implica que no se revertirá, una cantidad específica de confirmaciones no resulta tan relevante).
      • err (object | null): Un objeto de error si la transacción falló (p. ej., {"InstructionError":[0,{"Custom":1}]}) o null si se completó correctamente.
      • status (object): Un objeto que indica el estado de ejecución de la transacción. Por lo general, es {"Ok":null} para transacciones completadas correctamente o un objeto que detalla el error para las transacciones fallidas.
      • confirmationStatus (string | null): El estado de confirmación del clúster para la transacción (p. ej., processed, confirmed, finalized). Puede ser null si el estado no está disponible en la caché y searchTransactionHistory es false.
    • null: Si no se encuentra una firma en la caché de estados y searchTransactionHistory es false (o si realmente no existe ni siquiera al buscar en el historial).

Ejemplos

1. Obtener el estado de una lista de firmas (caché reciente)

Este ejemplo obtiene el estado de dos firmas mediante la caché reciente del nodo.

2. Obtener el estado mediante una búsqueda en el historial de transacciones

Este ejemplo obtiene el estado de varias firmas y solicita explícitamente al nodo que busque en su historial de transacciones.

Consejos para desarrolladores

  • searchTransactionHistory: Es fundamental para garantizar la fiabilidad. Si es false (valor predeterminado), el método solo consulta una caché reciente limitada. Si una transacción es antigua o pudo haberse descartado y no está en esta caché, devolverá null como estado de esa firma. Establécelo siempre en true si necesitas confirmar el estado de transacciones que podrían no ser muy recientes.
  • Límite de firmas: Puedes consultar un máximo de 256 firmas por llamada.
  • Estado null: Un valor null en el arreglo value para una firma determinada significa que no se encontró su estado. Esto podría deberse a que no está en la caché reciente (si searchTransactionHistory es false), a que la transacción nunca se incluyó o a que es demasiado antigua para el historial del nodo, incluso con searchTransactionHistory: true.
  • confirmations: null: Esto suele significar que la transacción alcanzó el estado finalized. En este punto, el concepto de una cantidad específica de confirmaciones es menos relevante porque el bloque se considera irreversible.
  • Manejo de errores: Revisa el campo err dentro de cada objeto de estado para comprobar si una transacción falló. El campo status también proporcionará detalles (p. ej., {"Err":...}).
Usar getSignatureStatuses es una forma eficiente de supervisar el estado de varias transacciones de Solana. Recuerda usar searchTransactionHistory: true para comprobar el estado de forma fiable.