网站首页 > 币百科 >

关于以太坊ethash算法的信息

2023-06-26 04:29:41 币百科 阅读 0

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

最近有一位之前找过的用户问了我们小编的一个问题,我相信这也是很多币圈朋友经常会疑惑的问题:以太坊ethash算法相关问题,相关问题,带着这一个问题,让专业的小编告诉您原因。

待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此文集记录我的学习笔记。

课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。

第四课分为三部分:

这篇文章是第四课第一部分的学习笔记:Ethash算法。

这节课介绍的是以太坊非常核心的挖矿算法。

在介绍Ethash算法之前,先讲一些背景知识。其实区块链技术主要是解决一个共识的问题,而共识是一个层次很丰富的概念,这里把范畴缩小,只讨论区块链中的共识。

什么是共识?

在区块链中,共识是指哪个节点有记账权。网络中有多个节点,理论上都有记账权,首先面临的问题就是,到底谁来记帐。另一个问题,交易一定是有顺序的,即谁在前,前在后。这样可以解决双花问题。区块链中的共识机制就是解决这两个问题,谁记帐和交易的顺序。

什么是工作量证明算法

为了决定众多节点中谁来记帐,可以有多种方案。其中,工作量证明就让节点去算一个哈希值,满足难度目标值的胜出。这个过程只能通过枚举计算,谁算的快,谁获胜的概率大。收益跟节点的工作量上述文章内容就是,这就是工作量证明算法。

为什么要引入工作量证明算法?

Hash Cash 由Adam Back 在1997年发表,中本聪首次在比特币中应用来解决共识问题。

它最初用来解决垃圾邮件问题。

其主要设计思想是通过暴力搜索,找到一种Block头部组合(通过调整nonce)使得嵌套的SHA256单向散列值输出小于一个特定的值(Target)。

这个算法是计算密集型算法,一开始从CPU挖矿,转而为GPU,转而为FPGA,转而为ASIC,从而使得算力变得非常集中。

算力集中就会带来一个问题,若有一个矿池的算力达到51%,则它就会有作恶的风险。这是比特币等使用工作量证明算法的系统的弊端。而以太坊则吸取了这个教训,进行了一些改进,诞生了Ethash算法。

Ethash算法吸取了比特币的教训,专门设计了非常不利用计算的模型,它采用了I/O密集的模型,I/O慢,计算再快也没用。这样,对专用集成电路则不是那么有效。

该算法对GPU友好。一是考虑如果只支持CPU,担心易被木马攻击;二是现在的显存都很大。

轻型客户端的算法不适于挖矿,易于验证;快速启动

算法中,主要依赖于Keccake256 。

数据源除了传统的Block头部,还引入了随机数阵列DAG(有向非循环图)(Vitalik提出)

种子值很小。根据种子值生成缓存值,缓存层的初始值为16M,每个世代增加128K。

在缓存层之下是矿工使用的数据值,数据层的初始值是1G,每个世代增加8M。整个数据层的大小是128Bytes的素数倍。

框架主要分为两个部分,一是DAG的生成,二是用Hashimoto来计算最终的结果。

DAG分为三个层次,种子层,缓存层,数据层。三个层次是逐渐增大的。

种子层很小,依赖上个世代的种子层。

缓存层的第一个数据是根据种子层生成的,后面的根据前面的一个来生成,它是一个串行化的过程。其初始大小是16M,每个世代增加128K。每个元素64字节。

数据层就是要用到的数据,其初始大小1G,现在约2个G,每个元素128字节。数据层的元素依赖缓存层的256个元素。

整个流程是内存密集型。

首先是头部信息和随机数结合在一起,做一个Keccak运算,获得初始的单向散列值Mix[0],128字节。然后,通过另外一个函数,映射到DAG上,获取一个值,再与Mix[0]混合得到Mix[1],如此循环64次,得到Mix[64],128字节。

下面经过后处理过程,得到 mix final 值,32字节。(这个值在前面两个小节《 009:GHOST协议 》、《 010:搭建测试网络 》都出现过)

再经过计算,得出结果。把它和目标值相比较,小于则挖矿成功。

难度值大,目标值小,就越难(前面需要的 0 越多)。

这个过程也是挖矿难,验证容易。

为防止矿机,mix function函数也有更新过。

难度公式见课件截图。

根据上一个区块的难度,来推算下一个。

从公式看出,难度由三部分组成,首先是上一区块的难度,然后是线性部分,最后是非线性部分。

