Randomx算法-门罗币XMR的挖矿新算法
RandomX算法设计目标是抗ASIC+降低GPU优势。
Monero门罗币XMR计划于2019年的10月份启用最新的RandomX 算法以取代原来的CryptoNight挖矿算法,以继续优化抗ASIC+降低GPU优势来保持门罗POW网络的分散性
算法流程分析
最外层循环8次
内层循环2048次
0.输入0-60字节的K、任意长度字符串H(包含nonce)。
1.使用K初始化Dataset。
2.使用H和Hash512(blake2b)算法生成种子seed1。
3.设置生成器AesGenerator1R参数为seed1。
4.使用生成器fillAes1Rx4参数seed1生成Scratchpad和参数seed2。
5.设置生成器AesGenerator4R参数为seed2。
6.设置浮点默认舍入模式。
7.1使用生成器fillAes4Rx4参数seed2生成 entropy128字节 + program(2K=8*256)8*RANDOMX_PROGRAM_SIZE (执行参数和随机代码) 。
7.2 解析参数entropy。
7.3 JIT编译program为机器码。
8.执行虚拟机。
9.使用虚拟机regfile和Hash512(blake2b)算法生成种子seed2。
10.使用seed2设置生成器gen4的状态。
11.重复7-10步骤RANDOMX_PROGRAM_COUNT(8)次,最后一次执行时跳过9、10步骤。
12.调用hashAndFillAes1Rx4算法计算Scratchpad的特征值A。
13.将特征值A覆盖regfile的一部分。
14.使用虚拟机regfile和Hash512(blake2b)算法生成哈希结果R。
流程图