Ethash算法是以太坊極為核心的挖礦算法,但為了理解Ethash算法,先介紹了一些背景知識。在區(qū)塊鏈中,共識是一個非常重要的概念,它指的是哪個節(jié)點有記賬權(quán)和交易的順序。工作量證明算法讓節(jié)點通過算一個哈希值競爭記賬權(quán)并解決其余節(jié)點之間的共識問題。
然而,由于比特幣等使用工作量證明算法的系統(tǒng)可能因算力集中而存在一定弊端,以太坊采用了Ethash算法。Ethash算法采用了I/O密集的模型,不利于計算密集型專用集成電路,也更加GPU友好。此外,Ethash算法采用了三個逐漸增大的層次,即種子層、緩存層和數(shù)據(jù)層,這些層次的大小不同但都依賴于上一個世代。
Ethash算法的核心部分是Hashimoto函數(shù),它將頭部信息和隨機(jī)數(shù)結(jié)合在一起,生成一個初始的單向散列值并與DAG上的值混合多次得到最終值。最終值與目標(biāo)值相比較,如果小于目標(biāo)值則挖礦成功。難度值越大,目標(biāo)值越小,則挖礦越難。
最后,本文講解了Ethash算法的難度公式和非線性部分的設(shè)計。該設(shè)計旨在使挖礦變得沒意思,在大都會版本后的下一個版本中,要轉(zhuǎn)換共識,由POW變?yōu)镻OW、POS混合型的協(xié)議。