Cuando envías una transacción a la blockchain de Bitcoin, ¿a dónde va realmente? Las transacciones, cuando están en proceso, a menudo se denominan como que están "en la mempool" y podrás ver el familiar texto "Pendiente" en tu Metamask. La mempool sirve como puerta de entrada para las transacciones en la blockchain. Antes de que una transacción pueda registrarse en un bloque, primero debe pasar a través de la mempool.
En esta tutorial, aprenderás qué es la mempool de una blockchain, cómo funciona y cómo son diferentes en cadenas como Ethereum en comparación con Bitcoin, por ejemplo.
¿Qué es la mempool?
La mempool es una abreviatura de "Memory Pool", que se refiere a una transacción que está en la memoria de un nodo de blockchain pero aún no se ha comprometido con la blockchain en un bloque. Puedes pensar en la mempool como una sala de espera o una cola de transacciones antes de que cada una se incluya en la blockchain. Una transacción en la mempool espera que un nodo tome la transacción y la incluya en un bloque.
El término originalmente provenía del ecosistema de Bitcoin, y diferentes nodos de blockchain tienen diferentes nombres para ella.
- Ethereum , a través de OpenEthereum , la llama la cola de transacciones.
- Ethereum , a través de Geth , la llama la txpool .
- Bitcoin la llama la Mempool .
En el entorno de Bitcoin, una transacción en la mempool espera que un nodo extraiga un bloque con la transacción incluida. En Ethereum, una transacción en la mempool espera que un nodo la valide y la incluya en un bloque.
¿Cómo llegan las transacciones a la Mempool?
Así es como las transacciones entran en una mempool de blockchain, se sincronizan, verifican, validan y propagan a través del nodo de blockchain:
- Inicialmente, un usuario inicia una transacción desde una Dapp o Wallet. Esto podría ser enviar fondos a otra cuenta o contrato.
- El usuario luego firma la transacción utilizando su Wallet.
- El Wallet reenvía la transacción firmada a un nodo o proveedor de RPC, como Alchemy o Pocket, para su inclusión en la red de blockchain.
- Este nodo verifica la validez de la transacción y la agrega a su mempool.
- Como el nodo es parte de un grupo de pares, transmite la transacción a otros nodos.
- Estos nodos pares reciben, validan y agregan la transacción a su mempool. Luego la transmiten a más pares, extendiendo la transacción a través de la red.
- Los mineros o validadores, un tipo de nodo específico, también reciben la transacción de los pares. La validan e intentan agregarla a un bloque.
- Finalmente, un minero o validador exitoso incluye un bloque con la transacción en la cadena.
- Este nuevo bloque luego se transmite a través de la red.
- A medida que todos los nodos reciben el nuevo bloque de sus pares, ven la transacción incluida y la eliminan de su mempool.
Hay tantas mempools como nodos.
La llamamos "Memory Pool" porque la transacción existe en la memoria del nodo. Técnicamente, cada nodo en una blockchain tiene su memory pool. La mempool de un solo nodo es esencialmente solo una lista de transacciones pendientes.
A menudo, cuando la gente se refiere a la mempool, se refiere a todas las mempools en todos los nodos; explicaremos por qué más adelante.
En la práctica, al referirnos a la mempool de la blockchain, nos referimos a todas las transacciones pendientes en cualquier nodo del ecosistema de la blockchain. Esto se debe a que, la mayoría de las veces, los nodos con transacciones en su mempool envían esas transacciones en cola a otros nodos, esperando que uno de esos otros nodos sea seleccionado para construir un bloque y pueda incluir la transacción.
Cuando envías una transacción a un nodo a través de Metamask, Trezor o cualquier billetera, envías esa transacción a un solo nodo. Si abres tu Metamask o billetera de navegador, verás una API (URL) que apunta a un solo nodo. Ese nodo es el único nodo al que envías tu transacción, que lo tendrá en su mempool.
Un nodo no tiene que distribuir su lista de transacciones pendientes a otros nodos, pero a menudo lo hacen para aumentar la probabilidad de que la transacción se incluya. La minería o validación de bloques puede llevar mucho tiempo, lo que requiere potencia de cálculo o que un nodo sea seleccionado como el constructor del bloque. Entonces, si un nodo nunca envía su lista de transacciones pendientes a otros nodos, ¡esa transacción podría tardar mucho en incluirse!
Si el nodo ETH A tiene la transacción T y no la envían a ningún otro nodo, ¡el nodo ETH A tendría que esperar hasta que ellos sean el constructor del bloque para incluir la transacción! Si miras alguno de los nodos en la cadena de balizas, notarás que pueden pasar meses antes de que un nodo sea seleccionado para ser el constructor del bloque. Imagínate tener que esperar unos meses para que se procese tu transacción. Esta es la razón por la que la mayoría de los nodos comparten su mempool (lista de transacciones en cola) con otros nodos, para aumentar la probabilidad de que las transacciones se coloquen en un bloque.
MEV y mempools privadas de blockchain
En base a la afirmación anterior, podrías pensar que la mayoría de los nodos de blockchain siempre deberían compartir su lista de transacciones, y en su mayor parte, tendrías razón. Sin embargo, si tu transacción lleva información confidencial, ¡es posible que no quieras hacerlo!
Si compartes los datos en tu mempool, ¡les estás dando a otros nodos una señal de alerta sobre qué transacción quieres enviar! Esto puede brindar a otros nodos o usuarios maliciosos información que pueden usar en tu contra y robar fondos, acceso u otras cosas desagradables. Un nodo que "construye" un bloque puede ver las transacciones entrantes y usar esta información para su beneficio.
Este proceso de usar la información y ordenar las transacciones para obtener un beneficio monetario se conoce como MEV o "Maximal Extractable Value", anteriormente conocido como "Miner Extractable Value". La buena noticia es que hay una solución: los usuarios pueden enviar transacciones "secretas" a la blockchain utilizando algo llamado mempools privadas de blockchain.
Antes de entrar en las mempools privadas y cómo nos ayudan a proteger nuestros activos, veamos rápidamente un método popular de MEV llamado "front running".
Valor extraíble máximo: Front running
Este contrato inteligente tiene una función llamada withdraw, donde si un usuario ingresa la contraseña correcta, el contrato inteligente decodificará la contraseña y enviará el saldo del contrato a quien haya ingresado la contraseña. La contraseña se almacena en forma de hash en la cadena a través de la variable de almacenamiento s_secretHash y sería muy difícil de descifrar si no tuvieras la contraseña.
La idea detrás de este contrato es que quienquiera que se le diga la contraseña recibirá los fondos. Sin embargo, MEV hace que un nodo malicioso o un constructor de bloques pueda ser quien tome los fondos en su lugar.
Un nodo malicioso o un "MEV Bot" podría ver a alguien llamando a withdraw con la contraseña correcta en la mempool, copiar la transacción exacta y ordenar que su transacción pase primero. Usan la información obtenida al leer desde la mempool para robar los fondos del contrato FrontRan.
Si buscas en Solodit "MEV" o "Front Running", vemos este vector de ataque todo el tiempo, y es una consideración que todo desarrollador de protocolos necesita tener en cuenta al construir protocolos.
Puedes ver ejemplos minimizados de MEV en el repositorio sc-exploits-minimized del plan de estudios de seguridad y auditoría de Cyfrin Updraft.
¿Qué es una mempool privada de blockchain?
Las mempools privadas de blockchain envían nuestra transacción a un pequeño grupo de nodos que prometen no mirar los detalles de la transacción y afectar el orden de la transacción.
La ventaja de utilizar un servicio como este es que no tendrás que lidiar con MEV. La desventaja es que tienes que confiar en que los nodos no van a hacer MEV, y puede que tu transacción tarde más en incluirse porque hay menos nodos que intentan incluir la transacción en un bloque.
Hay algunas formas de enviar una transacción sin que llegue a la mempool, utilizando un servicio como:
- Flashbots
- Bloxroute
- MEV-Boost
- Eden Network
Ventajas y desventajas de usar mempools privadas
Beneficios de usar una mempool privada de blockchain
- Mayor privacidad : las mempools privadas de blockchain no exponen ampliamente los detalles de tu transacción, lo que proporciona mayor privacidad para tus transacciones.
- Riesgo reducido de ataques MEV : al mantener los detalles de tu transacción privados, el riesgo de ataques MEV (Maximal Extractable Value) se reduce significativamente.
- Mejor control sobre el orden de las transacciones : las mempools privadas brindan un mejor control sobre el orden en que se procesan las transacciones.
Desventajas de usar mempools privadas
- Seguridad sobre velocidad : a pesar de las posibles demoras en la confirmación de la transacción debido a que hay menos nodos involucrados en el proceso, la seguridad y privacidad mejoradas que brindan las mempools privadas a menudo superan esta pequeña molestia.
Resumen: ¿Qué es una mempool de blockchain?
La mempool es una cola pendiente de transacciones que esperan ser incluidas en un bloque en una blockchain. Es importante porque cada nodo a menudo compartirá su lista de transacciones pendientes con otros nodos, lo que puede dar lugar a ataques MEV (Maximal Extractable Value).
Si quieres conocer otros artículos parecidos a La memory pool de bitcoin para principiantes puedes visitar la categoría Finanzas / Inversiones.
