zoukankan      html  css  js  c++  java
  • 【区块链整理】三、以太坊挖矿算法 ETHASH

    以太坊挖矿算法 Ethash 又名 Dashimoto (Dagger-Hashimoto),是 Hashimoto 算法结合 Dagger 算法产生的变种算法。Ethash 算法大致流程如下:

    1. 生成种子

    根据区块块头信息计算出一个种子。

    2. 伪随机数据集

    根据种子生成一个大小为 16M 的伪随机数据集,其大小每 30000 个区块进行一次更新。轻节点进行存储。其中值得说明的是种子计算生成第一个数,其后的每个数都是前一个数的哈希值。

    3. DAG数据集

    根据伪随机数据集生成大小 1G 的大规模数据集。该数据集中每项元素通过伪随机数据集中少量的几项计算得到。如果给出伪随机数据集合指定的几项,很快可以算出 DAG 中指定的元素,轻节点用此进行验证。

    4. 挖矿

    通过 header 及 nonce 计算出一个初始的哈希值映射到初始位置A,然后读取A位置元素和A的相邻后一个位置A'的元素,再通过(A和A')计算出位置(B和B'),依次类推,迭代64次后,一共读取出128个数,最后计算这128个数的哈希值与目标值target比较,若满足 target,则挖矿成功;否则重新尝试 nonce。

    挖矿难度

    最后一项则为以太坊引入的“难度炸弹”,挖矿难度随着每 10000 个区块的生成而翻倍。验证影响以太坊出块速度。

    ----------------------------------------声明----------------------------------------
    作者:xsmile
    仅自己学习过程技术总结,如有哪里有误的地方,欢迎指正。
    原创不易,如需转载,请注明出处及地址 www.cnblogs.com/xsmile
    ----------------------------------------end----------------------------------------
  • 相关阅读:
    gitlab: git clone/pull / push: The project you were looking for could not be found
    转载: MySQL启动出错InnoDB: Check that you do not already have another mysqld process解决方法
    root用户删除文件,提示:Operation not permitted
    使用dockerfile打包新镜像
    kubernets创建Deployment
    代理全家福
    Spring事务传播详解
    [FFmpeg]Centos7 yum安装
    [Redis]存放字典
    [Docker]开放2375端口
  • 原文地址:https://www.cnblogs.com/xsmile/p/14754850.html
Copyright © 2011-2022 走看看