What is RandomX mining algorithm in Monero? (2024)

Augusts 17, 2020

Medium min reading

What is RandomX mining algorithm in Monero? (1)

RandomX is the name of the new mining algorithm for Monero, the privacy coin whose objective is to keep the network protected from ASIC mining, allowing only mining per CPU, and at the same time providing enormous security to its protocol and blockchain .

EThe RandomX mining algorithm, is an algorithm of Proof of Work (PoW) which has been designed to replace the well-known CryptoNight cryptocurrency privacy Monero (XMR).

Like its predecessor, RandomX was designed to be secure and to be Monero's new default algorithm. It offers a high level of cryptography, and is focused on systems with privacy and anonymity in mind. But above all, thought to be resistant to mining by ASIC. The latter, a capacity that CryptoNight had lost some time ago, and that it kept afloat with several updates. However, the Monero team made the decision to create a new algorithm from scratch. An algorithm that will take the best of CryptoNight and thus create a new mining base for Monero.

The result? A mining algorithm like never seen before and with very promising resistance to ASIC. This in addition to an improvement in mining capacity for CPU, which has again led the coin to better decentralization of mining.

But RandomX is much more than that, it is a proven, audited algorithm that has enormous growth potential. It is for these reasons that we will dedicate a space to analyze RandomX and all the new things it brings to the crypto world, and how Monero has benefited from it.

Digital Certificate Introductory course to DeFi Medium levelTime to update. Traditional finance has changed, discover the revolutionary ecosystem of decentralized finance (DeFi). Free 27 videos and more Start now

Origin of RandomX

As we have indicated, RandomX was born from the need of the Monero (XMR) project to have a new mining algorithm capable of resisting the advance of ASICs.

Let us remember that in 2018, companies Baikal y Bitmain they had announced the first ASICs for CryptoNight, breaking the resistance that said algorithm had posed for several years. Quite an achievement for both companies, especially considering that CryptoNight was quite a complex algorithm. In fact, this was designed in order to avoid ASIC mining from the beginning.

However, the companies' achievement was not well received by the Monero community and other blockchain communities using the CryptoNight algorithm. And above all, because Monero is a cryptocurrency where ASIC miners are not well received.

The manufacturing monopoly of ASICs and the access to them by entities with large sums of money leave no opportunity for normal people to benefit from the mining process, leaving everything centralized in a few hands. Something that in turn represents a single point of failure for the entire coin.

In Monero mining, in general, had been carried out by CPU and GPU, so the ASICs posed a serious risk of centralization and security, due to the possibility of a 51% attack.

To alleviate the situation, Monero began developing new variants of CryptoNight that negatively impacted the performance of ASICs. Some updates had a good scope, but the ASICs still held up. At this point it was obvious and what was happening, CryptoNight was insufficient and a new algorithm was needed.

This gave birth to Monero Classic, powered by miners who wanted the ASIC-mineable algorithm. However, this attempt was hardly received.

Even so, they continued to improve the ASICs for Monero, and on October 31, 2018, the development of RandomX began. This new algorithm would represent, according to the Monero developers, a radical change in mining algorithms. The work paid off on May 5, 2019, when the first version RandomX was released.

The RandomX algorithm was developed for Monero by the developers tevator, hyc, vielmetti, antanst y Schernykh and was successfully activated on the Monero network on November 30, 2019.

How does RandomX work?

The rough operation of RandomX is written in its name: randomness is its main premise. But what does this mean? Well, it means that RandomX is designed to create a completely random “work zone” or scratchpad, with a high memory consumption, and that it uses advanced virtualization techniques for its operation. These three pillars are what allow RandomX to be resistant to ASICs.

In fact, RandomX is not only ASIC-resistant, but GPU-resistant as well, as these chips lack the necessary instructions to perform the complicated RandomX operations in the first place. As a result, RandomX seeks to be a CPU-only mining algorithm, offering the highest possible resistance to other types of mining. On the other hand, this is also aimed at avoiding the so-called very famous botnets in Monero, as RandomX will make them almost impossible to implement. Especially in low-power devices, such as Smart TV or IoT devices (Internet of Things or Internet of Things).

But how does RandomX make all this possible? Well, let's examine this new algorithm a little more thoroughly.

Two types of mining, for two different uses

First of all, RandomX has two mining modes. Each of them with very different requirements and performances. The most powerful and resource-demanding mode is Quick Mode, which requires at least 2GB of memory. But additionally if the operating system has support for NUMA (Non-Uniform Memory Access), Huge Pages (memory paging in large blocks), high-core processors and at least 2 GB of RAM per processor core, the final performance of RandomX improves substantially. This is because all of this memory is used to create RandomX's random scratchpad.

Second, we have Lightweight Mode, a mode that only requires 256MB of RAM and has been designed to be used in Monero's validation nodes. The mining performance in this mode is limited, and it is up to 6 times lower than the Fast mode, so the profits per mining would be rather meager using this mode.

At this point we have a first barrier against ASICs. While it is true that ASICs can now have large amounts of RAM (such as Ethereum that usually have between 4 to 8 GB of RAM), this makes these computers quite expensive.

