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.
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.,
confirmedofinalized). - 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
signatures(arraydestring): (Obligatorio) Un arreglo de firmas de transacciones codificadas en base 58. Puedes consultar hasta 256 firmas en una sola solicitud.options(object, opcional): Un objeto de configuración opcional con el siguiente campo:searchTransactionHistory(boolean, opcional): Si estrue, el nodo RPC buscará las firmas en todo su historial de transacciones. Si esfalse(el valor predeterminado), solo buscará en una caché de estados recientes. Para transacciones antiguas o que podrían haberse descartado, establece este valor entrue.
Estructura de la respuesta
El camporesult 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(arraydeobject|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. Esnullsi 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}]}) onullsi 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 sernullsi el estado no está disponible en la caché ysearchTransactionHistoryes false.
null: Si no se encuentra una firma en la caché de estados ysearchTransactionHistoryesfalse(o si realmente no existe ni siquiera al buscar en el historial).
- Un objeto con los siguientes campos si se encuentra la firma:
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 esfalse(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ánullcomo estado de esa firma. Establécelo siempre entruesi 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 valornullen el arreglovaluepara una firma determinada significa que no se encontró su estado. Esto podría deberse a que no está en la caché reciente (sisearchTransactionHistoryes false), a que la transacción nunca se incluyó o a que es demasiado antigua para el historial del nodo, incluso consearchTransactionHistory: true. confirmations: null: Esto suele significar que la transacción alcanzó el estadofinalized. 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
errdentro de cada objeto de estado para comprobar si una transacción falló. El campostatustambién proporcionará detalles (p. ej.,{"Err":...}).
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.