网站大量收购独家精品文档,联系QQ:2885784924

区块链课程13.共识层:PBFT共识算法.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编号: 时间:2021年x月x日 学海无涯 页码:第 PAGE 3页 共 NUMPAGES 13页 第 第 PAGE 1 页 共 NUMPAGES 1 页 区块链课程13.共识层:PBFT共识算法 区块链课程13.共识层:PBFT共识算法 PBFT算法Cuiting Shi, OneThing Tech LTD. Thursday, December 6, 2018 区块链课程13.共识层:PBFT共识算法 区块链课程13.共识层:PBFT共识算法 1. 背景 1 2. PBFT算法模型 3 2.1 基本概念 3 3. 三阶段协议 4 3.1 pre-prepare阶段 6 3.2 prepare阶段 7 3.3 commit 阶段 8 4. 算法优化 9 4.1 检查点协议 9 4.2 视图变更协议 11 4.2.1 维持计时器 11 4.2.2 请求视图变更 12 4.2.3 切换到新视图 13 5. PBFT算法应用 15 6.参考 16 1 区块链课程13.共识层:PBFT共识算法 2 区块链课程13.共识层:PBFT共识算法 1. 背景 通常情况下,分布式系统由很多节点组成,系统的可靠性要求系统必须具备应付异常节点发送过来的不一致消息的能力。分布式的这个场景最早由 Lamport,Shostak 和 Pease 于1982年形象地描述为拜占庭将军问题([1]Leslie Lamport 1982),即多个拜占庭将军各自率领了小分队驻扎在敌方城市之外,他们需要对是否进攻敌军达成统一的作战计划,但是这些将军之间存在反叛者,他们可能会篡改、延迟或者丢弃其他将军的命令,迷惑其他可信将军。拜占庭将军问题就是要找到一个算法来保证可信将军之间能够达成一致的作战计划。 Lamport他们证明了对于拜占庭将军问题,系统中如果存在f个不可信节点,那么只有总节点数不少于3f+1才存在一个算法解决该问题。下面我们来简单地证明这个问题解的不可能性,假设系统中总共有3个节点,Commander是提议者,记为C,Lieutenant 1 和Lieutenant 2 是验证节点,记为 LT1 和 LT2。这三个节点中存在一个作恶节点,下面我们证明在存在一个作恶节点的情况下,无论是提议者还是验证节点,系统均无法达成统一的共识。 如图1-1所示,假设 C 是作恶节点,另外两个节点是可信节点。C 向节点LT1和LT2发送了相互矛盾的命令—进攻和撤退,那么LT1在接收到C发送过来的进攻命令和LT2转发过来的命令撤退,那么它就无法确定是要进攻还是撤退。 图1-1 提议者是作恶节点 1 区块链课程13.共识层:PBFT共识算法 如图1-2所示,假设 LT2 是作恶节点,节点 C 和 LT1 是可信节点,C要求LT1和LT2进攻,但是LT2在转发C的命令给LT1的时候作假,告诉LT1它接收到C发过来的命令是撤退,那么LT1在就无法判断到底是要进攻还是撤退。 图1-2 Lieutenant 2 是作恶节点 从上述论证中我们可以直观地觉察到3个节点的情况下,即使只有一个作恶节点,也无法达成共识。但如果系统中多一个可信节点LT3,则LT1可以收到可信节点Commander发出的和LT3转发的进攻命令,即使LT2节点发出撤退命令,LT1也可以正确选择跟大多数节点一致的进攻命令,这样系统能达成共识。我们可以将这个结论进行推广,即对于存在f个作恶节点的分布式系统,当节点总数不超过3f的时候,是不存在一个可以达成共识的解的,严格的数学证明大家可以参考Lamport 另外一篇关于拜占庭错误的论文([2]M. Pease 1980)。 学者们陆续提出了解决该问题的拜占庭容错算法BFT,不是只能用于同步系统,就是性能太差,难以在生产环境中广泛运用。为了解决BFT的实际运用问题,MIT计算机实验室的Castro和Liskov于1999年在OSDI会议上提出了能够在异步网络环境中工作的PBFT算法([3]Miguel Castro 1999),在借鉴分布式系统的状态机复制和quorum的基础上设计了三阶段协议来解决一致性问题,同时引入了优化项,算法的复杂度由原来的指数级降低为多项式级别。下面我们会讲解PBFT算法的模型、算法流程、优化,其中算法流程即三阶段协议是PBFT算法的核心算法流程,是我们的重点讲解对象。 2 区块链课程13.共识层:PBFT共识算法 2. PBFT算法模型 PBFT算法本质上是一个状态机复制算法,能够用于实现带有状态和特定操作的任意确定性状态复制服务,它的目的是让所有的可信

文档评论(0)

baoding2020 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档