区块链研究区块链区块链研习社

《锋哥论道区块链》之五区块链2.0之以太坊--共识机制:工作量证

2019-05-05  本文已影响8人  7dfc697cf7a9

以太坊采用的是工作量证明(POW)的共识机制,工作量证明哈希算法为Ethash,Ethash算法的特点是挖矿效率和内存、带宽正相关,基本与cpu无关。Ethash算法流程如下:
(1)对于每一个块,首先计算一个种子(seed),该种子只和当前块的信息有关。
(2)根据步骤(1)中的这个种子seed,可以计算一个初始大小为16MB的伪随机缓存(cache)。轻客户端需要存储这份cache.
(3)根据步骤(2)中的这个缓存cache,生成一个初始大小为1GB的DAG数据集,该数据集的每一个元素依赖于缓存中的少数项,数据集随着时间线性增长。
(4)从步骤(3)中产生的DAG数据集中随机选择元素进行哈希值计算。
注:对上述进行如下分析
》DAG可以理解为一个完整的搜索空间,挖矿的过程就是从DAG中随机选择元素(类似于比特币挖矿中查找合适Nonce)再进行哈希运算。可以从Cache快速计算DAG指定位置的元素,进而哈希验证。此外还要求对Cache和DAG进行周期性更新,每30000个块更新一次,并且规定DAG的大小随着时间推移线性增长。
》cache和dataset的内容并非不变,它每隔一个epoch(30000个区块)就需要重新计算
》cache和dataset的大小并非一成不变,16MB和1GB只是初始值,这个大小在每年会增大,这是为了抵消掉摩尔定律下硬件性能的提升,即使硬件性能提升了,那么最终计算所代表的工作量不会变化很多。结合上一条,那么其实每经过30000个区块,cache和dataset就会增大一点,并且重新计算
》全节点(比如矿工)会存储整个 cache和dataset,而轻客户端只需要存储 cache。挖矿(seal)时需要DAG数据集在内存中便于随时存取,而验证(verify)时,只需要有cache就行,需要的DAG数据集临时计算就行。
》DAG是ethash算法中需要频繁访问的数据集

上一篇下一篇

猜你喜欢

热点阅读