以太坊中设计了一套基于POW的Ethash共识算法。以太坊中共识设计的主要思想是设计一大一小的2个数据集,初始大小是:小:16M的cache 大:1G的dataset(DAG)
设计一大一小的目的是:大的数据集是小的cahce通过计算生成的,矿工为了能更快的挖矿只能保存大的dataset,以免重复计算耽误时间,而轻节点只需保存保存小的cache即可验证。
大小数据集的生成原理
1.小cache:
初始大小为16M,容量大小以后每30000个区块会更改一次。
通过Seed种子进行一些运算得到第一个数,之后在小cache中的每个数都是前一个数取哈希后得到的,一般轻节点存储此小cache。
2.大DAG:
大的数据集中的元素都是通过小的cahe计算得到的,小cache中通过伪随机顺序先得到一个位置的元素A的值,再通过A计算哈希得到B位置的值,循环迭代256次后得到了大数据集中的第一个元素,依次类推直到得到全部的DAG元素。
3.挖矿过程
在以太坊中挖矿成功的条件跟比特币一样,找到一个nonce值,需要满足H(header) <=target.
尝试一个随机数nonce时,在大的DAG中,通过header及nonce计算出一个初始的哈希值映射到初始位置A,然后读取A位置元素和A的相邻后一个位置A8217;的元素,再通过(A和A’)计算出位置(B和B’),依次类推,迭代64次后,一共读取出128个数,最后计算这128个数的哈希值与目标值target比较,若满足<=target,则挖矿成功;否则重新尝试nonce。如下图所示:
整体的挖矿过程如下图所示:
4.验证过程
验证过程跟比特币类似,给定一个nonce值,只需验证一次即可。
验证过程跟挖矿过程类似,对于全节点来说,在内存中保存了大的DAG,只需循环计算64次后得到最后的哈希值与目标值比较即可;对于轻节点来说,首先通过小的cache计算出大的DAG后再计算,后面过程跟全节点一样了。
以太坊共识机制共有四个阶段,即Frontier(前沿)、Homestead(家园)、Metropolis(大都会)、Serenity(宁静)。以太坊前三个阶段采用的是POW共识机。第四个阶段将采用自己创建的POS机制,名为Casper投注共识,这种机制增加了惩罚机制,并基于POS的思想在记账节点中选取验证人。
POW即工作量证明,是比特币系统中采用的共识机制。(本文主要讲解以太坊的共识机制)
谈起Casper投注共识,要先说POS。POS即权益证明,主要特点以权益证明代替工作量证明,由具有最高权益的节点实现新块加入和获得激励收益。POS共识是为解决POW共识机制的资源浪费和安全性缺陷而提出的替代方案。它的本质是采用权益证明来代替POW中的基于哈希算力的工作量证明,是由系统中具有最高权益而非最高算力的节点获得区块记账权。权益体现为节点对特定数量货币的所有权,称为币龄或币天数(Coindays)。
币龄是特定数量的币与其最后一次交易的时间长度的乘积,每次交易都将会消耗掉特定数量的币龄。例如某人在一笔交易中收到10个币后并持有10天,则获得100币龄;而后其花掉5个币后则消耗掉50币龄,显然采用POS共识机制的系统在特定时间点上的币龄总数是有限的,长期持币者更倾向于拥有更多币龄,因此币龄可视为其在POS系统中的权益。
投注共识是以太坊下一代的共识机制Casper(鬼马小精灵)引入的一个全新概念,属于POS。Casper的共识是按区块达成的,而不像POS那样按链达成。
为了防止验证人在不同的世界中提供不同的投注,还有一个简单严格的条款:如果你两次的投注序号一样,或者说你提交了一个无法让Casper依照合约处理的投注,你将失去所有保证金。从这一点可以看出,Casper与传统的POS不同的是,Casper有惩罚机制,这样非法节点通过恶意攻击网络不仅得不到交易费,而且还面临着保证金被没收的风险。
Casper协议下的验证人需要完成出块和投注两个活动。具体如下:
出块是一个独立于其他所有时间而发生的过程,验证人收集交易,当轮到他们的出块时间时,他们就制造一个区块,并签名,然后发送到网络上。投注的过程更为复杂一些,目前Casper默认的验证人策略被设计为模仿传统的拜占庭容错共识:观察其他的验证人如何投注,取33%处的值,向0或1进一步移动。
而客户端确认当前状态的过程是这样的:一开始先下载所有的区块和投注,然后用上面的算法来形成自己的意见,但是不公布意见;它只是简单地按顺序在每个高度进行观察,如果一个区块的概率高于0.5就处理它,否则就跳过它。在处理所有的区块之后,所得到的状态就可以显示为区块链的当前状态”。
总之,ethash基本思路和比特币的pow类似,都是不断随机nonce得到的值与难度进行比较,满足条件则挖矿成功,否则继续尝试。与比特币比拼cpu算力不同的是,ethash通过生成一个巨大的数据集,通过限制内存来防止具备强大算力的ASIC矿机垄断,增强了去中心化能力。
以上就是以太坊共识算法是什么?ETH使用的共识协议介绍的详细内容,更多关于以太坊共识算法知识分享的资料请关注币大师其它相关文章!
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/qukuai/115859.html