-->-->
收藏本页
返回顶部

币海首页> 要闻资讯 > 文章

共识:想说爱你不容易

来源:Medium     转载 · Relay Bits   2019-11-21 10:00 星期四
币海网微博
微信扫一扫

为什么需要共识?

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

为什么共识这么难?

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

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

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

节点就是将军;

通信就是信使;

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

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

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

共识有多难

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

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

共识一定可以达成吗?

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

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

效能如何?

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

币海启行微信公众号

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

版权信息
来源:Medium
版权:转载
原文链接:https://www.bihai123.com.cn/news/zhuanlan/69635.html
作者:Juin Chiu
编译发布:Relay Bits
声明:
此文为转载内容,不代表币海启行网的观点和立场,仅供参考。

相关文章

用户评论 (0)

0/140