Castro, Miguel, and Barbara Liskov. “Practical Byzantine fault tolerance.” OSDI.Vol.99.1999.

A. Problem Statement

The paper targets the problem of the original Byzantine fault-tolerant algorithm is not efficient. Particularly, how to do proof-of-work and how to guarantee the correctness of the system in the case of less than one-third of the evil nodes?

B. Problem Significance

The most important of the blockchains is the consensus algorithm. Bitcoin uses POS (Proof of Work). However, for the license chain or private chain that does not require a monetary system but has an effective demand, the traditional PBFT (Practical Byzantine Fault Tolerance) algorithm becomes the first choice. For the first time, compared to the original BFT algorithm, the algorithm reduces the complexity from exponential to polynomial, making the Byzantine-faulttolerant algorithm feasible in practical system applications.

C. State of the Art

PBFT has five phases: request, pre-prepare, prepare, commit and reply. A brief hypothesis is explained below, assuming there are 4 servers: server 0, server 1, server 2, server 3.
Request: the requester C sends a request to any node.
Pre-prepare: after receiving the request from C, the server 0 broadcasts and spreads to server 1, server 2, server 3.
Prepare: server 1, server 2, server 3, after receiving the record and broadcasting again, server 1 broadcasts to server 0, server 2, server 3, server 2 broadcasts to server 0, server 1, server 3, server 3 because of the downtime cannot broadcast.
Commit: The server 0, server 1, server 2, server 3 is in the Prepare phase if more than a certain number of identical requests are received, the Commit phase is entered, and the Commit request is broadcast.
Reply: The server 0, server 1, server 2, server 3 in the Commit phase if more than a certain number of identical requests are received, feedback is given to C.
Why does it have a commit phase? The Commit phase is used to ensure that other nodes have received enough information to reach a consensus. The Commit phase does not send a consent to disagree with the request as the Prepare phase, only to detect if there is enough commit type information. Because in the Prepare phase, other nodes are not sure that enough consent information has been received and should not be written to the new block from the perspective of data validation. At this time, if a view change occurs, the request of the prepare phase is discarded.
Why does it have a commit phase? The Commit phase is used to ensure that other nodes have received enough information to reach a consensus. The Commit phase does not send a consent to disagree with the request as the Prepare phase, only to detect if there is enough commit type information. Because in the Prepare phase, other nodes are not sure that enough consent information has been received and should not be written to the new block from the perspective of data validation. At this time, if a view change occurs, the request of the prepare phase is discarded.

D. Contributions

This paper describes a state machine replication algorithm that solves the Byzantine-fault-tolerance problem. This algorithm provides (n-1)/3 fault tolerance under the premise of ensuring liveness and safety, n is the number of the nodes. The author believes that the PBFT algorithm will become more important as malicious attacks and software errors will occur more and more, and the failed nodes will behave arbitrarily. Any behavior of these nodes may mislead other replica nodes to cause greater harm, rather than just downtime to lose response. Early Byzantine fault-tolerant algorithms or assumptions based on synchronous systems were too low to operate in real systems. The algorithm described in this paper is practical because it works in an asynchronous environment and improves response performance based on early algorithms. The author used this algorithm to implement the Byzantine Fault Tolerant Network File System (NFS), and performance tests proved that the system was only 3% slower than the standard NFS without copy replication.
Beginning with the introduction of the Byzantine issue in 1982 by Professor Lamport, there have been a number of algorithms to solve Byzantine-fault-tolerance. The PBFT algorithm is completely different from these algorithms. In the read-only operation, only one message round trip is used. In the write-only operation, only two message round-trips are used, and the Message Authentication Code is used in normal operations, the public-key cryptography that caused the performance of the previous algorithm to be inferior was only used in the event of a failure. The author not only proposes an algorithm but also uses this algorithm to implement a powerful system (NFS).
Sum up the contributions of the paper here:

  1. First proposed to use the state machine replica replication protocol in an asynchronous network environment
  2. Use a variety of optimizations to significantly improve performance
  3. Implementing a Byzantine-fault-tolerant distributed file system
  4. Provide experimental data support for performance loss of copy replication

E. Remaining Questions

Does the PBFT algorithm has poor scalability in a blockchain system with too many nodes? Is it only suitable for the alliance chain? But combined with the content of the class, I think the basis of the Byzantine-fault-tolerant algorithm works for a large number of nodes. If there are too few nodes, it will easily break through to 51% of the cheat nodes. The advantage of “a large number of nodes + computing power” is tailored for the future public chain. Is that right?

