随着以太坊正式运营的临近,询问以太坊如何开矿的朋友越来越多。本文综合了目前我们所知道的信息,希望对大家有所帮助。由于挖掘算法的设计和改进仍在进行中,以下信息仅供参考。
设计目标是抵抗ASIC电阻。使用特别优化的芯片产生的挖掘优势应该越小越好,小到即使使用普通CPU进行挖掘也能产生效益。轻客户端可以验证。轻型客户端应该能够验证每个块的真实性。。目标是在普通桌面计算机上运行C实现的验证算法,验证时间小于0.01秒,Python或Javascript小于0.1秒,使用的内存小于1MB。。挖掘算法以太';s挖掘算法叫做Ethash,也叫dashimoto
(Dagger-Hashimoto),是Hashimoto算法结合Dagger的变种。。其特点是挖掘的效率与CPU无关,与内存大小和内存带宽正相关。。对内存大小和带宽的要求,意味着那些通过共享内存大规模部署的挖矿芯片,在挖矿效率上不可能有线性或超线性的增长。。接下来,让';让我们来看看Dashimoto的基本流程:对于每个块,首先计算一个种子。seed的计算只依赖于当前块的信息,例如块号和块
。标题.使用种子生成32MB的伪随机数据集称为缓存。轻型客户端需要保存缓存。基于缓存生成另一个1GB数据集,称为
DAG。。这个数据集中的每一个元素都只依赖于缓存中的少数元素,换句话说,只要有缓存,DAG中指定位置的元素都可以快速计算出来。一个完整的可挖掘客户端需要保存DAG。。挖掘可以概括为从DAG中随机选择元素,然后对它们进行哈希运算的过程。验证过程是相同的,只是不是从DAG中选择元素,而是基于缓存计算指定位置的元素。然后验证该元素集合的哈希结果是否小于某个值。因为缓存很小,
以及指定位置的DAG元素很容易计算,所以验证过程只需要普通CPU和普通内存就可以完成。。Cache和DAG每个周期更新一次,周期长度为1000块。也就是说,这1000个块生成的cache和DAG是完全一样的,所以挖掘的主要工作是从DAG中读取数据,而不是更新cache和DAG。。DAG的大小随时间线性增加,从1GB开始,每年增加大约7GB
,因此到2015年12月大约为8GB,到2016年12月大约为15GB。。注:上述步骤中的数字已随发展而调整。请参考源代码以获得准确的值。挖矿软件我们预计上线时至少会有两种挖矿方式:使用Mist客户端(官方客户端实现,基于Go语言)进行CPU挖矿。。GPU挖掘是通过以太坊守护进程和sgminer的结合来进行的。守护进程和sgminer之间的数据通信可以通过JSON-RPC
API完成。。目前与挖掘相关的API有两个:eth_getWork和eth_submitWork。