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

昕阳小编 92 0

挖矿这个词来源于加密货币和黄金的类比。或者说黄金和贵金属是稀有的,电子代币也是。增加总量的唯一办法就是挖矿。以太坊也是如此。唯一的方法就是发给我。但与其他例子不同的是,采矿也是一种通过在区块链创建、验证、分发和散布区块来保护网络的方式。

挖以太坊=护网=验证计算

以太坊和所有区块链技术一样,使用激励驱动的安全模式。根据共识选择总难度最高的区块。矿工创造积木,其他人测试它们的有效性。块仅在包含特定难度的工作量时有效,并且存在其他合格条件。请注意以太坊的Serenity里程碑可能会被替换(参考权益证明模型)。

以太坊区块链在很多方面与比特币区块链相似,但也有些不同。在区块链架构方面,以太坊和比特币的主要区别在于,与比特币不同,以太坊块不仅包含交易列表,还包含最新状态(merkle patricia结构的根哈希码在状态中更准确)。此外,另外两个值,块数和难度也存储在块中。

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

如协议中所述,难度以这样的方式动态调整,即每15秒整个网络将产生尚力财经小编2022一个块。假设我们的网络用15秒产生一个区块链。这个“心跳”基本上强调的是系统状态的同步,保证不可能维护一个分叉(允许双花)或者被恶意分子重写,除非攻击者拥有一半以上的网络挖掘能力(所谓的51%攻击)。

任何参与网络的节点都可能是一个挖掘者,期望的挖掘收益与他们的(相对)挖掘能力成正比,比如每秒的随机数个数,这是由网络的总分散模型标准化的。

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

在特殊情况下,当从头开始创建节点时,挖掘将仅在为现有epoch创建DAG时开始。

获胜区块的成功工作量证明矿工将获得:

对“获胜”区块的静态区块奖励,其中包括5.0(5)以太币区块的天然气成本——一定数量的以太币,取决于当前的天然气价格,以及以每个叔叔区块包含额外1/32

的形式对叔叔的额外奖励,所产生的天然气成本作为共识协议的一部分归属于矿工的账户。久而久之,这会让数据块奖短。例如,

叔叔块是稳定块,并且是包含先前块(最多6个块)的父块。 有效的大叔会得到奖励,以中和网络滞后对挖矿奖励的影响,从而提高安全性(这叫做GHOST协议)。大叔块成功工作量证明矿工形成的块中包含的大叔块获得7/8数据块奖励(=4.375以太坊)。每个块最多允许2个叔叔块。

Reddit上的方块大叔ELI5讲解方块大叔分论尚力财经小编2022坛

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

Ethash使用DAG(有向无环图)进行工作负载证明算法,该算法针对每个epoch生成,例如,每3000个块(125小时,约5.2天)。DAG需要很长时间才能生成。如果客户端仅按需生成它,那么在找到新时期的第一个块之前,每个时期转换将不得不等待很长时间。而DAG只取决于块数,所以可以提前计算,避免每个历元等待时间过长。Geth和ethminer执行自动DAG生成,一次维护2个DAG,以使epoch过渡平滑。当从控制台控制采矿时,将打开和关闭自动DAG生成。如果geth是用-—mine选项启动的,默认情况下它也会被打开。请注意,客户端共享DAG资源。如果运行任何客户端的多个实例,请确保仅在一个实例中打开自动DAG生成。

生成任意历元的DAG:

gethmakedag

实例geth makedag 360000 ~/.ethash请注意eHash使用~/。~/.ethash (Mac/Linux)或~/~/AppData/Ethash(Windows)for DAG,这样就可以在不同的客户端实现和多个运行实例之间共享。

我们的算法Ethash(原名Dagger-Hashimoto)基于一个大型的、瞬时的、任意生成的数据集规则,形成一个Dag (Dag-part),试图解决它的一个特定约束,这个约束部分由块头的hash决定。

它是为了在只有慢速CPU的环境下哈希快速验证时间而设计的,但是在配备大量高带宽内存的情况下,它为挖掘提供了大量的加速。大量的内存需求意味着大型矿商获得的超线性收益相对较少。高带宽需求意味着在许多超速处理单元中堆叠和共享相同的存储器所带来的加速对每个单独的单元没有什么好处尚力财经小编2022。

没有节点验证的好处,从而阻碍了集中化,而集中化在挖掘中非常重要。

外部采矿应用程序与以太坊指定并提交的后台程序之间的通信通过JSON-RPC API进行。提供了两个RPC函数;Eth_getWork和eth_submitWork。

这些都是官方记录在JSON-RPC API维基百科文章的矿工条目下的。

为了挖矿,你需要一个完全同步的以太坊客户端和至少一个以太坊账号。这个账号是用来发挖矿奖励的,通常叫做货币基或者以太基。查看本说明的“创建账户”一章,了解如何创建账户。

警告:在你开始采矿之前,确保区块链和主链完全同步,否则你不能在主链上采矿。

作者:子旭慕雪

以太坊挖矿算法Ethash是怎样的-第1张图片-昕阳网

标签: do

抱歉,评论功能暂时关闭!

微信号已复制,请打开微信添加咨询详情!