一、区块链系统
区块链大致可分为三种类型:公有区块链、私有区块链和联盟区块链。
-
公有链:公有链是完全开放的区块链,任何人都可以自由加入和参与其中。公有链上的数据和交易记录是公开透明的,任何人都可以查看和验证。完全去中心化,开放透明,适用于需要高度信任和公开性的场景,但性能和隐私性受限。公有链具有代表性的共识算法有POW、POS等。
-
联盟链:联盟链是由多个组织或实体共同控制和管理的区块链网络,参与者需要经过授权才能加入。联盟链通常用于跨组织之间的数据共享和协作。结合了公有链的开放性和私有链的隐私性,适用于多个组织之间的协作,但治理和技术成熟度是挑战。联盟链具有代表性的共识算法有PBFT。
-
私有链:私有链是由单个组织或实体控制和管理的区块链网络,参与者需要经过授权才能加入。私有链通常用于组织内部或特定合作伙伴之间的数据共享和交换。集中化管理,高效且隐私,适用于企业内部或特定合作伙伴之间的应用,但封闭性和成本较高。私有链具有代表性的共识算法有Raft。
二、共识算法
共识算法是分布式系统中多个节点用于就某个值或决策达成一致的协议或规则。在区块链技术中,共识算法起着核心作用,它确保了所有参与节点能够就交易的顺序和有效性达成一致,从而维护整个区块链网络的一致性和安全性。
1.按处理拜占庭故障能力划分:拜占庭容错算法(BFT)和崩溃容错算法(CFT)
- 崩溃容错算法以Raft算法(https://blog.csdn.net/m0_60785505/article/details/146492913)为代表,仅能够容忍宕机、网络延迟或断开等良性错误的共识算法。具有交易时间短和响应快速的优点,但不能容忍拜占庭节点。
- 拜占庭容错算法以PBFT共识算法为代表,具有出色的容错能力,能够容忍宕机、网络延迟或断开等良性错误并且能够容忍一定数量的拜占庭节点,但识别和处理这些节点会增加额外的通信开销,从而降低交易和响应时间。
2.按通信类型划分:部分同步、同步、异步模型
1) 同步模型(Synchronous Model)
-
定义:假设网络中消息的延迟小于某个确定的值,即存在一个已知的最大消息延迟时间。
-
特点:在这种模型下,共识算法可以利用这个确定的延迟时间来设计协议,确保在规定时间内达成共识。
-
容错能力:同步模型中的协议可以容忍高达100%的节点故障,但当故障节点数量超过总节点数的1/2时,需要对节点行为进行限制。
-
应用场景:比特币的中本聪共识本质上是同步模型,通过工作量证明限制每次共识的时间。
-
常见的共识算法:Sync Hotstuff
2)部分同步模型(Partial Synchronous Model)
-
定义:结合了同步和异步模型的特点,该模型中假设存在一个全局稳定时钟GST(Global Stabilization Time),在GST之前整个系统可能处于异步状态,但是在GST之后,整个系统可以恢复到同步状态。
-
特点:部分同步模型允许在正常情况下利用同步模型的优势快速达成共识,同时在异常情况下保持一定的容错能力。
-
容错能力:部分同步模型中的共识协议如PBFT最多可以容忍任何故障的1/3,包括拜占庭错误。
-
应用场景:许多现代区块链和分布式系统采用部分同步模型,以平衡效率和容错能力。
-
常见的共识算法:PBFT
3)异步模型(Asynchronous Model)
-
定义:假设网络中的消息延迟可以无限大,即没有确定的消息传递时间上限。
-
特点:异步模型不假设存在一个确定的最大延迟时间,因此在这种模型下达成共识更具挑战性。
-
容错能力:异步模型中的确定性协议不能容忍任何节点故障,因为无法保证在有限时间内达成共识。
-
应用场景:HoneyBadgerBFT 是一种运行在异步模型下的拜占庭容错共识算法,它通过概率性终止来实现共识。
-
常见的共识算法:HoneyBadger