随着以太坊正式运行的接近,询问以太怎么挖矿的朋友也越来越多。这篇文章归纳了咱们现在所知道的信息,期望能对大家有一些协助。因为挖矿算法的规划和改善仍在进行中,以下信息仅供参阅。

规划方针

  1. 抵抗矿机(ASIC Resistance)。运用专门优化的芯片发生的挖矿优势应该尽可能的小,小到即使运用一般CPU挖矿也能发生收益。
  2. 轻客户端可验证。轻客户端应该有能力验证每一个块的真实性。方针是在一般桌面电脑上运行用C完结的验证算法,验证时刻小于0.01秒,用Python或许Javascript小于0.1秒,运用内存不超越1MB。

挖矿算法

以太币(ether)的挖矿算法叫做Ethash, 又叫Dashimoto (Dagger-Hashimoto),是Hashimoto算法结合Dagger之后产成的一个变种。它的特点是挖矿的功率根本与CPU无关,却和内存巨细和内存带宽正相关。对内存巨细和带宽的要求意味着那些经过共享内存的方法大规模布置的矿机芯片并不能在挖矿功率上有线性或许超线性(super-linear)的添加。

接下来让咱们看看Dashimoto的根本流程:

  1. 对于每一个块(block),先核算出一个种子(seed)。种子的核算只依赖于当前块的信息,例如block number以及block headers。
  2. 运用种子发生32MB的伪随机数据集,称为cache。轻客户端需要保存cache。
  3. 根据cache再生成一个1GB巨细的数据集,称为the DAG。这个数据集中的每一个元素都只依赖cache中的某几个元素,换句话说,只要有cache就能够快速核算出DAG中指定方位的元素。完整的可挖矿的客户端需要保存DAG。
  4. 挖矿能够归纳为从DAG中随机挑选元素然后对其进行hash的进程。验证的进程也是相同,只不过不是从DAG里边挑选元素,而是根据cache核算得到指定方位的元素,然后验证这个元素调集的hash成果小于某个值。因为cache很小, 并且指定方位的DAG元素很简单核算,因此验证进程只需要一般CPU和一般内存即可完结。
  5. cache和DAG每一个周期更新一次,一个周期的长度是1000个块。也就是说这1000个块发生的cache和DAG是彻底相同的,因此挖矿的首要工作在于从DAG中读取数据,而不是更新cache和DAG。DAG的巨细随时刻的推移线性添加,从1GB开端,每年添加大约7GB – 因此到2015年12月大约是8GB, 到2016年12月大约15GB。

注:以上步骤中的数字现已随着开发的推动有了调整,精确值请参阅源代码。

挖矿软件

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

  1. 运用Mist客户端(官方客户端完结,根据Go言语)进行CPU挖矿。
  2. 经过以太坊守护进程(eth daemon)和sgminer的组合进行GPU挖矿。守护进程和sgminer之前的数据通讯能够经过JSON-RPC API完结。现在有两个API和挖矿有关:eth_getWork以及eth_submitWork。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注