How Monero's proof of work works

· math · Source ↗

TLDR

  • RandomX replaces fixed-hash mining with random CPU programs over a 2 GiB dataset, making Monero ASIC-resistant by design.

Key Takeaways

  • RandomX chains 8 random 256-instruction VM programs per hash; output of each seeds the next, blocking easy-program filtering.
  • Two memory structures run in parallel: a 2080 MiB dataset forcing DRAM traffic and a 2 MiB scratchpad sized to fit CPU cache levels.
  • The dataset rebuilds only every ~2048 blocks (~2.8 days) from a key block hash; per-attempt work changes only the nonce input.
  • Fast mode (2 GiB+) is for miners; light mode (256 MiB cache only) is for verifiers, trading memory for extra compute.
  • JIT compilers for x86-64, ARM64, and RISCV64 are included so VM programs run as native code, not interpreted bytecode.

Hacker News Comment Review

  • Commenters drew a direct line from Monero’s earlier CryptoNight failures to RandomX, noting that ProgPoW on Ethereum faced similar goals but was abandoned before shipping.
  • The question of why miners cannot simply generate branch-free programs was raised but not fully resolved in thread; the chaining design and fixed instruction encoding are the structural answers the article gives.
  • Privacy as a concrete use case was defended against energy-waste criticism, splitting the thread without reaching consensus.

Original | Discuss on HN