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矿机的优势。
参考文献
- ^ 1.0 1.1 wiki: The Ethereum Wiki. 8 February 2018 [8 February 2018]. (原始内容存档于2019-03-28).
- ^ Rudlang, Marit. Comparative Analysis of Bitcoin and Ethereum (PDF). Norway: NTNU: Norwegian University of Science and Technology. Jun 2017: 52–53 [29 September 2018]. (原始内容存档 (PDF)于2018-01-23).
- ^
- ^ Dryja, Thaddeus. Hashimoto: I/O bound proof of work (PDF). Semantic Scholar. [2019-01-30]. (原始内容存档 (PDF)于2017-08-10).
- ^ Tikhomirov, Sergei. Ethereum: State of Knowledge and Research Perspectives (PDF). International Symposium on Foundations and Practice of Security. 17 Feb 2018, (FPS 2017): 206–221 [29 September 2018]. (原始内容 (PDF)存档于2018-01-23).