科普贴:几种共识机制的比较



  • 每日一帖,第三贴。
    共识机制是分布式系统的核心算法,因为分布式系统的数据分散在各个参与节点中,这些分散的数据必须通过一种算法来保持一致性,否则系统将无法正常工作。与传统的分布式系统不同,区块链是一个去中心化的系统,并且可能会承载大量的金融资产,所以它可能会面临大量的拜占庭故障而非一般性故障,而中心化的分布式系统则很少遇到拜占庭故障。因此,区块链的共识机制与传统的分布式系统存在较大的差异。

    比特币和以太坊采用了工作量证明(Proof-of-Work)机制来保证账本数据的一致性。工作量证明同时也是一种代币分发机制,它通过经济激励的方式来鼓励节点参与区块的构造过程,节点在构造区块的时候需要穷举一个随机数以使得区块符合规定的难度要求,一旦区块链出现分叉,诚实的节点将选择工作量较大的链条,而抛弃工作量较小的。由于假设所有节点都是逐利的,而选择工作量较小的链条就会使自己获得的激励无效,所以最终所有的节点都会是诚实的,从而使每个节点的区块链数据都保持一致。

    为了维护这样一个工作量证明机制的区块链,需要全网具备较大规模的算力支撑来保证网络的安全性,否则账本数据就有可能被篡改。此外,即使维持较大的算力来保护网络,工作量证明也无法从根本上保证交易的最终性,比如比特币就经常产生孤立区块(Orphaned Block),而包含在孤立区块中的交易就有可能被撤销。因此比特币通常要求用户等待6个区块的确认,即1小时左右的时间,才能在一个可接受的概率上认为交易已经最终完成,而这个概率也并非是最终性的——你永远也不知道暗中是否有一个远超过全网的庞大算力正在试图撤销以前的交易。而为了维护庞大算力而支出的电力成本也是相当可观,因此,以太坊已经在设计从工作量证明机制切换到其它共识机制上的方案。

    Fabric和Onchain DNA都设计了基于拜占庭容错(Byzantine Fault Tolerance)模型的共识机制。节点被分为普通节点和记账节点(Validating Peer),只有记账节点才会参与到区块的构造过程,这种角色的分离使得算法的设计者有机会将运行共识算法的节点数量限定在一个可控的规模内。

    拜占庭容错模型对网络中的节点做出了假设和要求:如果共识中有f个节点会出现拜占庭故障,那么至少需要3f+1个节点参与共识才能避免网络出现分叉。在这个模型下,每个区块的构造过程都需要至少2f+1个节点的参与才能够完成,而不像工作量证明机制下每个节点都独立构造区块。一旦区块被构造出来,它就无法被撤销,因为2f+1个诚实的记账节点不会在同一高度对两个不同的区块进行签名认证。

    相比较而言,工作量证明机制提供了极高的灵活性和可用性,因为每个节点都独立构造区块而几乎不需要其它节点的参与,节点可以随时加入或者退出网络,即使全网只剩下一个节点,网络还是可以继续工作,但是相应的它也失去了交易的最终性;而拜占庭容错的机制则与之相反,牺牲了一定的灵活性和可用性,记账节点必须在线提供服务而不能退出网络,一旦出现1/3的记账节点停机,那么网络将变得不可用,但它保证了交易的最终性。



  • 66666!!!!!



  • @jagame 共同学习,一起进步!


  • Banned

    又涨见识了!!!!


Log in to reply
 

Looks like your connection to Asch was lost, please wait while we try to reconnect.