共识算法

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

共识算法分类

根据解决的是普通错误情况还是拜占庭错误情况,共识算法可分为Crash Fault Tolerance(CFT)类算法和Byzantine Fault Tolerance(BFT)类算法:

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