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。
流程圖