以太坊共识机制

以太坊采用的共识机制是什么_以太坊通缩机制_以太坊官网以太坊

图片来自简书App

1. 为什么以太坊需要共识机制?

在分布式系统中,多台主机通过异步通信形成一个网络集群。 在这样的异步系统中,需要在主机之间进行状态复制,以保证每台主机达成一致的状态共识。 在运行过程中,可能出现主机故障,导致通信失败,或者主机性能下降,网络拥塞,导致错误信息在系统内传播。 因此,需要在不可靠的异步网络中定义容错协议,以保证每台主机达成安全可靠的状态共识。

以太坊通缩机制_以太坊官网以太坊_以太坊采用的共识机制是什么

以太坊作为一种基于去中心化的分布式账本,同样需要解决在不可靠的网络中如何保证账本数据的一致性和正确性的问题。 这就是共识机制。

2、以太坊的主要共识机制有哪些?

以太坊有四个版本,Frontier、Homeworld、Metropolis 和 Tranquility。 从以太坊的规划来看,前三个版本采用的是共识机制POW,等到风平浪静的时候再转为POS。

(1) PoW(工作量证明)

以太坊官网以太坊_以太坊采用的共识机制是什么_以太坊通缩机制

比特币采用的共识机制也是PoW。 矿工将现有的尚未被记录在网络中的交易打包成一个区块,然后不断遍历并尝试寻找一个随机数,使新区块的哈希值和随机数满足一定的难度条件。 ,例如前 10 位为零。

找到一个满足条件的随机数,就相当于确定了区块链的最新区块,也相当于获得了区块链的本轮记账权。

矿工在网络中广播满足挖矿难度条件的区块。 在验证区块满足挖矿难度条件,区块中的交易数据符合协议规范后,将区块相互链接。 到自己的本地区块链,从而形成全网对当前网络状态的共识。

工作量证明算法的要点在于,要找到这样一个随机数以太坊采用的共识机制是什么,没有比枚举可能性更好的策略了,而且解的验证也非常简单。 由于输出具有均匀分布(作为应用哈希表函数的结果),我们可以保证,平均而言,找到这样一个随机数所需的时间取决于难度阈值。 这使得通过简单地操纵难度来控制寻找新区块的时间成为可能。

以太坊官网以太坊_以太坊采用的共识机制是什么_以太坊通缩机制

这种共识算法挖矿造成了很大的资源浪费; 挖矿的激励机制也造成矿池算力高度集中,背离了最初去中心化设计的初衷。 更大的问题是PoW机制的共识耗时较长,每秒只能完成7笔交易,不适合商业应用。

(2) PoS权益证明

以太坊目前处于第二阶段,即主场阶段,100%采用PoW挖矿。 从Homeland到Tranquility,从PoW到PoS,在这个过程中,以太坊通过难度炸弹的调整,防止以太坊被分成两条链,引导大家顺利过渡到PoS。 关于难度炸弹的详细讲解会在下一课介绍。

PoS 要求节点提供一定数量的代币证明来竞争区块链记账权。 但是,如果单纯由代币余额决定记账人,富人胜出,导致记账权中心化,降低共识的公平性。 因此,不同的PoS机制在权益证明的基础上采用不同的方式增加记账。 账户权限的随机性,避免中心化。

以太坊通缩机制_以太坊官网以太坊_以太坊采用的共识机制是什么

例如,可以根据持有货币的数量和时间来争夺记账权。 比如你持有100个币一共30天,那么此时你的币龄就是3000。 这时候如果你找到一个PoS区块,你的币龄就会被清空为0,每清空365个币龄,你就会从该区块中获得0.05个币龄的利息(可以理解为年利率为5%)。 比如你有365个币,如果年利率是1%,你每天得到的利息就是0.001个币。

以太坊计划采用基于存款的经济激励共识协议,我们称之为 Casper。 协议中的节点作为“绑定验证者”,必须先支付保证金才能参与区块生成和共识。 Casper 共识协议通过直接控制这些存款来约束验证者的行为。 具体来说,如果验证者做了任何 Casper 认为“无效”的事情,他的保证金将被罚款,出块和参与共识的权利也将被取消。 保证金的引入解决了“无风险”的问题,即经典POS协议中做坏事的成本低。 现在有一个价格,被客观证明做错事的验证者将付出这个代价。

以太坊 PoS 的共识机制仍在讨论中,因此 PoS 的具体细节可能要到静默阶段才能完全敲定。

三、以太坊的挖矿原理

以太坊采用的共识机制是什么_以太坊官网以太坊_以太坊通缩机制

以太坊目前的共识机制是PoW(Proof of Work工作量证明机制),使用的算法是Ethash,是Dagger-Hashimoto算法的改进版。 挖矿过程大致如下:

(1)对于每个区块,先计算一个种子以太坊采用的共识机制是什么,种子只与当前区块的信息相关,然后根据种子生成一个32M的随机数据集(Cache)。

(2) 根据随机数据集Cache生成一个1GB的数据集DAG(有向无环图),这是一个完备的搜索空间。 挖矿过程是从DAG中随机选择元素(类似于比特币挖矿Search for a suitable Nonce)然后进行hash运算,可以快速从Cache中计算出DAG指定位置的元素,然后进行hash确认。

这里要求周期性的更新Cache和DAG,每1000个block更新一次,并且规定DAG的大小随时间线性增长,从1G开始,每年增长7G左右。