Saltar al contenido
0%

¿Qué es un Mempool?

Alchemy team headshot

Escrito por Alchemy

Publicado el 7 de abril de 20224 min de lectura

En una transacción de blockchain, un mempool, o pool de memoria, es una lista de transacciones pendientes que esperan la validación de un nodo antes de ser confirmadas en un bloque de la blockchain. Esto es similar al uso de entornos de "Staging" en el desarrollo de software tradicional para realizar pruebas y control de calidad antes de pasar a producción.

Mientras que los entornos de "Staging" tradicionales son centralizados, cada nodo tiene su propio mempool que administrar. Veamos el flujo de una transacción para entender el propósito del mempool y cómo, al acceder a él, podemos obtener información importante:

Flujo de transacciones en Ethereum

Las transacciones de Ethereum se dividen en 3 categorías:

1) Transferencia simple: se envía valor de una dirección pública a otra dirección. Puede ser el pago de un NFT o de un servicio.

2) Despliegue de un smart contract: cada vez que se despliega un smart contract en la blockchain, se genera una transacción.

3) Ejecución de un smart contract: cuando una dirección desea enviar fondos o datos a la dirección de un smart contract.

Puedes monitorear transacciones de Ethereum usando la herramienta de monitoreo de Alchemy, y encontrar el historial de transacciones de una dirección determinada usando herramientas como la Transfers API de Alchemy.

Todos los tipos de transacción de Ethereum siguen el mismo ciclo de vida:

1) Un usuario crea una transacción y la firma con su clave privada.

2) Un nodo recibe la transacción y la almacena en el mempool.

3) Mientras está en el mempool, el nodo realiza pruebas de validación de la transacción. Si la transacción pasa esas pruebas, su estado cambia a "Pending" (pendiente).

4) El nodo propaga la transacción pendiente a todos los demás nodos de la red para que la agreguen a sus propios mempools.

5) Cuando se crea un nuevo bloque, un constructor de bloques incluirá las transacciones con los precios de gas más altos. Esto hace que la transacción pase a un estado "Successful" (exitosa).

6) La transacción recibirá confirmaciones a medida que el nodo agregue cada nuevo bloque después de aquel en el que fue incluida. Esto brinda la certeza de que la transacción se agregó de forma permanente a la blockchain, ya que el riesgo de reorganización de bloques disminuye con el tiempo.

Diagrama del ciclo de vida de una transacción de Ethereum, desde la firma hasta la confirmación pasando por el mempool
Flujo de transacciones de Ethereum

Puedes aprender más sobre el envío de transacciones y enviar la tuya aquí.

Propósito de un mempool

Dado que las blockchains son inmutables, es importante que las transacciones que se incorporan a la blockchain sean válidas y no contengan errores. El nodo que aloja el mempool cumple un rol importante en la validación de cada transacción antes de iniciar el proceso para confirmarla en la blockchain.

Para los desarrolladores, es importante entender las pruebas de validación para comprender por qué las transacciones pueden fallar o quedar atascadas en estado "Pending":

1. Disponibilidad de fondos

El nodo valida si la dirección remitente cuenta con fondos suficientes para cubrir tanto el monto enviado como el gas necesario para completar la transacción. Si esta validación falla, la transacción se elimina del mempool. Es importante usar los parámetros correctos de envío y la dirección de destino para asegurarse de pasar esta validación.

2. Validez de las firmas de la transacción

Cada transacción debe estar firmada por la dirección del remitente. Esto sirve para identificar que el remitente es efectivamente el propietario de la dirección. El nodo valida que la firma adjunta corresponda correctamente a la dirección del remitente.

Diagrama de un nodo validando la firma de una transacción contra la dirección del remitente
Validez de las firmas de transacciones [Fuente]

3. Valor de nonce correcto

El valor de nonce es la cantidad de transacciones que se han enviado desde la dirección del remitente. Cada vez que el remitente envía una nueva transacción, el valor de nonce aumenta en 1. El valor de nonce es importante porque obliga a que cada transacción de una dirección determinada ocurra en el orden en que fue enviada.

Diagrama de un nodo validando el valor de nonce de una transacción
Validación del valor de Nonce por parte del nodo

Al no permitir que los valores de nonce de las transacciones se dupliquen o se salteen, se evita el problema del doble gasto o el gasto excesivo de los fondos disponibles. El nodo valida que el valor de nonce correcto esté adjunto a la transacción pendiente. Si esta prueba falla, la transacción no avanza.

4. Precio del gas

Según el mempool, existe un límite de cuántas transacciones pueden estar en el mempool a la vez. Geth, el popular cliente de Ethereum, tiene un límite predeterminado de 4096 transacciones pendientes (pending) y 1024 en cola (queued). Cuando se alcanza este límite, las transacciones con los precios de gas más bajos se eliminan del pool para administrar el espacio.

Acceder a un mempool

Una ventaja importante de la estructura del mempool es que las transacciones de reemplazo pueden sobrescribir transacciones pendientes para corregirlas, acelerarlas o cancelarlas por completo.

Además de corregir transacciones pendientes atascadas en un mempool, acceder a un mempool puede ser útil en otros casos, como:

1. Estimar tarifas de gas

Observar la lista actual de transacciones pendientes y sus tarifas asociadas puede ayudar a evitar pagar tarifas de más.

2. Minería de NFT

Usando un escáner de mempool, los usuarios pueden obtener información sobre transacciones pendientes que interactúan con contratos de NFT y superar la oferta de esas transacciones con tarifas de gas más altas.

3. Información sobre rendimiento

Usando servicios como la Notify API, los desarrolladores de smart contracts pueden obtener información sobre la actividad de sus smart contracts a partir del mempool. Las transacciones pendientes pueden brindar información sobre errores y vulnerabilidades de un smart contract.

Conclusión

Un mempool cumple un rol importante en el funcionamiento y la salud de una blockchain. Permitir que los nodos validen transacciones y que los mineros prioricen las transacciones pendientes según las tarifas de gas es una parte esencial del flujo de transacciones.

Los desarrolladores también pueden usar los datos que provee un mempool para reducir costos y problemas en sus smart contracts. A los mempools frecuentemente se los describe como "bosques oscuros" de una blockchain, pero plataformas como las herramientas de Alchemy Monitoring permiten a los usuarios obtener mayor claridad en este paso crítico.

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.