以太坊挖矿算法Ethash是怎样的?

联系人:高吴 | 

以太网的挖掘算法是什么?“采矿”一词来源于隐名货币和黄金之间的类比。黄金或贵金属很稀有,电子代币也是如此。增加总量的唯一方法是采矿。以太博物馆也是如此。分发它的唯一方法是我的。但不像其他例子,

www.II35.coM

以太网的挖掘算法是什么?“采矿”一词来源于隐名货币和黄金之间的类比。黄金或贵金属很稀有,电子代币也是如此。增加总量的唯一方法是采矿。以太博物馆也是如此。分发它的唯一方法是我的。但与其他例子不同,采矿也是通过在区块链创建、验证、分发和传播区块来保护网络的一种方式。

像所有区块链技术一样,以太网使用激励驱动的安全模型。共识是基于选择总难度最高的积木。矿工制造障碍,其他人测试效率。块只有在包含具有特定难度的工作负载,并且存在其他合格条件时才有效。请注意,Ethereum中的Serenity里程碑可能会被替换(参见股权证明模型)。

以太网区块链在许多方面与比特币区块链相似,但也存在一些差异。就区块链架构而言,以太网和比特币的主要区别在于,与比特币不同,以太网块不仅包含交易列表,还包含最新状态(merkle patricia结构的根哈希表代码在状态上更准确)。此外,其他两个值,块的数量和难度,也存储在块中。

www.II35.coM

所使用的工作量证明算法称为Etash(Dag-Hashimoto算法的改进版本),它包括查找算法的随机数输入,以使结果低于特定的难度阈值。工作量证明算法的意义在于,没有比列举找到这样一个随机数的可能性更好的策略了,并且对解决方案的验证是琐碎而廉价的。因为输出是均匀分布的(这是哈希表函数应用的结果),所以我们可以保证,平均来说,找到这样一个随机数的时间取决于难度阈值。这使得仅通过操作的难度来控制找到新块的时间成为可能。

如协议中所述,难度是动态调整的,整个网络每15秒就会生成一个块。我们说网络在15秒内产生一个区块链。这种“心跳”主要集中在系统状态同步上,确保不可能维持分叉(允许双重花费)或被恶意元素重写历史,除非攻击者具有超过一半的网络挖掘能力(所谓的51%攻击)。

参与网络的任何节点都可能是挖掘者,并且预期的挖掘收入与其(相对)挖掘能力成正比,例如由网络的总分散模型标准化的每秒尝试的随机数的数量。

这种工作负载被证明是内存密集型的,这使得它对专用集成电路具有抵抗性。内存困难是通过工作量证明算法实现的,该算法需要根据随机数和块标题选择固定资源的子集。这种资源(数十亿字节的数据)被称为DAG。每3000个块的DAG完全不同。125小时的窗口被称为纪元(大约5.2天),这需要一点时间来生成。因为DAG仅由块高度决定,所以它可以提前生成。如果它不是预先生成的,客户端需要等到进程结束时才生成块。如果客户端没有预先生成和缓存Dag,网络可能会在每个纪元转换中经历大规模的块延迟。请注意,不需要生成DAG来验证工作负载证明,它可以在低CPU和小内存的情况下进行验证。

在区块内执行的所有交易所消耗的、由获胜的矿工提交的天然气由每笔交易的发送者支付。作为共识协议的一部分,所产生的天然气成本归属于矿工账户。随着时间的推移,这将使数据块奖励变小。

例如,父块是稳定的块,父块包含先前的块(最多6个块)。有效的叔叔块将得到奖励,以抵消网络延迟对采矿奖励的影响,从而提高安全性(这被称为GHOST协议)。由成功的工作量证明挖掘者形成的块中包含的叔叔块获得7/8数据块奖励(=4.375以太网)。每个区块最多允许两个叔叔区块。

采矿的成功取决于设定的区块难度。块难度动态调整每个块,以指定网络哈希功能,从而创建12秒的块时间。因此,找到块的机会是由与难度相关的散列率产生的。

Ethash使用DAG(有向无环图)作为工作负载证明算法,该算法针对每个时期生成,例如,每3000个块(125小时,大约5.2天)。DAG需要很长时间来构建。如果客户端只根据需要生成它,那么在找到新纪元的第一块之前,每个纪元转换都需要很长时间。然而,DAG仅取决于块的数量,因此它可以被预先计算,以避免每个时期中的过多等待时间。Geth和ethminer执行自动DAG生成,一次维护2个DAG,以使划时代过渡平稳。当从控制台控制挖掘时,自动DAG生成打开和关闭。如果geth是用-—mine选项启动的,默认情况下它也将被打开。请注意,客户端共享DAG资源。如果您运行任何客户端的多个实例,请确保仅在一个实例中启用自动DAG生成。

我们的算法,Ethash(以前称为Dagger-Hashimoto),是基于一个大的,瞬时的,任意生成的数据集,形成一个Dag (Dag-part),试图解决它的一个特定的约束,它的一部分是由块头哈希决定的。

它被设计为在只有慢速CPU的环境中散列快速验证时间,但是当它被提供有大量高带宽存储器时,它为挖掘提供了大量加速。大量内存需求意味着大规模采矿者获得的超线性收益相对较少。高带宽要求意味着,在许多超速处理单元中叠加和共享同一内存所产生的加速对每个单元几乎没有好处。

为了进行挖掘,您需要一个能够进行挖掘的完全同步的以太网客户端和至少一个以太网帐户。该账户用于发送采矿奖励,通常称为货币基础或以太基础。查看本说明的“创建帐户”部分,了解如何创建帐户。