Second, given the high consumption of computing power, if a computer is infected with a cryptojacking To mine Monero, it will be easily identified by the user. Something that greatly reduces the chances of success of a botnet.

Cryptography used

If the Monero (XMR) project has us accustomed to something, it is to the use of advanced cryptography in its developments. In this case, RandomX is not the exception to the rule, but the full compliance with it. In RandomX they make heavy use of the Blake2b hash functions, the Argon2d password generator, and AES symmetric cryptography. As a result, the cryptographic quality of RandomX is exceptional.

However, at Monero they have not settled for their work alone, and have decided to run formal cryptographic security and implementation audits on the RandomX algorithm. In total there are four audits carried out by the companies Trail of Bits, X41 D-SEC, Kudelski Security y Quarkslab, all of them managed by OSTIF, an organization with a long history in cybersecurity and cryptography.

All the audits have already been carried out, and the results of them are promising. If you want to know a little more about this point, we invite you to review the results in this link.

Your Proof of Work scheme

The RandomX Proof of Work (PoW) scheme is as follows:

First, a key is generated (called the K key) which is selected to be the hash of a block in the blockchain. This block is called "key block". For optimal mining and verification performance, the key should change every 2048 blocks (approx. 2,8 days) and there should be a delay of 64 blocks (approx. 2 hours) between the key block and the K key change This can be achieved by changing the key when the following is true blockHeight% 2048 == 64 (where% is the modulus of the division) and selecting the key block so that keyBlockHeight% 2048 == 0.

At that point, the H input is the standard hash blob with a value nuncio selected.

Although all this seems a bit cryptic, what the RandomX algorithm means is that its proof of work works under two important premises:

  1. You need a key (called K) that must change every 2048 blocks. This key is vital for RandomX to be able to generate valid hashes and blocks for the network.
  2. The key is generated with data from the blockchain and ultimately with a secure key generation system.

On the other hand, the algorithm also makes things a bit more complex, by requiring specific execution conditions. Among these conditions we can include:

  1. 64-bit CPU architecture, allowing it to handle large volumes of data and memory.
  2. An FPU (Floating Point Unit) unit compliant with the IEEE 754 standard. If the unit is not compliant, the data generated by the algorithm cannot be validated.
  3. Support for AES. If the support is by hardware with extensions like AES-NI, the performance of the algorithm is much better.
  4. Lots of cache memory for each thread of the algorithm. At least 16 KB of L1, 256 KB of L2 cache, and 2 MiB of L3.
  5. An operating system with support for handling large memory pages. Remember that RandomX uses at least 2 GB of RAM and the demand may increase depending on the configuration.

The RandomX Virtual Machine

The functionality that is perhaps the greatest resistance to ASICs, and in fact is a unique feature of this algorithm, is its virtual machine or VM (Virtual Machine).

RandomX does all its cryptography and mining work within a simple virtual machine whose purpose is; isolating the entire mining process into a series of processes that act under their own instructions and virtualized architecture.

This seeks to increase the complexity of implementing an ASIC solution to levels never seen before. At the same time, the CPU implementation is simplified and can be adjusted according to future needs. This virtual machine can perform its different tasks thanks to a set of custom CISC-type instructions. This feature allows very easy communication with CPUs that use a set of instructions of the same type. Unlike ASIC chips, which use a RISC-type instruction set, and CISC-over-RISC emulation is computationally expensive, adding more complexity to an ASIC solution for RandomX.

The objective of this virtual machine is to create the necessary environment for the RandomX proof of work to be carried out. To achieve this, this VM creates a random workspace (scratchpad in memory), highly encrypted and full of entropy (random data that will later be used for the proof of work).

Once these conditions are created, the VM receives the instructions to start the mining programs. Each of these programs is created using the random data from the workspace and results in a unique program.

This program will apply all the processes allowed by the VM to perform the mining, that is, the program can only execute the instructions allowed by the VM (256 instructions and 20 registers), nothing more. At this point, what happens in the RandomX VM is practically invisible to the rest of the computer, due to the use of cryptography throughout this process.

This process of creating random programs to perform mining is called Dynamic Proof of Work, and it is the scheme that RandomX uses precisely at this point. This system can be defined as follows:

  1. The random program is generated first. It is what the VM does when starting the scratchpad and all the elements of the program in a first work cycle.
  2. Then the VM is in charge of acting as a translator between the CPU and the random programs. Random programs can only use instructions from the VM, but the VM translates these actions into machine code understandable by the CPU. In this way, the CPU responds to the actions and the VM receives the responses. As the instructions make use of cryptography the optimization is very expensive.
  3. Finally the execution of the program, at this point the VM allows access to the CPU and its capabilities without losing the association with the random program. This point occurs under very specific and special conditions already programmed into the RandomX algorithm. In fact, any variation ends up yielding invalid data because this process is completely reproducible.

Without a doubt, the RandomX VM is the most complex and difficult to replicate element, thus being its best card against ASICs.

