门罗币XMR最新挖矿算法RandomX设计原理

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.使用 HHash512(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

流程图

门罗币XMR最新挖矿算法RandomX设计原理

Original: https://www.cnblogs.com/fanguang/p/12107860.html
Author: 反光
Title: 门罗币XMR最新挖矿算法RandomX设计原理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578087/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • JPA作持久层操作

    JPA(Hibernate是jpa的实现) jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。虽然jpa可以直接通过编写java代码来操作数据库表结构,避免了sql…

    Linux 2023年6月7日
    0140
  • docker:alpine使用logrotate切割日志

    最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况。…

    Linux 2023年6月13日
    0119
  • 高等代数:4 矩阵的运算

    4 矩阵的运算 1、数域K上两个矩阵称为 相等,如果它们的行数相等,列数也相等,并且它们的所有元素对应相等。 2、定义1:设(A=(a_{ij}),B=(b_{ij}))都是数域K…

    Linux 2023年6月8日
    0122
  • exec

    exec 函数 exec()函数通过运行其他程序来替换当前进程。 新程序启动后PID和老程序一样,就像两个程序接力跑,你的程序把进程交接给了新程序。 exec函数众多,可以分为两种…

    Linux 2023年6月7日
    0123
  • 绝了!起个好标题的9大技巧

    许多自媒体经常发一些标题雷人的文章,内容却非常空洞甚至低俗,技术创作领域也未能幸免,这个搞法被大家笑称为”标题党”。互联网是眼球经济,靠标题骗点击量的恶习将…

    Linux 2023年6月6日
    0129
  • Hystrix 源码解读

    转载请注明出处: 1.引入依赖: 2. 查看自动配置类HystrixCircuitBreakerConfiguration 查看 org.springframework.cloud…

    Linux 2023年6月14日
    0123
  • 阿里云Redis开发规范

    (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id <span class="hljs-sele…

    Linux 2023年5月28日
    0142
  • JavaScript json&ajax

    本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。 博主…

    Linux 2023年6月13日
    0113
  • windows版本rabbitmq安装及日志level设置

    1.DirectX Repair 安装缺失的C++组件,不安装缺失的组件会造成第二部安装erl文件夹缺少bin文件夹2.安装otp_win64_23.1 1.配置 ERLANG_H…

    Linux 2023年6月7日
    0217
  • Linux常用命令

    基本操作 创建目录: mkdir xxx 删除目录: rm -rf xxx 切换目录: cd xxx,返回: cd – 创建文件: touch xxx.txt 复制文件: cp x…

    Linux 2023年6月8日
    0134
  • Linux系统Oracle常见操作

    1.1 登录默认数据库 首先切换到oracle用户,用数据库默认管理员登录。 [root@tsm-zh01 ~]# su – oracle [oracle@redhat ~]$ l…

    Linux 2023年6月6日
    096
  • Linux基础和命令

    Linux的哲学思想 优势 一切都是一个文件。(包括硬件,文本,二进制,源代 码) 系统中拥有小型,单一用途的程序。(一个程序只负责 做好自己的本职工作) 当遇到复杂任务,通过不同…

    Linux 2023年6月6日
    0118
  • CentOS7下安装python3.7

    以原码编译的方式安装 1.官网下载python3.7软件包 2.上传至Linux中,并解压 tar -zxvf python-3.7.2.tgz 3.安装gcc和python所需依…

    Linux 2023年6月6日
    0114
  • Linux指令

    Linux 目录简介/bin Binary的缩写,存放最经常使用的命令/sbin s代表Super user,存放系统管理员使用的系统管理程序/home 存放普通用户的主目录,每个…

    Linux 2023年5月27日
    0123
  • C语言实现扫雷游戏(完整版)

    头文件定义、函数声明 下面就是扫雷中使用到的所有函数,为了省事我把所有的代码都放在一个C文件中实现 宏定义中设置了游戏的界面布局,以及设置地雷的个数(这里默认的是10个地雷),界面…

    Linux 2023年6月6日
    0151
  • Feign 进行rpc 调用时使用ribbon负载均衡源码解析

    转载请注明出处: Feign客户端接口的动态代理生成是基于JDK的动态代理来实现的,那么在所有的方法调用的时候最终都会走InvocationHandler接口的实现,默认就是Ref…

    Linux 2023年6月14日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球