读书笔记(四)--PBFT相关推荐

  1. 《关键对话——注意观察,如何判断对话氛围是否安全》读书笔记(四)

    <关键对话--注意观察,如何判断对话氛围是否安全>读书笔记(四) 在对话过程中,既要关注对话内容(即讨论的主题),也要观察对话气氛(即参与者的反应).越早意识到你和对方退出了对话机制,就越 ...

  2. 《编程之美》读书笔记(四): 卖书折扣问题的贪心解法

    <编程之美>读书笔记(四):卖书折扣问题的贪心解法 每次看完<编程之美>中的问题,想要亲自演算一下或深入思考的时候,都觉得时间过得很快,动辄一两个小时,如果再把代码敲一遍的话, ...

  3. 3d游戏设计读书笔记四

    3d游戏设计读书笔记四 一.基本操作演练[建议做] 下载 Fantasy Skybox FREE, 构建自己的游戏场景 a. 在AssetStore中搜索Fantasy Skybox FREE并下载. ...

  4. 《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

    来源:http://www.cnblogs.com/edisonchou/p/3809839.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  5. 《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件

    前面两篇文章介绍了淘宝的发展历程.Java时代的变迁和淘宝开始创新技术:              <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源              &l ...

  6. 《李元芳履职记》读书笔记四 (完结)

    决策不能拍脑袋 管理者不仅仅依靠"拍脑袋"进行决策,而是要用科学的方法加以指导: (决策流程) 工作分派就该这样做 管理者在分派下属工作时,不能"随性",而应该 ...

  7. MDX Step by Step 读书笔记(四) - Working with Sets (使用集合)

    1. Set  - 元组的集合,在 Set 中的元组用逗号分开,Set 以花括号括起来,例如: {([Product].[Category].[Accessories]),([Product].[Ca ...

  8. 读书笔记四 高级光照PBR

    微表面模型参考资料:https://blog.uwa4d.com/archives/Study_PBR.html 更精确的微表面模型GGX参考资料:https://blog.uwa4d.com/arc ...

  9. 转~MDX Step by Step 读书笔记(四) - Working with Sets

    查阅我的其它有关 MDX 的学习笔记 - <<Microsoft SQL Server 2008 MDX Step by Step>> 学习笔记连载目录 1. Set  - 元 ...

  10. 《大型网站技术架构》-读书笔记四:高可用架构

    一.网站可用性的度量与考核 1.可用性度量:通常用多少个9来形容网站的可用性 2.可用性考核:可用性指标是网站架构设计的重要指标,对外是服务承诺,对内是考核指标.  二.高可用的网站架构 三.高可用的 ...

最新文章

  1. windows定时关机
  2. 如何将一个集合里的对象进行计算再排序
  3. 分布式01-Dubbo基础背景
  4. Android六边形图像
  5. python pdf转word 表格_太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!
  6. 如何让li中内容超出部分显示为...?
  7. paip.提升用户检验-----列表摘要
  8. inode服务器与响应,inode客户端服务器下线请求和
  9. QTcpSocket
  10. Mac 解压rar格式文件(附解压工具包)
  11. 网络相册(只能本地)
  12. AI开发者被疯抢,华为做了什么?
  13. vue 项目中实现pdf预览 pdf打印 pdf下载
  14. delphi(XE2)实现图片异形窗体,支持摆放控件
  15. 阿西莫夫科幻巨著 “基地三部曲”推荐
  16. 苹果11计算机怎么打开语音,iPhone11怎么打开Siri 语音唤醒方法介绍
  17. 用成员函数和友元函数重载运算符
  18. 乌镇AI论坛最全盘点:中国互联网半壁江山坐在了一起,他们怎么看AI
  19. PCB设计常见问题1-20例
  20. SQL SERVER中的游标

热门文章

  1. Android 后台服务(Service)
  2. JZOJ 5353. 村通网
  3. 怎么给照片添加马赛克?这些方法值得收藏
  4. Scratch中的坐标系
  5. vue router meth的2个属性: keepAlive 、deepth
  6. STM32物联网通讯GPRS
  7. 逻辑式编程语言极简实现(使用C#) - 1. 逻辑式编程语言介绍
  8. 个人第一篇博客——自我介绍
  9. mybatis内用大于号小于号
  10. AGBT:将代数图和双向transformer用于分子性质预测 | 彩色加权代数图 | transformer的encoder | AG-FP | BT-FP