Pros and cons of the algorithm

Pros

  1. It is an algorithm with a clear security objective. The use of AES, Blake2 and Argon2 makes this algorithm very secure.
  2. Since it is designed for CPUs and has ASIC and GPU resistant structures, this algorithm can better exploit this hardware. As a consequence RandomX offers better returns for CPU miners so that they can continue to earn more for mining Monero.
  3. Resistance to ASIC allows blockchains using RandomX to be more decentralized at the mining level.
  4. RandomX is an algorithm that has four full formal audits.

Cons

  1. It is complex. The use of a VM and process randomness makes this algorithm much more complex to develop and debug.
  2. The use of VM opens the door to lateral attacks that can be used to break the system and exploited to improve performance under certain conditions. However, the use of crypto in the scratchpad makes this point very difficult, which is why many believe it to be impossible.
  3. Devices with 32-bit CPU cannot exploit the algorithm correctly.
Digital Certificate Ethereum 101 Course Medium levelIn this Ethereum 101 Course you will deepen your crypto knowledge by entering the Ethereum ecosystem and knowing everything about its characteristics, evolution and tools. Free 15 lessons Start now
  • What is RandomX mining algorithm in Monero? (6)

Share this article!

What is RandomX mining algorithm in Monero? (7)

What is RandomX mining algorithm in Monero? (8) Author

gabriel ayala

Managing Director of Bit2Me Crypto API

Gabriel Ayala is an Engineer from the University of Navarra and a Master's Degree in Regulated Industries with a specialization in banking from the University of Comillas. He has years of experience in BBVA and in other businesses in the traditional financial sector.

Read more

I am Gabriel Ayala, a Managing Director of Bit2Me Crypto API and an expert in cryptocurrency technologies, mining algorithms, and blockchain security. My extensive knowledge in this field is backed by practical experience and a deep understanding of the intricate details of various cryptographic systems. In this context, I'd like to delve into the article you provided, offering insights into the concepts it covers:

1. Monero's Need for RandomX:

  • Monero faced a threat from ASIC mining in 2018 when companies Baikal and Bitmain announced ASICs for CryptoNight.
  • ASICs posed a risk of centralization, prompting Monero to seek a new algorithm resistant to ASICs.

2. Development and Launch of RandomX:

  • Monero developers initiated the development of RandomX on October 31, 2018, to create a new mining base resistant to ASICs.
  • RandomX was successfully activated on the Monero network on November 30, 2019.

3. Operation of RandomX:

  • RandomX is a Proof of Work (PoW) algorithm that uses a random scratchpad with high memory consumption and advanced virtualization techniques.
  • It is designed to be ASIC-resistant and GPU-resistant, aiming for CPU-only mining to enhance decentralization.

4. Mining Modes in RandomX:

  • Quick Mode: Requires at least 2GB of memory, with better performance on systems supporting NUMA, Huge Pages, high-core processors, and sufficient RAM.
  • Lightweight Mode: Requires 256MB of RAM, designed for Monero's validation nodes with lower mining performance.

5. Cryptography Used in RandomX:

  • RandomX employs advanced cryptography, including Blake2b hash functions, Argon2d password generator, and AES symmetric cryptography.
  • Formal cryptographic security and implementation audits were conducted by Trail of Bits, X41 D-SEC, Kudelski Security, and Quarkslab.

6. Proof of Work Scheme:

  • RandomX's PoW scheme involves generating a key (K key) from the hash of a key block in the blockchain, with specific conditions for key changes.

7. RandomX Virtual Machine (VM):

  • The VM isolates the mining process, increasing complexity for ASIC solutions.
  • Dynamic Proof of Work involves generating random programs within the VM, translating instructions for CPU execution.

8. Pros and Cons of RandomX:

  • Pros include enhanced security, better returns for CPU miners, resistance to ASICs leading to decentralization, and undergoing four full formal audits.
  • Cons involve complexity in development, potential for lateral attacks, and the inability of 32-bit CPUs to exploit the algorithm correctly.

In conclusion, RandomX is a groundbreaking algorithm designed to address the challenges posed by ASIC mining, and its implementation in Monero has resulted in improved security, decentralization, and resistance to specialized hardware. The article provides a comprehensive overview of RandomX, highlighting its features, development history, and the cryptographic principles that underpin its functionality.

What is RandomX mining algorithm in Monero? (2024)
Top Articles
Latest Posts
Article information

Author: Rev. Porsche Oberbrunner

Last Updated:

Views: 5959

Rating: 4.2 / 5 (53 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Rev. Porsche Oberbrunner

Birthday: 1994-06-25

Address: Suite 153 582 Lubowitz Walks, Port Alfredoborough, IN 72879-2838

Phone: +128413562823324

Job: IT Strategist

Hobby: Video gaming, Basketball, Web surfing, Book restoration, Jogging, Shooting, Fishing

Introduction: My name is Rev. Porsche Oberbrunner, I am a zany, graceful, talented, witty, determined, shiny, enchanting person who loves writing and wants to share my knowledge and understanding with you.