7.0 ETH挖矿算法篇2
7.1 伪代码理解以太坊挖矿算法
mkcache:根据一个seed,填充整个cache数组。
calc_dataset_item:通过cache来生成大数据集中的第i个元素,基本思想是通过伪随机的顺序读取cache中的256个数,每次读取的位置是由上一个读取的数计算得到的。第一个要从cache读取的数据的位置由初次mix决定,而mix是由"i'决定的,“i”每次都是不同的,所以mix也一定不同。(不同的mix可能对应初次读取的cache数组下标一样的,但是第二个读取的数字下标mix也会参与,所以第一个读取的位置虽然可以相同,但后续的读取顺序是不同的。也就是mix决定了初始读取的位置也决定了读取顺序。)
get_int_from_item:从哈希值解析出位置下标,就是用当前算出来的哈希值mix求出下一个要读取的位置cache_index。
make_item:利用两个哈希值得到新的哈希值,是用cache中这个位置cache_index的数和当前的哈希值mix计算出下一个哈希值也叫mix。
ca