Un análisis técnico explica por qué Monero abandonó el enfoque de las funciones hash fijas y llevó su prueba de trabajo hacia RandomX, un sistema que obliga a ejecutar programas aleatorios, usar más de 2 GiB de memoria y aprovechar rasgos típicos de una CPU moderna para reducir la ventaja del hardware especializado.
***
- RandomX usa una máquina virtual, programas aleatorios y 8 ejecuciones encadenadas para que minar Monero se parezca más a una carga de CPU real.
- El sistema combina una caché de 256 MiB, un dataset de cerca de 2.080 MiB y un scratchpad de 2 MiB para presionar tanto caché como DRAM.
- Monero busca con este diseño reducir la ventaja de los ASIC y mantener la verificación práctica mediante un modo rápido para mineros y otro ligero para verificadores.
Monero utiliza una prueba de trabajo llamada RandomX, un diseño que se aparta de forma clara de la lógica clásica de Bitcoin. En vez de pedir a los mineros que repitan una misma función hash millones de veces, el protocolo les exige ejecutar pequeños programas aleatorios dentro de una máquina virtual, mover memoria de forma intensiva y luego resumir el resultado en un hash final de 256 bits.
La idea de fondo es económica y técnica al mismo tiempo. Si una red depende de una tarea fija y repetitiva, como ocurre con SHA-256 en Bitcoin, los fabricantes de hardware tienen un objetivo evidente: construir chips especializados que hagan exactamente ese trabajo de la forma más barata y rápida posible. Monero quiso evitar esa trayectoria porque la asocia con mayor presión hacia la centralización minera.
Según explica el blog técnico de Alcazar Security, RandomX fue construido para que la minería eficiente se parezca lo más posible a una carga de trabajo normal de CPU. Eso significa que no solo importa la aritmética, sino también las cachés, el ancho de banda de memoria, el punto flotante, las ramas de ejecución y la capacidad de traducir código de manera dinámica.
En términos simples, la minería de Monero toma la cabecera de un bloque candidato y un nonce, suma además una clave de medio plazo derivada de un bloque anterior, construye con ello estructuras pesadas de memoria compartida y usa la entrada del bloque para sembrar una máquina virtual especial. Luego ejecuta 8 programas encadenados, mezcla el estado final y verifica si el hash resultante queda por debajo del objetivo de dificultad de la red.
Ese criterio de aceptación no es la novedad central, porque toda prueba de trabajo termina en una condición de sí o no. Lo importante es la forma en que Monero consigue que cada intento sea costoso en dimensiones donde las CPU comunes ya son fuertes y donde el hardware de función fija pierde buena parte de su atractivo.
Por qué Monero se apartó del hash simple
La motivación técnica detrás de RandomX parte de una crítica conocida en minería. Cuando la prueba de trabajo se reduce a aplicar una función fija a nuevas entradas, el incentivo industrial favorece la creación de ASIC. Eso fue exactamente lo que ocurrió con Bitcoin, donde el dominio de chips especializados redefinió la economía del minado.
Monero llevaba tiempo intentando otra ruta. Antes de RandomX, el proyecto utilizó la familia CryptoNight, que ya buscaba aumentar la importancia de la memoria. Sin embargo, a finales de 2019 la red migró a RandomX, descrito en sus notas de lanzamiento como una nueva prueba de trabajo basada en instrucciones aleatorias y adaptada a CPU.
Ese cambio de enfoque no fue menor. La meta dejó de ser solo hacer que la memoria pesara más en el cálculo. El nuevo objetivo pasó a ser que importara la CPU completa como sistema: sus unidades enteras, sus unidades de punto flotante, sus múltiples niveles de caché, su manejo de ramas, su ejecución fuera de orden y su interacción constante con la memoria principal.
En otras palabras, RandomX intenta convertir la minería en algo más cercano a ejecutar software real que a mantener una tubería de cálculo rígida. Cuanto más se parezca el trabajo a una carga general de cómputo, menor es el margen para que un ASIC elegantemente minimalista domine la red con una ventaja abrumadora.
Las dos entradas clave de RandomX
A nivel operativo, RandomX trabaja con dos entradas principales: una clave K y una entrada de hash H. En Monero, la clave K proviene del hash de un bloque anterior, conocido como bloque clave. Esa clave no cambia con cada nonce, sino en una escala más lenta.
La implementación de referencia recomienda renovar esa clave cada 2.048 bloques, con un retraso de 64 bloques, y así es como Monero la integra. El detalle es relevante porque las estructuras de memoria más pesadas no se reconstruyen para cada intento de minería. Solo se regeneran cuando cambia esa clave, aproximadamente cada 2,8 días.
La entrada H, en cambio, sí cambia de forma continua. Corresponde al blob de hash del bloque candidato junto con un nonce elegido por el minero. Dicho de otro modo, la red entrega un entorno de medio plazo mediante K, mientras que cada intento concreto de hallar un bloque nuevo modifica H una y otra vez.
Esta separación permite distinguir entre el costo de preparar el entorno y el costo de probar nonces. También ayuda a entender por qué RandomX no es simplemente un hash pesado, sino una combinación de memoria preconstruida, código aleatorio y ejecución reiterada dentro de una máquina virtual.
Cómo se construye la memoria: caché, dataset y scratchpad
El primer paso técnico consiste en tomar la clave K y pasarla por Argon2d. Esta función es conocida en el ámbito de las contraseñas y la derivación de claves por su carácter memory-hard, es decir, porque obliga al sistema a tocar mucha memoria de una forma difícil de esquivar con atajos de hardware.
Con los parámetros predeterminados de RandomX, este proceso genera una caché de 256 MiB. Esa no es todavía la estructura dominante en la minería, sino la base para fabricar una segunda estructura mucho mayor. Desde allí se expande el llamado dataset.
El dataset tiene un tamaño base de 2.147.483.648 bytes, más 33.554.368 bytes adicionales. En conjunto, suma cerca de 2.080 MiB, un poco más de 2 GiB. El tamaño no es casual. Fue elegido para desbordar la memoria integrada en chip y obligar el uso de DRAM, mientras que la porción extra que no es potencia de dos complica aún más la vida al diseñador de hardware especializado.
Durante el hash, ese dataset es de solo lectura. El documento de diseño citado por la fuente indica que cada iteración del programa lee un elemento del dataset de 64 bytes y que un hash completo acumula 16.384 lecturas del dataset. De ese modo, uno de los cuellos de botella de RandomX pasa a ser el acceso a memoria, no solo la aritmética pura.
Luego aparece una tercera estructura: el scratchpad. A partir de la entrada H, RandomX calcula Hash512(H) usando Blake2b. Ese resultado de 64 bytes siembra un generador basado en AES, que rellena el scratchpad, la memoria de trabajo de la máquina virtual.
Su tamaño predeterminado es de 2 MiB y está dividido para imitar niveles de caché de CPU: 16 KiB para L1, 256 KiB para L2 y 2 MiB para L3. Aquí está una de las claves del sistema: combinar un dataset muy grande, que presiona la DRAM, con un scratchpad pequeño, pensado para comportarse como código intensivo en caché.
La máquina virtual y los 8 programas encadenados
Con el scratchpad listo, RandomX genera un programa aleatorio para una máquina virtual propia. Cada instrucción mide 8 bytes y cualquier palabra de 8 bytes es una instrucción válida. Esa decisión simplifica la generación porque basta con llenar un búfer con bytes aleatorios, sin depender de un análisis sintáctico complejo.
Cada programa contiene 256 instrucciones. El repertorio busca parecerse al trabajo de una CPU real: aritmética entera, multiplicaciones de 64 bits, operaciones de punto flotante, instrucciones vectoriales de 128 bits, accesos a memoria y ramas ocasionales.
El punto flotante no es decorativo. RandomX emplea operaciones IEEE 754 de doble precisión, incluyendo división y raíz cuadrada, además de los cuatro modos estándar de redondeo. Con ello, el diseño evita quedar reducido a una lógica esencialmente entera, que sería más fácil de comprimir dentro de un circuito especializado.
La máquina virtual ejecuta ese programa de 256 instrucciones en un bucle de 2.048 iteraciones. En cada vuelta, lee y escribe en el scratchpad, hace prefetch y carga elementos del dataset, mezcla registros enteros y de punto flotante y, en ciertos casos, toma una rama.
La fuente indica que una iteración promedio lee alrededor de 504 bytes y escribe cerca de 256 bytes. Esa cifra ayuda a entender el espíritu del sistema. No se trata de un hash tradicional con algunas capas extra, sino de una carga desordenada y mixta, más próxima al comportamiento de software real.
Las ramas también tienen un papel preciso. Si el código fuera totalmente lineal, el hardware especializado podría simplificarlo mejor. En RandomX, una rama se toma con probabilidad aproximada de 1 entre 256 y suele ser predicha como no tomada. Así, el costo para una CPU es bajo la mayor parte del tiempo, pero sigue siendo un obstáculo para diseños demasiado rígidos.
Para dificultar aún más la selección oportunista de trabajos fáciles, RandomX encadena 8 programas. El estado de salida de uno se convierte en la semilla del siguiente. Eso impide que un minero conozca toda la secuencia por adelantado y descarte los casos inconvenientes sin haber pagado ya parte del costo computacional.
El hash final, el modo ligero y la lógica favorable a CPU
Tras completar el octavo programa, el sistema debe colapsar todo el estado de la máquina en un digest final. Para ello, primero toma una huella del scratchpad mediante un hash basado en AES y luego lo combina con el archivo de registros de la máquina virtual para ejecutar un hash final de 256 bits basado en Blake2b.
Ese resultado es el que el minero compara con el objetivo de dificultad de Monero. Si el hash está por debajo del umbral, el bloque es válido. Si no, el minero cambia el nonce y repite el proceso con una nueva entrada.
RandomX ofrece además dos modos operativos. El modo rápido usa el dataset completo de 2.080 MiB y está pensado para minería. El modo ligero utiliza solo la caché de 256 MiB y calcula los elementos del dataset sobre la marcha. Ambos producen la misma respuesta, pero no al mismo costo.
Esa división intenta mantener un equilibrio delicado. Verificar un bloque no debería exigir más de 2 GiB de memoria a cada nodo, pero tampoco debería existir un atajo de baja memoria que permita minar con ventaja. Por eso el modo ligero está diseñado para perder en el intercambio entre memoria y tiempo.
En el plano más amplio, el rasgo “favorable a CPU” de RandomX no significa que un ASIC sea imposible para siempre. La propia lógica del diseño no sostiene una afirmación tan absoluta. Lo que sí hace es volver mucho menos atractiva la especialización, porque un chip competitivo empezaría a parecerse más a una CPU extraña y costosa, conectada a mucha memoria, que a un motor hash limpio y compacto.
La implementación de referencia incluso incorpora compiladores JIT para x86-64, ARM64 y RISCV64, de manera que los programas de la máquina virtual puedan traducirse a código nativo en lugar de ser interpretados instrucción por instrucción. Eso refuerza el vínculo entre la prueba de trabajo y las fortalezas del hardware de propósito general.
El objetivo final de Monero, según el análisis técnico, no es la velocidad bruta, sino la economía del hardware. RandomX intenta mantener la minería más abierta al equipo común, reducir la ventaja de los ASIC de función fija, evitar que el consenso dependa de pocos proveedores y conservar una verificación razonablemente práctica.
Visto de la forma más simple, si la minería de Bitcoin puede resumirse como ejecutar una pequeña máquina fija sin descanso, la de Monero se parece más a generar cargas breves con sabor a CPU y sobrevivir a un flujo constante de memoria. Esa es la lógica que explica por qué RandomX luce tan poco convencional dentro del universo de las pruebas de trabajo.
ADVERTENCIA: DiarioBitcoin ofrece contenido informativo y educativo sobre diversos temas, incluyendo criptomonedas, IA, tecnología y regulaciones. No brindamos asesoramiento financiero. Las inversiones en criptoactivos son de alto riesgo y pueden no ser adecuadas para todos. Investigue, consulte a un experto y verifique la legislación aplicable antes de invertir. Podría perder todo su capital.
Suscríbete a nuestro boletín
Artículos Relacionados
Hyperscalers
Sam Altman y Greg Brockman ven cerca la AGI mientras la IA ya redefine economía y gobiernos
California
Musk buscó un acuerdo con OpenAI días antes del juicio y luego lanzó una dura advertencia
Empresas
DoorDash acelera la incorporación de comercios con nuevas herramientas de IA
Curiosidades