上证指数 3342.01 -0.24%
|
深证成指 10365.73 -1.40%
|
恒生指数 22849.81 -1.52%
|
纳斯达克 15587.79 -5.82%
|
日经225指数 33780.58 -2.75%
|
Relay Bits 站内编辑
559 文章
364950 阅读
首页  >  要闻 >  区块链 >  正文
申请成为签约作者 >
共识:想说爱你不容易
2019年11月21日 02:00    
收藏  

为什么需要共识?

由于状态机具有决定性,为了使这些冗余的状态机具有一致的状态,每个状态机都必须依相同的顺序进行状态转换,因此每个状态机必须达成对转换顺序的共识。这些状态机组成一个网络,每个状态机都是网络中的节点,节点与节点间仅能透过通信交换信息以达成共识。

为什么共识这么难?

在只依赖通信便想达成共识的情境下,会碰到一个难解的问题,这也是在共识协定中一个著名问题:拜占庭将军问题。

一群拜占庭将军围攻一座城市,他们必须达成同时进攻或同时撤退的共识,且各将军只能透过信使将自己的决定通知其他人。然而,这群将军中有叛徒,可能会发出相反的信息干扰,或者只通知一部分的将军。在已知有叛徒存在的情况下,该如何达成正确的共识?

显然,状态机复制的共识问题可以被化约成拜占庭将军问题:

节点就是将军;

通信就是信使;

进攻/撤退的决策就是需达成共识的内容;

将军/状态机的随机行为称为拜占庭错误(Byzantine Fault);

叛徒/敌对状态机存在的情形下仍能达成共识的特性便称为拜占庭容错(Byzantine Fault Tolerance)。

共识有多难

正确的共识:安全性(Safety)与活跃性(Liveness)

一个正确、可用的共识协定必须确保拜占庭将军们一定会达成唯一的共识(安全性),且共识一定会形成(活跃性)。

共识一定可以达成吗?

具备安全性与活跃性的共识一定可以达成吗?答案是不一定。根据FLP原理:在非同步的网络通信及决定性的程序(Process)下,若出现任一个毁坏故障(Crash Fault),则共识不可能同时具备安全性与活跃性。

那怎么办?有两种方法可以绕过FLP原理的限制:第一种方法是假设网络通信是同步的——这就是PBFT所采用的方式;第二种方法是在共识协定中引入一些随机的因子,使整个协定变为非决定性的(Non-deterministic),这样做的优点是协定更强健,就算在非同步的网络通信下依然可以运作,例如Honey Badger BFT就是一个非同步且非决定性的共识。

效能如何?

在PBFT出现前,曾出现许多不同的共识协定,但是性能都不够好,直到PBFT的出现改变了一切,由其命名中的P(Practical)便能看出端倪。

币海启行微信公众号


点击关注币海启行微信公众号,了解更多

声明: 本文由入驻币海编者上传,观点仅代表编者本人,不代表币海财经赞同其观点或证实其描述,请自行判断。
延伸阅读
PBFT的特性之双基于
   Relay Bits        2019/11/22 02:00
PBFT如何保证安全性与活跃性?
   Leora        2019/11/22 01:00
PBFT如何运作?
   Leora        2019/11/21 04:00
拜占庭将军问题还没破,拜占庭容错又是什么鬼?
   Leora        2019/11/21 00:00