Ir al contenido principal

Explicación de las transacciones pendientes y en cola

Actualizado el
26 de noviembre de 2025

5 minutos de lectura

Resumen

La red Ethereum procesa más de un millón de transacciones al día. Estas transacciones provienen de usuarios que desean transferir Ether o interactuar con contratos inteligentes. En esta guía, te explicaremos los estados «Pending» y «Queued» de las transacciones en la red Ethereum. También te mostraremos cómo solicitar datos mediante programación con Python y Web3.py, utilizando nuestros prácticos puntos de conexión de Quicknode como infraestructura para comunicarnos con la red Ethereum.

Lo que vamos a hacer:

  • Definición de «transacciones pendientes» y «transacciones en cola»
  • Configurar un nodo de Ethereum con Quicknode
  • Escribe código en Python para recuperar los datos de las transacciones pendientes y en cola.

Lo que necesitarás:

Diferencia entre transacciones pendientes y en cola

Una transacción en Ethereum consta de diferentes componentes, como una firma criptográfica (derivada de la clave privada del remitente), un conjunto de instrucciones, un nodo al que se va a transmitir y una comisión que se destinará a un minero. Una vez que la transacción se transmite a la red, puede pasar a dos estados diferentes en función del valor utilizado en el campo «nonce» de la transacción. Los estados se clasifican en las siguientes categorías:

Pendiente: transacciones que pueden procesarse e incluirse en el siguiente bloque.
En cola: transacciones fuera de secuencia que no pueden incluirse en el siguiente bloque.

Una transacción debe incluir un nonce. El valor del nonce en una transacción lo establece el remitente y permite ordenar las transacciones, al tiempo que evita los ataques de repetición. Todas las transacciones enviadas desde una cuenta deben seguir su secuencia de nonces para pasar al estado de transacción pendiente.

Por ejemplo, supongamos que una cuenta envía su primera transacción y tiene el nonce establecido en 0. La segunda transacción enviada desde esa cuenta debería contener un valor de nonce igual a 1. Se espera que la tercera transacción enviada tenga un valor de nonce igual a 2, y así sucesivamente, incrementándose en uno con cada transacción. En un caso en el que se hayan enviado varias transacciones y la primera (es decir, nonce = 0) siga pendiente, las transacciones restantes de la cuenta remitente (con nonce igual a uno o superior) permanecerían en cola hasta que se haya procesado la primera transacción.

Por otra parte, si una cuenta envía accidentalmente una transacción con un nonce fuera de secuencia, dicha transacción permanecería en la cola hasta que se sustituyera por una con el nonce correcto o hasta que se enviara y procesara primero otra transacción con el nonce o nonces que faltan.

Hay dos razones por las que una transacción puede encontrarse en estado de cola:

  1. Es posible que haya alguna transacción pendiente que deba procesarse primero.
  2. La transacción se ha enviado con un nonce fuera de secuencia.

Ahora que ya tenemos una visión teórica de las transacciones y sus diferentes estados, vamos a mostrar cómo visualizarlas mediante programación con Web3.py y Python.

Configura tu punto de conexión de Ethereum en Quicknode

Para mostrar cómo ver las transacciones pendientes y en cola, podemos utilizar un cliente de Ethereum como Geth u OpenEthereum (antes conocido como Parity). Dado que esto puede resultar demasiado complicado solo para ver transacciones, utilizaremos un punto de acceso gratuito de Quicknode para facilitar el proceso. Para obtener un nodo de Ethereum gratuito, ¡visita Quicknode y regístrate! Una vez que hayas creado tu punto de acceso gratuito de Ethereum, copia el punto de acceso de tu proveedor HTTP:

Captura de pantalla del punto de conexión de Quicknode para Ethereum

Recuperación de transacciones pendientes y en cola

Ahora que ya tenemos listo nuestro nodo de Ethereum, podemos empezar a escribir código para recuperar datos de la cadena de bloques de Ethereum.

En primer lugar, abriremos el terminal y ejecutaremos el siguiente comando para crear un nuevo directorio de proyecto y acceder a él:

A continuación, crea un archivo Python vacío ejecutando el siguiente comando:

A continuación, instala las dependencias necesarias para ejecutar nuestro proyecto de Python:

Ahora que ya tenemos nuestro proyecto configurado, abre el archivo main.py y añade el código siguiente:

de web3 import Web3, HTTPProvider

