当前,区块链技术开始凸显它独特的重要性,并且开始运用到商业中,区块链技术将会迎来一个蓬勃发展的机遇期。近日,甲骨文北京研发中心举办了区块链探讨会,帮助企业更进一步了解和体验区块链等新技术,和甲骨文的技术专家一同,解读区块链技术、探讨区块链技术的创新与应用,展望区块链的未来前景。
区块链是由一个去中心化的节点网络组成,每个节点上都有共享的完全相同的账本,这个账本是一个串联起来的区块的链结构。如下图所示共识算法是保证这个账本同一性的核心机制。今天我们和大家谈一下区块链的主流共识机制以及甲骨文区块链云为企业级区块链应用的实现的共识机制。
共识算法按照节点网络的可信与否,主要分为两类,CFT类算法和BFT类算法。
CFT就是Crash Fault Tolerant的简写,是无恶意节点的情况下的容错,这类共识算法主要用于可信环境中,常用的共识算法有:Paxos,Raft以及基于Kafka的共识等等。
而BFT就是Byzantine Fault Tolerant的简写,是有恶意节点的情况下的容错,这类共识算法主要用于不可信环境中常用的共识算法有:PBFT、PoW,PoS, PoET等等。
下面我们简要介绍主要的一些共识机制。
POW:Proof of Work,工作量证明
比特币在Block的生成过程中使用了PoW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。
POS:Proof of Stake,股权证明
由于需要大量的计算能力,PoW成本高且耗能大。整个行业都在创造专为采矿而设计的定制芯片。股份证明(PoS)是近年来受欢迎的替代方法,不需要专业硬件。在PoW中,hashrate决定了参与者将下一块交易添加到区块链的可能性。在PoS中,参与者的token股份决定了他们的可能性。也就是说,每个网络节点都链接到一个地址,并且地址越多,他们就越有可能在下一个块中挖掘。
PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法
PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。在系统有多于3f+1个节点的情况下,能够允许f个节点不可用。如下图所示,在网络有四个节点的情况下,f=1时,仍然能够保证共识顺利完成。
从上图我们可以看出,PBFT算法下,网络通信的复杂度达到了O(n²),这也就意味着,PBFT网络节点不能太多,如果节点太多将会造成网络风暴,使得整个网络堵塞。
共识算法比较分析
下面,让我们来通过表格比较分析一下这些共识机制的优缺点。
通过比较我们可以看出,单独的共识算法总会存在这样或那样的问题。
POW的能耗问题
POS/DPOS的中心化问题
PBFT的节点数问题
CFT的无法处理恶意节点问题
所以,共识机制最好的设计是模块化,共识算法的选择与应用场景高度相关,可信环境的联盟链使用Raft或者Kafka这种容错类共识算法,非可信环境的联盟链可使用PBFT,公链可以是PoW,PoS,ripple共识等,根据对手方信任度分级,自由选择共识机制,这样才是真的最优。
甲骨文区块链云全周期共识机制
甲骨文区块链云采用全周期验证区块中的交易正确性的方式来实现共识机制。通过这种方式,在现阶段为企业级区块链应用的共识需求提出了一个既满足高性能,又满足可扩展性的共识机制解决方案。
首先,甲骨文区块链云运行于甲骨文云平台,有着完善的认证监控机制和安全运行环境。通过以下使得交易环境近似于可信节点网络。
IDCS访问控制
交易参与方提供背书节点
对读写集进行MVCC版本进行系统验证
然后,在此基础上,采用CFT类的基于kafka的高性能CFT类共识算法来为企业客户提供高吞吐量,可扩展,快速终结交易的共识机制。
甲骨文北京研发中心将继续举办主流技术研讨会,敬请关注我们的后续活动。如有任何问题,欢迎留言咨询。
领取专属 10元无门槛券
私享最新 技术干货