对于基于工作量证明的加密货币来说,挖矿是保证区块链安全的重要手段

以太坊通过使用两个一大一小的数据集(16M的cache、1G的dataset称为DAG)cache和dataset都是要定期增大的,每隔一段时间大小都要增大

cache的生成方式是从种子节点运算出数组的第一个元素,并依次取哈希得到后续的元素,通过这样从前向后将整个数组填充伪随机数

dataset数据集的生成方式:dataset每一个元素都是从cache中通过伪随机的顺序读取一些元素。例如在cache中读取了A位置的元素,读取完之后对当前的哈希值进行一些更新迭代,算出下一个更新的位置B并更新,算出C的位置.......在cache中一共读取256个数,最后读取的一个数放于dataset的第一个元素中。dataset的后续元素都是这样产生的(在cache中以伪随机的方式读取256个数不断进行迭代更新,最后得到一个哈希值,最后存到dataset的相应位置上)

求解puzzle使用dataset提供的数据,按照伪随机的顺序从大数据集中取128个数。首先根据块头信息(包括nonce值)算出一个初始的哈希,根据这个哈希映射到dataset的某个位置,并将该位置的数据读取出,进行运算得出下一个读取的位置将第二个数读取出(在进行计算的时候除了读取当前数之外 还要将后一位相邻的数读取出,也就是每次都是读取两个相邻的元素)。循环64次之后算出哈希值与挖矿难度的目标阈值相比较。如果不符合更换块头的nonce值。

同时在以太坊挖矿中也采用了预挖矿的过程:在以太坊发行的时候预留一部分货币给以太坊开发者。

伪代码:

 

Logo

一站式 AI 云服务平台

更多推荐