非线性部分也叫难度炸弹,在过了一个特定的时间节点后,难度是指数上升。如此设计,其背后的目的是,在以太坊的项目周期中,在大都会版本后的下一个版本中,要转换共识,由POW变为POW、POS混合型的协议。基金会的意思可能是使得挖矿变得没意思。

难度曲线图显示,2017年10月,难度有一个大的下降,奖励也由5个变为3个。

本节主要介绍了Ethash算法,不足之处,请批评指正。

以太坊的代币是通过采矿过程中产生的,每块采矿率为 5 个以太币。以太坊的采矿过程几乎与比特币相同,对于每一笔交易,矿工都可以使用计算机通过散列函数运行该块的唯一标题元数据,反复,快速地猜出答案,直到其中一人获胜。

许多新用户认为,采矿的唯一目的是以不需要中央发行人的方式生成醚(参见我们的指南“ 什么是以太? ”)。这是真的。以太坊的代币是通过采矿过程中产生的,每块采矿率为 5 个以太币。但是,采矿还有至少同样重要的作用。通常,银行负责保持交易的准确记录。他们确保资金不是凭空创造的,用户不会多次欺骗和花钱。不过,区块链引入了一种全新的记录保存方式,整个网络而不是中介,验证交易并将其添加到公共分类账。

Ethereum Mining

尽管“无信任”或“信任最小化”货币体系是目标,但仍有人需要确保财务记录的安全,确保没有人作弊。采矿是使分散记录成为可能的创新之一。矿工们在防止欺诈行为(特别是醚的双重支出)方面达成了关于交易历史的共识 – 这是一个有趣的问题,在分散化的货币未在工作区块链之前解决。虽然以太坊正在研究其他方法来就交易的有效性达成共识,但采矿目前将平台保持在一起。

挖矿如何工作

今天,以太坊的采矿过程几乎与比特币相同。对于每一笔交易,矿工都可以使用计算机反复,快速地猜出答案,直到其中一人获胜。更具体地说,矿工将通过散列函数(它将返回一个固定长度,乱序的数字和字母串,它看起来是随机的)运行该块的唯一标题元数据(包括时间戳和软件版本),只改变’nonce 值’ ,这会影响结果散列值。

如果矿工发现与当前目标相匹配的散列,矿工将被授予乙醚并在整个网络上广播该块,以便每个节点验证并添加到他们自己的分类账副本中。如果矿工 B 找到散列,矿工 A 将停止对当前块的工作,并为下一个块重复该过程。矿工很难在这场比赛中作弊。没有办法伪造这项工作,并拿出正确的谜题答案。这就是为什么解谜方法被称为“工作证明”。

另一方面,其他人几乎没有时间验证散列值是否正确,这正是每个节点所做的。大约每 12-15 秒,一名矿工发现一块石块。如果矿工开始比这更快或更慢地解决谜题,算法会自动重新调整问题的难度,以便矿工回弹到大约 12 秒钟的解决时间。

矿工们随机赚取这些乙醚,他们的盈利能力取决于运气和他们投入的计算能力。以太坊使用的具体工作量验证算法被称为’ethash’,旨在需要更多的内存,使得使用昂贵的 ASIC 难以开采 – 特殊的采矿芯片,现在是唯一可以盈利的比特币开采方式。

从某种意义上讲,ethash 可能已经成功实现了这一目的,因为专用 ASIC 不可用于以太坊(至少目前还没有)。此外,由于以太坊旨在从工作证明挖掘转变为“股权证明”(我们将在下面讨论),购买 ASIC 可能不是一个明智的选择,因为它可能无法长久证明有用。

转移到股权证明

不过,以太坊可能永远不需要矿工。开发人员计划放弃工作证明,即网络当前使用的算法来确定哪些交易是有效的,并保护其免受篡改,以支持股权证明,网络由代币所有者担保。如果并且当该算法推出时,股权证明可以成为实现分布式共识的一种手段,而该共识使用更少的资源。

简单的说挖矿就是通过计算机贡献的算力获得相应的回报,Ethash算法是基于一个大的、瞬时的、任意生成的、形成DAG(Dagger-part)的资料组规定,尝试解决它一个特定的约束,部分通过区块标题散列来决定

以太坊ethash算法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、以太坊ethash算法的信息别忘了在本站进行查找喔。

相关内容

关于以太坊ethash算法的信息文档下载.: PDF DOC TXT

猜你喜欢