主页 > imtoken钱包下载安卓版 > 什么是以太坊挖矿算法Ethash?
什么是以太坊挖矿算法Ethash?
以太坊是一个非常重要的挖矿系统。 许多虚拟货币都是通过以太坊开采的。 一般来说,挖矿算力对于挖币效率非常重要。 最近有朋友问我以太坊挖矿算法Ethash,下面小编就带大家了解一下以太坊挖矿算法Ethash。 希望我的内容对你有所帮助。
挖矿介绍
挖矿这个词来自加密货币和黄金之间的类比。 黄金或贵金属是稀有的,电子代币也是如此,增加总量的唯一途径就是挖矿。 以太坊也是一样,唯一的发行方式就是挖矿。 但与其他例子不同的是,挖矿也是一种通过在区块链中创建、验证、发行和传播区块来保护网络安全的方法。
开采以太 = 保护网络 = 验证计算
什么是挖矿?
与所有区块链技术一样,以太坊使用激励驱动的安全模型。 共识是基于选择总难度最高的区块。 矿工创建区块,其他人检查有效性。 只有在包含一定难度的工作以及其他资格条件时,块才有效。 请注意,以太坊 Serenity 里程碑可能会被取代(请参阅权益证明模型)。
以太坊区块链在很多方面与比特币区块链相似,但也存在一些差异。 在区块链架构方面,以太坊和比特币的主要区别在于,与比特币不同,以太坊区块不仅包含交易列表,还包含最近的状态(merkle patricia root hash table encoded in state)除此之外,另外两个值,块号和难度,也存储在块中。
使用的工作量证明算法称为 Ethash(Dagger-Hashimoto 算法的改进版本),它涉及找到算法的随机数输入,使得结果低于某个难度阈值。 工作量证明算法的要点是,没有比枚举可能性更好的策略来找到这样的随机数,而且解决方案的验证是微不足道且廉价的。 由于输出具有均匀分布(作为应用哈希函数的结果),我们可以保证,平均而言,找到这样一个随机数所需的时间取决于难度阈值。 这使得通过简单地操纵难度来控制寻找新区块的时间成为可能。
如协议所述,难度动态调整的方式是全网每15秒产生一个区块。 我们说网络产生了一个区块时间为 15 秒的区块链。 这个“心跳”基本上是强调系统状态的同步,确保不可能维持分叉(允许双花)或被恶意分子改写,除非攻击者拥有超过一半的全网算力(所谓的)称为 51% 攻击)。
任何参与网络的节点都可能是矿工,预期的挖矿收益与他们的(相对)挖矿算力成正比,例如每秒尝试的随机数数量,由网络的总哈希率归一化。
Ethash 工作量证明是内存困难的,这使得它具有 ASIC 抗性。 Memory-hardness 是通过工作量证明算法实现的,该算法需要选择依赖于 nonce 和块头的固定资源的子集。 这种资源(几千兆字节大小的数据)称为 DAG。 DAG每3000个区块就完全不同,125小时的窗口称为一个epoch(约5.2天),生成需要一点时间。 由于DAG只由区块高度决定,所以可以提前生成。 如果没有提前生成以太坊挖矿原理,客户端需要等到流程结束才能生成区块。 如果客户端不提前预生成和缓存 DAG,网络可能会在每个纪元转换之间经历大量的块延迟。 请注意,不需要生成 DAG 来验证工作量证明,它可以在低 CPU 和小内存的情况下进行验证。
在特殊情况下,当从头开始创建节点时,只有在为现有纪元创建 DAG 时才会开始挖掘。
挖矿奖励
成功获得区块的工作量证明矿工将获得:
“获胜”区块的静态区块奖励,由 5.0 (5) ETH 组成
在区块中花费的 gas 成本——一定数量的以太币,取决于当前的 gas 价格
叔块的额外奖励,每个叔块包含额外的 1/32
获胜矿工提交的区块中执行的所有交易消耗的气体由每笔交易的发送者支付。 作为共识协议的一部分,已发生的天然气成本记入矿工账户。 随着时间的推移,这会使区块奖励相形见绌。
叔块是稳定的块,比如说,父块包含以前的块(最多 6 个块)。 奖励有效的叔块以抵消网络滞后对挖矿奖励的影响,从而提高安全性(这称为 GHOST 协议)。 叔块 由成功的工作量证明矿工形成的块中包含的叔块将获得数据块奖励的 7/8(= 4.375 ETH)。 每个块最多允许 2 个叔块。
叔叔在 reddit 上封杀 ELI5
解释叔块的子论坛
挖矿的成功取决于设定的区块难度。 块难度动态调整每个块以指示网络哈希功率以创建 12 秒块时间。 因此,找到一个块的机会是由相对于难度的哈希率产生的。
Ethash DAGs
Ethash 使用 DAG(有向无环图)进行工作量证明算法,该算法针对每个时期生成,例如每 3000 个区块(125 小时,约 5.2 天)生成一次。 DAG 需要很长时间才能生成。 如果客户端只是按需生成它,它会在每个 epoch 转换之前等待很长时间才能找到新 epoch 的第一个块。 然而,DAG 只依赖于块的数量,因此可以预先计算以避免在每个 epoch 转换时等待时间过长。 Geth 和 ethminer 执行自动 DAG 生成,一次维护 2 个 DAG 以实现平滑的纪元转换。 当从控制台控制挖矿时,会打开和关闭自动 DAG 生成。 如果 geth 使用 --mine 选项启动,它也会默认启用。 请注意,客户端共享 DAG 资源,如果您运行任何客户端的多个实例,请确保仅在一个实例中打开自动 DAG 生成。
为任何时期生成一个 DAG:
盖斯马克达格
实例 geth makedag 360000 ~/.ethash。 请注意,ethash 使用 ~/.ethash (Mac/Linux) 或 ~/AppData/Ethash (Windows) 作为 DAG,以便它可以在不同的客户端实现和多个运行实例之间共享。
算法
我们的算法 Ethash(以前称为 Dagger-Hashimoto)是基于一个庞大的、瞬态的、任意生成的数据集形成一个 DAG(Dagger-part)规定,试图解决它一个特定的约束,部分通过 Block header hash 来决定。
它专为在只有慢速 CPU 的环境中散列快速验证时间而设计,但在提供大量高带宽内存时为挖掘提供了巨大的加速。 大内存需求意味着大型矿工的超线性收益相对较小。 高带宽要求意味着通过堆叠许多超高速处理单元来加速,共享相同的内存对每个单独的单元几乎没有好处。
因此,没有节点验证的好处阻碍了中心化,这在挖矿中很重要。
外部挖矿应用程序与以太坊作业规范和报告的后端之间的通信是通过 JSON-RPC API 进行的。 提供了两个RPC函数; eth_getWork 和 eth_submitWork。
这些在 JSON-RPC API 维基百科文章的 Miners 条目下有正式记录。
为了挖矿以太坊挖矿原理,您需要一个能够挖矿的完全同步的以太坊客户端和至少一个以太坊账户。 该账户用于发送挖矿奖励,通常称为币基或以太币基。 查看本指南的“创建帐户”部分,了解如何创建帐户。
以上就是小编为大家整理的以太坊挖矿算法Ethash的介绍。 如果你在挖矿,也许你现在正在使用以太坊系统。 希望小编的内容对您有所帮助。 如果您需要更多资讯,请关注伟峰,我们将为您提供最新最全的资讯。