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----------------------------------------
  • 相关阅读:
    Git 分支使用
    ansible 2.7 API
    zabbix api
    (四)ansible 通过堡垒机访问内网服务器
    C#实体对象出现中文处理乱码的问题
    mysql数据库数据(字段数过大)太多导入不了的解决方法
    MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常 解决方法
    hibernate 主键生成方式
    HTN规划 jshop2
    自动驾驶
  • 原文地址:https://www.cnblogs.com/xsmile/p/14754850.html
Copyright © 2011-2022 走看看