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----------------------------------------
  • 相关阅读:
    hdu 3577 线段树
    hdu 5316 Magician 线段树
    POJ3468 本来是一道线段树
    hdu 3183 st表
    hdu 5285 BestCoder Round #48 ($) 1002 种类并查集
    hdu 5282 序列计数
    zoj 2432 模板LCIS
    hdu 1052 贪心
    Angular实践----定制你自己的指令
    Angular实践----理解数据绑定过程
  • 原文地址:https://www.cnblogs.com/xsmile/p/14754850.html
Copyright © 2011-2022 走看看