美文网首页
区块链中的共识算法

区块链中的共识算法

作者: 种花家的码农 | 来源:发表于2021-11-08 15:35 被阅读0次

POW:Proof of Work,工作量证明。
俗称挖矿,比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。POW通过算力证明自己有资格写区块链。

POW算法的优点:完全去中心化;节点自由进出;安全性高。

POW算法的缺点:记账权向资本集中(与算力相关);挖矿造成大量的资源浪费;网络性能太低,需要等待多个确认,容易产生分叉,区块的确认共识达成的周期较长,不适合商业应用。

POS:Proof of Stake,权益证明。
POS:也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息,等比例的降低挖矿难度。
简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息(利息币,即持有人可以消耗币龄获得利息,同时获得为网络产生区块以及POS造币的优先权)。POS通过拥有的币龄来证明自己有资格写区块链。

POS算法的优点:不消耗大量算力挖矿,节省能耗;在一定程度上缩短了共识达成的时间;防作弊。

POS算法的缺点:本质上仍然需要挖矿,未解决商业应用的痛点;极端情况下会带来中心化的结果。

DPOS:Delegated Proof of Stake,代理(委任)权益证明
比特股(Bitshare)的DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),是在POW及POS基础上诞生的一种新型共识算法,2014年4月由Bitshares的首席开发者Dan Larimer提出并应用,通过引入一个技术民主层来减少中心化的负面影响。DPOS既能解决POW在挖矿过程中产生的大量能源过耗的问题,也能避免POS权益分配下可能产生的信任天平偏颇的问题。它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。普通的持币者可以随时通过投票更换超级节点(矿池)。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们(虽然DPOS系统因超级节点的存在,似乎仍然存在中心化,但这种中心化是受到控制的,超级节点是由普通持币者选举产生。DPOS通过保留持币者的控制权,从而使系统去中心化)。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

DPOS算法的优点:能耗优势,网络运行成本低;理论上更加去中心化;较快的确认速度(出块速度秒级,交易确认分钟级)。

DPOS算法的缺点:坏节点不能被及时处理,只有经过选举才能清除坏节点;小散投票积极性不高;依赖代币。

