以太坊共识算法是什么?ETH使用的共识协议介绍

新手教程1年前 (2022)更新 领域OK
189 0 0

以太共识算法是什么?

以太坊中设计了一套基于POW的Ethash共识算法。以太坊中共识设计的主要思想是设计一大一小的2个数据集,初始大小是:小:16M的cache 大:1G的dataset(DAG)

设计一大一小的目的是:大的数据集是小的cahce通过计算生成的,矿工为了能更快的挖矿只能保存大的dataset,以免重复计算耽误时间,而轻节点只需保存保存小的cache即可验证。

以太坊共识算法是什么?ETH使用的共识协议介绍

初始大小为16M,容量大小以后每30000个区块会更改一次。

通过Seed种子进行一些运算得到第一个数,之后在小cache中的每个数都是前一个数取哈希后得到的,一般轻节点存储此小cache。

大的数据集中的元素都是通过小的cahe计算得到的,小cache中通过伪随机顺序先得到一个位置的元素A的值,再通过A计算哈希得到B位置的值,循环迭代256次后得到了大数据集中的第一个元素,依次类推直到得到全部的DAG元素。

在以太坊中挖矿成功的条件跟比特币一样,找到一个nonce值,需要满足H(header) <= target.

尝试一个随机数nonce时,在大的DAG中,通过header及nonce计算出一个初始的哈希值映射到初始位置A,然后读取A位置元素和A的相邻后一个位置A’的元素,再通过(A和A’)计算出位置(B和B’),依次类推,迭代64次后,一共读取出128个数,最后计算这128个数的哈希值与目标值target比较,若满足<=target,则挖矿成功;否则重新尝试nonce。如下图所示:

以太坊共识算法是什么?ETH使用的共识协议介绍

整体的挖矿过程如下图所示:

以太坊共识算法是什么?ETH使用的共识协议介绍

验证过程跟比特币类似,给定一个nonce值,只需验证一次即可。

验证过程跟挖矿过程类似,对于全节点来说,在内存中保存了大的DAG,只需循环计算64次后得到最后的哈希值与目标值比较即可;对于轻节点来说,首先通过小的cache计算出大的DAG后再计算,后面过程跟全节点一样了。

ETH使用的共识协议介绍

以太坊共识机制共有四个阶段,即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矿机垄断,增强了去中心化能力。

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...