文章目录: https://blog.csdn.net/u012391423/article/details/116136906
目录
一、什么是共识机制
二、CAP定理和FLP不可能性定理
1、CAP定理
2、FLP不可能定理
三、去中心化
1、去中心化分层
四、共识机制分类
1、POW
2、POS
3、DPOS
3.1、DPOS选举机制
4、PBFT 拜占庭容错算法
5、POI
6、POP
7、POOL验证池
五、总结
每一个了解学习区块链的童鞋,都应该或多或少的了解过"拜占庭将军"的问题,这也是我们叩开区块链大门的第一块砖。
其源自于图灵奖得主 莱斯利·兰波特 在其论文中提出的关于分布式对等网络中通讯容错的问题:在分布式的网络中,不同的计算机通过通讯交换信息达到共识一致,按照同一套策略执行,但是有时候,网络中的计算机会因为某种原因发送错误信息,发送通讯的网络也可能使消息发生损坏,使网络中关于共同策略得出不同的结论,从而破坏系统的一致性。
这也是区块链共识机制产生的根源,所谓共识就是在一个多方对等系统中,在某一时刻对某一个值达成一致。换句话说,任何系统的共识机制都要回答以下几个问题:
1、一个区块应该包含哪些信息(订单)
2、一个新区块何时产生
3、一个新区块由谁负责生产
4、如何升级共识机制
5、如何解决历史订单竞争的问题(分叉的问题)
共识机制就是要解决以上的问题,以保证系统的健壮性,防止攻击者试图获取网络的控制权,而获取了网络控制权,亦即是获取了对链上信息的审阅及编辑权限。
分布式系统中有两个已经明确的定理,CAP定理 && FLP不可能定理
在一个分布式系统中,Consistency(一致性)、Availability(可用性)、ParTITIon tolerance(容错性),三者只能取二,无法三者共存
一致性,要求系统中所有数据,在同一时刻达到一致。
可用性,要求系统在部分节点出现故障后,整个系统不会瘫痪,而您能正常运行
容错性,如果在一定时限内,系统内数据无法达成一致,那么需要在一致性和可用性之间斟酌一个平衡
在允许节点故障的前提下,纯粹异步的系统,无法在有限时间内达成一致。
FLP定理,明确在异步系统中,在有限时间内,无法达成一致;而CAP定理则要求我们在设计算法时,选择一个平衡点,是采用CP(高一致性)或者是采用AP(高可用性);
共识算法本身可以描述为在一个步骤中,让所有节点对某一个值达成一致,即使存在故障节点,整个系统也可以忽略这些噪音、或者将噪音的影响降到最低,以保证系统顺畅运行。
在一个中心化的系统中,共识是有中心点决定的,系统只需要接收中心的命令即可,这也是中心化系统高效的原因
而去中心化的系统中,所有节点都是对等的,当节点发生分歧时,就需要我们设计巧妙的共识机制或者算法,来保证系统的运行
我们无法确认一个系统是去中心化的,我们只能量化其去中心化程度。
比特币系统,被认为是去中心化的极致,但是事实是这样吗?
1、系统部署的去中心化,在现实世界中,基于docker等虚拟技术或应用此技术的云平台,以下三个问题是我们需要明确的:系统中有多少节点、部署在多少台物理机、分散在多少地区;我们部署去中心化的目的,就是为了减少同一时间发生故障的节点数量,就是为了分担风险,这和我们买保险是一样的。
2、系统逻辑上的去中心化,一个系统中有一种角色还是多种角色;由一台设备还是多种不同种类的设备构成。
3、系统治理的去中心化,针对一个区块链项目,有两个重要的权限控制:系统修改权限和系统数据权限
工作量证明机制 proof of work
基本原理,这是第一代的共识机制。是比特币的基础,借鉴了很多hashCash思想,理解起来非常简单 —— 按劳分配 , 多劳多得;在比特币的世界里,我们的劳务付出 , 就是算力 * 时长 , 我们提供这种服务的过程,俗称 "挖矿" 。
在pow系统中,有两种角色:工作者、验证者
对于生产者:
1、完成工作,必须有一定的工作量,这个量的大小由验证者给出
2、工作者不能自己创造工作,必须有验证者发布
3、工作者没有捷径可走
对于验证者:
1、可以迅速的验证工作量是否达标
优点:
1、去中心化,将记账权公平的分派到其他节点
2、安全性高,破坏系统需要投入几大的成本
3、以挖矿的方式发行新币,把新币分发给个人,实现先对公平
缺点:
1、能源消耗过大,造成资源浪费
2、算力集中化,挖矿有CPU / GPU / ASIC /矿场矿池 , 算力越来越集中,比特币系统也趋于中心化
3、网络性能低,比特币出块的时间是10分钟,交易确认需要经过6个块的累加,大概1小时左右
股权证明机制 (Proof of Stake)
1、源于点点币(PPC)的创新,去掉了挖矿的过程,摒除了比特币能源消耗的问题。在创世区块写明股权分配的机制,之后通过转让、交易(IPO)分散到用户手里;以利息的方式发行新币,实现对节点的奖励
2、简单来讲根据持有币的数量 、 持有币的时间 ,来发行新币的共识机制。就像现实生活中的股票或者银行存款,我们存款的金额越多、时间越长,获得利息(发行的新币奖励)也就越多
点点币、ADA爱达币、Nxt未来币、Qtum量子链、ETH 是pow和pos的综合应用
优点:
1、节能,不要挖矿,减少了能源损耗
2、去中心化程度更高。首先明确,去中心化是相对的。相对比特币,pow的算法,pos的共识机制,对硬件的要求更低,人人都可以持有币,获取利息。而不用担心算力集中的问题
3、避免紧缩的问题。比特币因为奖励减半的设计、用户的流失,有紧缩的风险。以利息方式的发行新币,假定 "利率" 恒定的情况下 , 货币的增量 , 也会保持一定的增速,符合经济的发展
缺点:
1、纯PoS机制的加密货币,只能通过IPO的方式发行,这就导致“少数人”(通常是开发者)获得大量成本极低的加密货币,在利益面前,很难保证他们不会大量抛售。
2、PoS机制的加密货币,信用基础不够牢固。
3、为解决这个问题,很多采用PoW+PoS的双重机制,通过PoW挖矿发行加密货币,使用PoS维护网络稳定。或者采用DPoS机制,通过社区选举的方式,增强信任。
Delegated proof of stake 授权股权证明机制
无人控制的网络系统,发行利润,并将利润分配给股东,具体规则硬编码到软件中,类似现实世界中的公司股份制,代表币种EOS
在dpos系统中,网络的正常运转依赖于受托人(Delegates),受托人的职责:
1、保证节点正常运行
2、打包、验证交易,出块
3、接收广播区块,将其他节点验证的区块,添加到自己的数据库
4、带领并促进区块链项目的发展
Dpos系统,算法要求系统的三件事:
1、随机指定生产者出场顺序,任何节点不能预生产区块
2、不按顺序生产的区块无效
3、每过一个大周期,重新排定顺序
优点:
1、能耗更低 , dpos机制将全节点减少至101个,在保证网络安全的前提下,能耗更低
2、更加去中心化,随着矿机及矿业的发展,pow机制的比特币,算力集中在几个大的矿场手中;pos机制的未来比,要求客户一直开着客户端,这是不显示的,结果和比特币类似,真正的网络节点由几个股东把持;dpos机制,选择101个代理节点,更加的去中心化;
3、更快的确认速度,dpos的记账权是不需要竞争的,而是根据一定规则的轮换,所以有更快的区块生成速度,一个块的时间是10秒,一笔交易在6个块后得到永久的确认,大概一分钟的时间,101个节点的大循环,也仅仅需要16分钟。
缺点:
1、投票的积极性比较低。投票需要时间、精力及技能的投入,针对大部分投资者,是不现实的。
2、对于坏节点,社区的选举不能实时的有效阻止,造成网络的安全隐患
拜占庭容错算法,以计算为基础,没有代币奖励,当网络节点稍微1/3的反对时,系统达成共识
优点:算法的可靠性有严格的证明,具备n-1/3的容错性
缺点:当系统大于等于1/3的节点,停止工作后,整个网络瘫痪
proof of importance 重要性证明。根据账户的重要性评分来分配记账权的概率
proof of Participation ,参与度证明,POI与DPOS的思想结合
这是标准链CZR的创新,基于账户参与数的算法,来分配记账权的概率。
低功耗、速度快,更加安全
基于传统的分布式一致性技术,加上数据验证机制。
优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
缺点:去中心化程度不如bictoin;更适合多方参与的多中心商业模式。
没有完美的共识机制,只有适合业务使用场景的最合适的共识机制
POW :按劳分配,实现相对公平
POS :类似于银行存款,获取利息。持有股权越多权利越大
DPOS :类似于董事会或者人民代表大会
PBFT :基于消息传递的一致性算法,经过与准备、准备、确认一致三个阶段
POI :POS变种 ,但是重要性来分配记账权,要了解的是 重要性和贡献度是两个概念
POP :依照参与度分配记账权。出块的速度可控,又能避免首富作恶的问题。小节点可以通过提升算力来获取更多的记账权
POOL : 国产的验证池,