拜占庭将军问题(Byzantine Generals Problem)是Leslie Lamport(2013年的图灵奖得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。

BFT:Byzantine Fault Tolerance,拜占庭容错算法
拜占庭容错是分布式计算领域的容错技术,来源于拜占庭将军问题模型。拜占庭容错系统是一个拥有n台节点的系统,整个系统对于每一个请求,满足以下条件:
A. 所有非拜占庭节点使用相同的输入信息,产生同样的结果;
B. 如果输入的信息正确,那么所有非拜占庭节点必须接收这个信息,并计算相应的结果。
拜占庭系统普遍采用的假设条件包括:
A、拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;
B、节点之间的错误是不相关的;
C、节点之间通过异步网络连接,网络中的信息可能丢失、乱序并延时到达,但大部分协议假设消息在有限的时间里能传达到目的地;
D、服务器之间传递的信息,第三方可以嗅探到,但是不能篡改、伪造信息的内容和验证信息的完整性。
原始的拜占庭容错系统由于需要展示其理论上的可行性而缺乏实用性。另外,还需要额外的时钟同步机制支持,算法的复杂度也是随节点增加而指数级增加。

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法
PBFT是最常用的BFT共识机制,该算法是Miguel Castro和Barbara Liskov在1999年提出 来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由节点数的指数级降低到节点数的平方级,使得拜占庭容错算法在实际系统应用中变得可行。PBFT算法可以在失效节点不超过总数1/3的情况下同时保证Safety和Liveness。PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。旨在让系统中大部分的诚实节点来覆盖恶意节点或无效节点的行为。
将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。所有的副本在一个被称为视图(View)的轮换过程中运作。在某个视图中,一个副本作为主节点(primary),其它的副本节点作为备份节点(backups)。视图是连续编号的整数。主节点由公式p = v mod |R|计算得到,v是视图编号,p是副本编号,|R|是副本集合的个数。当主节点失效的时候就需要启动视图轮换过程。

PBFT算法采用密码学相关技术(RSA签名算法、消息验证编码和摘要)确保消息传递过程无法被篡改和破坏。

PBFT算法的优点:

PBFT算法具有高交易通量和吞吐量,高可用性,易于理解。

PBFT算法存在的问题:

计算效率依赖于参与协议的节点数量,不适用于节点数量过大的区块链,系统扩展性差。
系统节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私有链环境。
要求总节点数n>=3f+1(其中,f代表作恶节点数)。系统的失效节点数量不得超过全网节点的1/3,容错率相对较低。
PBFT算法的应用场景:
PBFT算法的节点数量是固定的,节点身份提前确定,无法动态添加或删除,只能适用于节点数目固定的联盟链或私有链场景中。在区块链场景中,一般适合于对强一致性有要求的私有链和联盟链场景,但如果能够结合DPOS节点代表选举规则,也可以应用于公有链,并且可以在一个不可信的网络里解决拜占庭容错问题。
DBFT:Delegated Byzantine Fault Tolerance,代理拜占庭容错算法
考虑到BFT算法存在的扩容性问题,NEO采用了一种代理拜占庭容错算法——DBFT,它与EOS的DPOS共识机制一样,由权益持有者投票选举产生代理记账人,由代理人验证和生成区块,以此大幅度降低共识过程中的节点数量,解决了BFT算法固有的扩容性问题。

DBFT的优点一方面是效率高,如NEO每15~20秒即可生成一个区块,交易吞吐量可达到约1000TPS(每秒处理的交易数),通过适当优化,性能可达10000TPS;另一方面是其良好的最终性,区块不会分叉,以此来验证参与者的身份,保护网络安全,使区块链能够适用于对交易确认实时性要求高的真实金融场景。
DBFT的缺点也不容忽视,一方面体现在较低的容错率,当有1/3或以上超级节点为恶意节点或宕机后,系统将无法提供服务;另一方面体现在超级节点数量过少,中心化程度高。

PS: 《大话区块链》笔记二

相关文章

  • 12/666[小屋]主流共识算法的初研

    共识算法是所有区块链的基础,是区块链中最重要的部分,但也是区块链中最难理解的一部分。攻克了共识算法,就攻克了区块链...

  • 什么是软支付网络,易付链帮你解答

    在现有区块链技术中,区块链的处理能力主要受制于共识算法的性能,而共识算法性能又受制于系统节点的规模和单节点的处理能...

  • 2018-07-18 易付链——软支付网络是什么?

    在现有区块链技术中,区块链的处理能力主要受制于共识算法的性能,而共识算法性能又受制于系统节点的规模和单节点的处理能...

  • 99%的人都可能不知道的共识算法!

    在区块链的交流和学习中,「共识算法」是一个很频繁被提起的词汇,正是因为共识算法的存在,区块链的可信性才能被保证。 ...

  • 什么是 VRF

    在区块链系统中,共识算法很重要的一个职责,就是确定哪个节点拥有记账权。 在基于 POW 共识的区块链系统中,矿工通...

  • 读《区块链社会》第一章—区块链:(PoW、PoS、DPoS、Po

    第一章—区块链:信任的机器 六、区块链的共识机制 区块链通过数学共识机制是非对称加密算法,即在加密和解密的过程中...

  • 共识算法指南:什么是共识机制?

    这个共识算法指南着眼于一个常见的问题,什么是共识机制,以及为什么区块链需要共识机制。 介绍区块链 区块链技术被广泛...

  • PBFT读书笔记

    论文: Practical Byzantine Fault Tolerance PBFT及其变种在区块链共识算法中...

  • 007.认识区块链(三)-共识算法

    共识算法就是指让区块链内容所有人区块认可新增的区块。目前有两种比较核心的共识算法:异步拜占庭共识模型(BTF共识模...

  • 无标题文章

    区块链共识机制浅谈 - Jeffrey__Zhou的博客 - CSDN博客:文章介绍了区块链各共识机制的核心算法,...

网友评论

      本文标题:区块链中的共识算法

      本文链接:https://www.haomeiwen.com/subject/osguzltx.html