老K漫谈区块链的共识(3)——分布式系统和区块链共识

1. 啥是分布式系统

当咱们评价一个新的事物或者介绍一个新的技术的时候,咱们不能架空历史和环境,新的事物不可能脱离历史和环境凭空诞生。任何新的事物和新的技术老是或多或少的,与旧的事件以及过去的技术有所关联,或是他们的衍生品。因此咱们谈到区块链共识的时候,就须要从计算机专业中的分布式系统来说起,由于区块链说来讲去,它也只是分布式系统中的一类而已。算法

分布式系统在计算机领域中定义为:组件分布在联网的计算机上,组件经过传递消息进行通讯和动做协调的系统。这里的组件能够粗略的认为就是一个软件,或者某个软件的可独立运行的一部分。这里面隐含的说明了分布式系统的三个特征:组件的并发行,缺少全局时钟、组件故障的独立性。咱们区块链既然是一种分布式系统,这三个特征也都是存在的。咱们常常说区块链的系统中没有一个同一的时间,区块链应用没法得到一个当前的时间,这就是分布式系统的特征之一,缺少全局时钟。服务器

分布式系统几乎无所不在,从信息领域来讲,Google的服务器集群,咱们当今的互联网和移动互联网,大型的多人在线游戏,银行的金融交易系统以及咱们的区块链系统等等,无一例外都是分布式系统,如今还能找到不处于某个分布式系统的计算机么?不多!而咱们身边的生活场景中,也是存在不少的分布式系统,跨地理区域的全国投票选举,地理分布的多个朋友协商聚会,一个蚁群中多个蚂蚁相互通知食物的位置等等。网络

2. 啥是分布式系统的共识

分布式系统对外能够提供统一的服务。在这里,若是想让分散在不一样计算机的组件协调起来,咱们须要有一个机制可以协调这些组件,咱们把这个机制叫作分布式系统的共识,区块链的共识是咱们分布式系统共识的一种。并发

3. 关于分布式系统的分类

分布式系统中的概念很是多,在这里面咱们介绍和区块链共识相关的两组概念。第一组概念是同步和异步,咱们能够把分布式系统按照同步和异步分红两类。对于同步的分布式系统,咱们描述为处于分布式系统的不一样计算机之间通讯,消息不丢失并且秒到,也就是说通讯即快而可靠。而异步的分布式系统是通讯不可靠,分布式系统中的不一样计算机之间相互发送消息,消息有延迟并且也可能丢失。咱们能够认为咱们的内部局域网是一个同步系统,大的互联网是一个异步系统,前者通讯无延迟且可靠,后者通讯慢并且消息可能丢失。异步

第二组和区块链共识相关的分布式系统概念是拜占庭容错(BFT,Byzantine Fault Tolerant),便可以容忍拜占庭错误(BF, Byzantine Fault)的分布式系统共识(即便存在拜占庭错误,分布式系统还能够正常工做),所谓的拜占庭错误,即分布式系统中的计算机(节点)不但有可能产生故障还有可能产生错误。这里故障只是不响应或者停机,而错误是指计算机(节点)有可能发送错误的消息。咱们也能够理解为两军对战,其中一方出现了叛徒,出现叛徒的一方的问题就定义为拜占庭错误。因此咱们能够从这个角度把分布式系统来分为:拜占庭容错的分布式系统和非拜占庭容错的分布式系统。分布式

咱们从上面的两组概念中能够把分布式系统划分为如下四类:区块链

分布式系统类型 同步 异步
拜占庭容错 同步拜占庭容错 异步拜占庭容错
非拜占庭容错 同步的非拜占庭容错 异步的非拜占庭容错

4. 回到正题:区块链共识

若是咱们想按照上面的分布式系统分类来划分区块链的话,咱们能够把区块链简单的划分为一种异步的拜占庭容错的分布式系统。为何是拜占庭容错的分布式系统,是由于区块链中是假设参与的计算机或者节点是有坏人的,它们会发错误消息和假消息,因此区块链中是存在拜占庭错误的,能够推出区块链是一个拜占庭容错的分布式系统。固然因为区块链是分布在咱们的互联网上,按照上面的定义咱们认为互联网是一个异步分布式系统,因此区块链也是一个异步分布式系统。spa

5. 题外话:关于异步分布式系统的共识

关于异步式分布式系统的共识,有这样一个基础的结论,FLP不可能原理。是在1985年由Fischer, Lynch 和 Patterson三位计算机科学家,提出了一个FLP不可能原理:“在网络可靠的前提下,任意节点失效,一个或者多个的最小化异步模型系统中,不可能存在一个解决一致性问题的肯定性算法。即若是存在任意节点失效的状况下,就没法彻底保证分布式系统能够达到同步”。咱们能够理解为认为彻底异步的分布式系统是没法达到共识的。因此咱们区块链的共识机制或多或少的对异步式分布式系统加了一些限制条件,好比pBFT共识算法,它假设节点之间消息节点有延迟,可是在有限时间内是能够达到的。因此咱们区块链为了达到共识,也是有一点限制条件的异步分布式系统。游戏

相关文章
相关标签/搜索