摘要:实用拜占庭容错系统降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别,使拜占庭协议在分布式系统中应用成为可能。
拜占庭容错系统简介
原始的拜占庭容错系统由于需要展示理论上的可行性而缺乏实用性。另外,算法的复杂度也是随节点的增加而呈指数级增加。实用拜占庭容错系统(Practical Byzantine Fault Tolerance, PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别,使拜占庭协议在分布式系统中应用成为可能。
什么是实用拜占庭容错系统实用拜占庭容错系统是一类“状态机”拜占庭系统(这里的状态机可以理解为“系统状态”,以区块链记账为例,系统每新增一个区块,账本就更新到一个新的状态。前面讲过,拜占庭容错系统是一个强一致性协议,每次记账后系统都会达成新的状态。),要求系统所有节点共同维护一个状态,所有节点采取的行动一致。
实用拜占庭容错系统需要运行三类基本协议:
一致性协议:解决如何达成共识
检查点协议:类似于操作系统的还原点
视图更换协议:系统的每个服务器节点在同样的配置信息下工作,该配置信息被称为“视图”。配置信息由主节点确定,主节点更换,视图也随之变化。
我们主要关注支持系统日常运行的一致性协议。
PBFT 的 一致性协议一致性协议至少包含请求(request)、序号分配(pre-prepare)、响应(reply)三个阶段。根据协议设计的不同,可能包含相互交互(prepare) 、序号确认(commit)等阶段。
PBFT系统通常假设故障节点个数为m个,而整个服务节点数为3m+1个。
上图显示了一个简化的 PBFT 的协议通信模式,其中C为客户端,N0~N3为服务节点,N0为主节点,N3为故障节点。协议的节本过程如下:
Request:客户端发送请求,激活主节点的服务操作
当主节点接收请求后,启动三阶段的协议以向各从节点广播请求
Pre-Prepare:主节点给请求赋值一个序列号n,广播序号分配消息和请求消息,并构造PRE-PREPARE消息给各从节点
Prepare:从节点接收PRE-PREPARE消息,并向其他服务节点广播PREPARE消息
Commit:各节点对视图内的请求和次序进行验证后,广播COMMIT消息,执行收到的客户端的请求并给客户端以响应
Reply:客户端等待来自不同节点的响应,若有m+1个响应相同,则该响应即为运算的结果
PBFT 演示在 n ≥ 3m + 1 的情況下一致性是可能解決的,其中,n为总节点数,m为恶意节点总数。我们模拟一下PBFT:
n = 4, m = 0
节点 | 得到数据 | 最终结果 |
---|---|---|
A | 1111 | 1 |
B | 1111 | 1 |
C | 1111 | 1 |
D | 1111 | 1 |
n = 4, m = 1
节点 | 得到数据 | 最终结果 |
---|---|---|
A | 1110 | 1 |
B | 1101 | 1 |
C | 1011 | 1 |
D | 0111 | 1 |
n = 4,m = 2
节点 | 得到数据 | 最终结果 |
---|---|---|
A | 1100 | NA |
B | 1001 | NA |
C | 0011 | NA |
D | 0110 | NA |
由此可以看出,实用拜占庭容错系统能够容纳将近1/3的拜占庭节点。
实用拜占庭容错系统在很多场景都有应用,在区块链应用中,一般适合于对强一致性有要求的私有链和联盟链场景。例如,在IBM主导的区块链超级账本项目中,实用拜占庭容错系统是一个可选的共识协议。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/24192.html
摘要:课程概述本课程适合希望开发自己的专有区块链的语言工程师,课程内容如下第一章课程简介简单介绍的定位特点以及对于开发者而言与以太坊的区别。课程地址区块链开发详解 简介 tendermint是一个开源的完整的区块链实现,可以用于公链或联盟链,其官方定位 是面向开发者的区块链共识引擎: showImg(https://segmentfault.com/img/remote/1460000016...
摘要:拜占庭故障是最严重最难处理的。在飞机发动机系统核电站和几乎所有行为取决于大量传感器结果的系统都需要拜占庭容错。前面提到的算法,只要叛徒的数量不超过将军的三分之一,就是拜占庭容错。 showImg(https://segmentfault.com/img/bV6WtE?w=1080&h=870);区块链本质上是去中心化的系统,由不同的成员计算机组成,这些成员的行为取决于它们的动机和它们可...
摘要:区块链系统首先是一个分布式系统,分布式系统的核心问题包括一致性共识一致性问题一致性问题是分布式领域最为基础也是最重要的问题。算法与算法问题是指分布式系统中存在故障,但不存在恶意节点的场景即可能消息丢失或重复,但无错误消息下的共识达成问题。 区块链系统首先是一个分布式系统,分布式系统的核心问题包括一致性、共识 一致性问题 一致性问题是分布式领域最为基础也是最重要的问题。如果分布式系统能实...
摘要:以太坊基金和以及在一起积极研究一个安全的去中心化的股权证明协议。总结在本文中,我们讨论了工作量证明和股权证明,它们是实现了拜占庭容错的共识算法,并在当今的区块链系统中得到实际应用。 在第一部分中,我们讨论了拜占庭将军问题、如何实现拜占庭容错以及他们与区块链的关系。 在上一篇文章中提到的算法实际上就是实现拜占庭容错的解决方案。但是,那个解决方案还不够有效率,它的变型也是有限制的,即不到三...
摘要:比特币和以太币属于一类区块链,我们将其归类为公共无许可的区块链技术。例如,在单个企业中部署时,或由受信任的权威机构运作,完全拜占庭容错的共识可能被认为是不必要的,并且对性能和吞吐量造成过度的拖累。 介绍 一般而言,区块链是一个不可变的交易分类账,维护在一个分布式对等节点网络中。这些节点通过应用已经由共识协议验证的交易来维护分类帐的副本,该交易被分组为包括将每个块绑定到前一个块的散列的块...
阅读 2571·2023-04-25 17:33
阅读 650·2021-11-23 09:51
阅读 2953·2021-07-30 15:32
阅读 1400·2019-08-29 18:40
阅读 1943·2019-08-28 18:19
阅读 1467·2019-08-26 13:48
阅读 2239·2019-08-23 16:48
阅读 2277·2019-08-23 15:56