provider_url = "TU_URL_DEL_NODO_DE_QUICKNODE"
proveedor = Web3.HTTPProvider(provider_url)

txpool_data = proveedor.make_request('txpool_content', [])
primera_dirección_en_cola = lista(txpool_data['resultado']['en cola'].claves())[0]
primera_transacción_en_cola = txpool_data['resultado']['en cola'][primera_dirección_en_cola]
imprimir("Transacción en cola: ", [i para i en primera_transacción_en_cola.elementos()])

Ten en cuenta que puedes sustituir todas las apariciones de la palabra «en cola» por «pendientes» para ver, en su lugar, las transacciones pendientes.

Una breve explicación del código anterior:

Línea 1: Importar dependencias
Línea 3: Almacenar la URL de nuestro punto final de Quicknode en una variable llamada provider_url.
Línea 4:
Crear un objeto Web3 HTTProvider utilizando nuestra variable provider_url.
Línea 6: Realizamos una llamada al método RPC txpool_content utilizando nuestro proveedor.
Línea 8: Declaramos una variable first_queued_address que almacenará la primera dirección de remitente del array de transacciones en cola.
Línea 9: Almacenamos el primer objeto de transacción del array de transacciones en cola en una variable llamada first_queued_transaction.
Línea 11:
Utilizamos la comprensión de listas y sentencias de impresión para visualizar el primer objeto de transacción del array de transacciones en cola.

El punto final RPC «Txpool_content», utilizado en el script de Python anterior, nos permite recuperar transacciones en cola y pendientes de la red principal de Ethereum. Aquí se puede encontrar información adicional sobre el punto final al que solicitamos datos:

Guarda el archivo y vuelve a la terminal para ejecutar el siguiente comando:

python3 main.py 

Una vez finalizada la ejecución del código, aparecerán instrucciones de impresión que muestran las transacciones en cola. Nuestro código limita la visualización de las transacciones en cola a un solo registro en cada matriz, ya que mostrarlas todas puede suponer un esfuerzo computacional adicional:

Registros que contienen datos de transacciones en cola

Para comprobar que una transacción está en cola, puedes copiar el hash de la transacción del campo «hash» que aparece más arriba y buscarlo en Etherscan:

Buscar el hash de una transacción en Etherscan

Los datos de la transacción obtenidos mediante nuestro script de Python coinciden con los que se muestran en Etherscan. Podemos clasificar esta transacción como una transacción de contrato inteligente, ya que el destinatario de la transacción es una dirección de contrato inteligente y el campo de datos se utiliza para llamar a la función «approve» del contrato. Obsérvese que la transacción tiene un nonce de 9; conviene tener en cuenta esta información para el siguiente paso.

Consultar los detalles de la transacción del pedido en cola

Para averiguar por qué la transacción anterior está en cola, podemos comprobar la actividad de transacciones de la dirección de origen. Si el remitente no tiene otras transacciones pendientes, lo más probable es que el estado de cola se deba a un nonce incorrecto. Si el remitente tiene transacciones pendientes, es probable que la transacción esté en cola debido a que hay otras transacciones pendientes que deben procesarse primero.

Para averiguar por qué la transacción anterior está en cola, podemos comprobar la actividad de transacciones de la dirección de origen. Si el remitente no tiene otras transacciones pendientes, lo más probable es que el estado de cola se deba a un nonce incorrecto. Si el remitente tiene transacciones pendientes, es probable que la transacción esté en cola debido a que hay otras transacciones pendientes que deben procesarse primero.

Tras un análisis más detallado, podemos concluir que la transacción se encuentra en cola porque aún hay pendiente otra transacción de la misma cuenta con un nonce inferior. Una vez que se procese la transacción con nonce ocho, la siguiente transacción en cola (es decir, la de nonce nueve) pasará a estado pendiente. 

Conclusión

Ahora ya sabes cómo distinguir entre las transacciones pendientes y las que están en cola en Ethereum. Además, también hemos mostrado cómo consultar las transacciones pendientes y las que están en cola utilizando Python con Web3.py.

Suscríbete a nuestro boletín para recibir más artículos y guías sobre Ethereum. No dudes en ponerte en contacto con nosotros a través de Twitter si tienes algún comentario. Siempre puedes charlar con nosotros en nuestro servidor de la comunidad de Discord, donde encontrarás a algunos de los desarrolladores más geniales que jamás hayas conocido :)

Comparte esta guía