以太坊的采矿方法对以太坊提取机制的详细分析

发布时间:2019-05-02 浏览:
设计目标
电阻采矿机(ASIC电阻)
使用经过特殊优化的芯片产生的采矿效益应该尽可能小,并且即使使用常规CPU挖掘也要小到足以产生收益。
可验证的轻客户端
轻客户端应该能够验证每个块的真实性。
目标是在验证时间少于零的常规台式计算机上运行C实现的验证算法。
01秒,使用Python或Javascript小于0。
使用1兆字节或更少的内存1秒钟。
挖掘算法
以太提取算法,也称为Dashimoto(Dagger-Hashimoto),称为Ethash,是与Dagger结合的Hashimoto算法的变体。
其特征在于挖掘效率基本上与CPU无关,但存储器大小和存储器带宽之间存在正相关关系。
存储器大小和带宽要求意味着通过共享存储器大规模实现次要芯片,挖掘效率不会线性增加或超线性增加。
让我们来看看Dashimoto的基本流程。
对于每个块,首先计算种子。
种子的计算仅取决于当前块的信息,例如块编号和块头。
种子用于生成称为缓存的32 MB伪随机数据集。
瘦客户端需要保存缓存。
基于缓存,生成称为DAG的1GB数据集。
此数据集的每个元素仅基于缓存的几个元素。换句话说,只要有缓存,就可以快速计算DAG指定位置的元素。
完整的可移动客户端需要保存DAG。
挖掘可以概括为随机选择DAG元素然后混合它们的过程。
验证过程是相同的,但是不是选择DAG元素,而是基于高速缓存计算指定位置中的元素,然后验证该元素集的散列结果小于某个值。。
由于缓存很小并且指定位置的DAG元素易于计算,因此验证过程只需要正常的CPU和普通内存。
每个周期更新缓存和DAG,每个周期有1000个块。
换句话说,挖掘的主要任务是读取DAG数据而不是更新缓存和DAG,因为1000个块生成完全相同的缓存和DAG。
DAG的大小随时间线性增长,从1 GB开始每年增加约7 GB,到2015年12月增加到8 GB,到2016年12月增加到15 GB。
注意:上一步中的数字已针对开发和开发进行了调整。请检查源代码以获取正确的值。
挖掘软件
在连接时,您至少需要两种挖掘方法。
使用Mist客户端进行CPU挖掘(基于Go的客户端的官方实现)。
GPU的提取是通过以太坊守护进程和sgminer的组合完成的。
守护进程和sgminer之间的数据通信可以通过JSON-RPC API完成。
目前有两个与挖掘相关的API:eth_getWork和eth_submitWork。