Skip to content

【转】联盟链的共识算法

转自:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/consensus/index.html

区块链系统通过共识算法保障系统一致性。 理论上,共识是对某个提案(proposal)达成一致意见的过程,分布式系统中提案的含义十分宽泛,包括事件发生顺序、谁是leader等。区块链系统中,共识是各个共识节点对交易执行结果达成一致的过程。

共识算法分类

根据是否容忍 拜占庭错误 ,共识算法可分为容错(Crash Fault Tolerance, CFT)类算法和拜占庭容错(Byzantine Fault Tolerance, BFT)类算法:

  • CFT类算法 :普通容错类算法,当系统出现网络、磁盘故障,服务器宕机等普通故障时,仍能针对某个提议达成共识,经典的算法包括Paxos、Raft、Kafka等,这类算法性能较好、处理速度较快、可以容忍不超过一半的故障节点;
  • BFT类算法 :拜占庭容错类算法,除了容忍系统共识过程中出现的普通故障外,还可容忍部分节点故意欺骗(如伪造交易执行结果)等拜占庭错误,经典算法包括PBFT等,这类算法性能较差,能容忍不超过三分之一的故障节点。

FISCO BCOS共识算法

FISCO BCOS基于多群组架构实现了插件化的共识算法,不同群组可运行不同的共识算法,组与组之间的共识过程互不影响,FISCO BCOS目前支持PBFT(Practical Byzantine Fault Tolerance)和Raft(Replication and Fault Tolerant)两种共识算法:

  • PBFT共识算法: BFT类算法,可容忍不超过三分之一的故障节点和作恶节点,可达到最终一致性;

  • Raft共识算法: CFT类算法, 可容忍一半故障节点,不能防止节点作恶,可达到一致性。

  • 框架

  • PBFT基础流程

  • PBFT网络优化