1. 首页 > 知趣科技

以太币的挖矿机制全解析

以太币的挖矿机制全解析

随着以太坊正式运行的临近,询问以太如何挖矿的朋友也越来越多。这篇文章综合了我们目前所知道的信息,希望能对网友们有一些帮助。由于挖矿算法的设计和改进仍在进行中,以下信息仅供参考。

设计目标

抵抗矿机(ASIC Resistance)。使用专门优化的芯片产生的挖矿优势应该尽可能的小,小到即使使用普通CPU挖矿也能产生收益。

轻客户端可验证。轻客户端应该有能力验证每一个块的真实性。目标是在普通桌面电脑上运行用C实现的验证算法,验证时间小于0.01秒,用Python或者Javascript小于0.1秒,使用内存不超过1MB。

挖矿算法

以太币(ether)的挖矿算法叫做Ethash, 又名Dashimoto(Dagger-Hashimoto),是Hashimoto算法结合Dagger之后产成的一个变种。它的特点是挖矿的效率基本与CPU无关,却和内存大小和内存带宽正相关。对内存大小和带宽的要求意味着那些通过共享内存的方式大规模部署的矿机芯片并不能在挖矿效率上有线性或者超线性(super-linear)的增长。

接下来让我们看看Dashimoto的基本流程:

对于每一个块(block),先计算出一个种子(seed)。种子的计算只依赖于当前块的信息,例如block number以及blockheaders。

使用种子产生32MB的伪随机数据集,称为cache。轻客户端需要保存cache。

基于cache再生成一个1GB大小的数据集,称为theDAG。这个数据集中的每一个元素都只依赖cache中的某几个元素,换句话说,只要有cache就可以快速计算出DAG中指定位置的元素。完整的可挖矿的客户端需要保存DAG。

挖矿可以概括为从DAG中随机选择元素然后对其进行hash的过程。验证的过程也是一样,只不过不是从DAG里面选择元素,而是基于cac

he计算得到指定位置的元素,然后验证这个元素集合的hash结果小于某个值。由于cache很小,而且指定位置的DAG元素很容易计算,因此验证过程只需要普通CPU和普通内存即可完成。

cache和DAG每一个周期更新一次,一个周期的长度是1000个块。也就是说这1000个块产生的cache和DAG是完全一样的,因此挖矿的主要工作在于从DAG中读取数据,而不是更新cache和DAG。DAG的大小随时间的推移线性增长,从1GB开始,每年增加大约7GB– 因此到2015年12月大约是8GB, 到2016年12月大约15GB。

注:上面这些步骤中的数字已经随着开发的推进有了调整,准确值请参考源代码。

挖矿软件

我们预计在上线之时将有至少两种挖矿方式:

使用Mist客户端(官方客户端实现,基于Go语言)进行CPU挖矿。

通过以太坊守护进程(eth daemon)和sgminer的组合进行GPU挖矿。守护进程和sgminer之前的数据通讯可以通过JSON-RPCAPI完成。目前有两个API和挖矿有关:eth_getWork以及eth_submitWork。

如果你也对币圈炒币、挖矿打新币等项目比较感兴趣,希望通过在币圈其他的币种项目来帮助自己获利,那么可以添加我们的官方客服进行详细的沟通和咨询,我们可以解答币圈大部分的疑问,同时可以邀请大家进入我们的官方社群,群里有行业大咖以及经验丰富的职业玩家,可以帮助大家快速入门币圈,从入门到精通。添加客服即可申请加入哦。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/zqkj/51636.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456