Ethash

Ethash以太坊上的加密貨幣的共識算法,使用工作量証明[1] Ethash也使用Keccak,一種已標準化為SHA-3散列函数。 但Ethash與SHA-3並不相同,不應將兩者混淆。

由版本1.0開始,Ethash已被設計為抵制ASIC,主要方法為藉著極大量的隨機查表,加重記憶體的負載,ASIC無法再利用專用線路而加速。[2]

Ethash是從Dagger-Hashimoto算法改動而成的。[3][4][5]Ethash使用一個初始值為1GB的DAGdataset及一個初始值為16MB的假亂數表cache,它們的內容每30000個區塊就會重新計算,這個30000區塊的間隔稱為epoch。每個epoch所產生的內容都會增大,因此1GB與16MB都只是初始值。

礦工會存儲整個dataset和cache,而輕客户端只需要存儲cache。礦工挖礦時將找到的nonce填入區塊頭,並需要以SHA-3形式不斷查表尋求MIX值以計算該區塊的解。[1]

抵制ASIC的原因

由於工作量証明的核心是Hash運算,運算得愈快的礦工將愈大機會挖掘到新的區塊而獲得更多貨幣收益。礦工的挖礦設備亦由CPU演變為GPU,再由GPU演變為ASIC。礦機門檻的提升導致了礦工人數下降,大多數的收益集中於少部份礦工,這種節點的集中與區塊鏈的原意去中心化是相違背的。因此,Ethash的計算過程中增加了對內存的要求而抵抗ASIC礦機的優勢。

参考文献