【區塊鏈整理】三、以太坊挖礦算法 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 個區塊的生成而翻倍。驗證影響以太坊出塊速度。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM