常见的区块链共识机制

在区块链网络中,记录的信息一般都是些有价值的交易信息,涉及到经济利益,所以会出现拜占庭节点。拜占庭节点指的是那些恶意篡改数据或者散播假消息的节点。为什么叫拜占庭节点呢。话说中世纪的时候,有个帝国叫拜占庭帝国,就是现在的土耳其那,拜占庭帝国拥有巨大的财富,周围10个邻邦垂诞已久。但拜占庭城防坚固,兵精粮足,没有一个单独的邻邦能够成功入侵,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。那么问题是,如何确保能有一半以上的邻邦同时进攻呢?各个邻邦可能出于自身利益考虑,本来发布消息说一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。区块链网络上的各个节点就类似于这些邻邦,必须有一个办法来解决相互之间的信任问题。

 

那为了解决这个信任问题,出现了以下几个解决办法:

最早出现的就是比特币的工作量证明(proof of workPoW)共识。如果10个邻邦的将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。解决的办法是,谁都可以发布消息,一旦发布大家都得听,不然就消灭你,不让你玩。但发布消息必须发出代价和成本,这个代价和成本就是“工作量”。节点必须完成一个计算工作才能向节点传播消息,当然,谁第一个完成工作,谁才能传播消息。

 

工作量证明,对于计算机而来,就是计算证明。计算机使用计算能力,简称算力,来开展工作。工作量证明的基本原理都差不多,大致可以用下面这个公式表示:

 

计算值<目标值

 

上面的目标值是系统根据实际情况不断改变的一个值,但对于特定的某一个区块来说,它是一个定值。

 

所以对于特定的某一个区块来说,计算机不断计算,不断得出计算值,一旦有计算值小于本区块的目标值,它就算完成任务了。

 

工作量证明有它的优点:

完全去中心化

节点自由进出,容易实现。

破坏系统花费的成本巨大

 

当然也有缺点,其中被诟病最多的是:

浪费能源!

由于需要不断计算,要不断消耗电能。比如目前比特币网络的电力消耗,已经等于好几个小国家的电力消耗了。

 

为了解决高耗能的问题,有人就提出了另外一种共识机制,权益证明(proof of stakePoS。权益证明中的一个重要概念是币龄,也就是钱包里面货币的多少乘以货币在钱包里存在的天数来合成一个的单位,每次你想要去竞争,就要消耗币龄。谁的币龄越大谁拥有记账权的概率就越大。使用后的币龄清零,重新计算。

 

这种共识算法的优点显而易见,节省了能源消耗。但缺点也明显,不那么去中心化了,导致了富的人越来越富,穷的人一直没有收益。

 

第三种共识机制是DPOS,它是基于POS衍生出的更高效的解决方案。他有点类似于董事会的投票机制,选举出n个记账节点,大家提交的提案被这些记账节点投票决定谁是正确的。

很明显,这已经完全不是去中心化的了,所以它不适合用在公有链上,只适合应用于私有链,或者是几个公司之间的联盟链。优点是:

减少记账节点规模,效率提高。

 

除此之外,还有例如小蚁区块链的dBFT:(delegated BFT,授权拜占庭容错机制)

首先用权益来选出记账人,然后记账人之间通过拜占庭容错算法 达成共识。

 

还有Fabric使用的经典算法PBFTPractical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。这是一种基于消息传递的一致性算法,算法经过三个阶段达成一致性,这些阶段可能因为失败而重复进行。这个算法好像是央行使用的数字货币共识算法吧,有兴趣的可以深入研究。

 

另外,如果我们假设不存在有坏人,只考虑出现网络故障,宕机等非人为故障的可信任的环境条件下,会经常采用paxos 或者raft等原始的共识机制。这类共识不解决信任问题,所以在公有链上也几乎不用。

 

 

当然,共识机制远不止上面提到的那些,比如尚处在开发中的filecoin采用的存储证明,或复制证明就很值得大家期待。总结一下,其实没有一种共识机制是完美的,各共识机制都有其优缺点,一种共识机制的出现也是为了解决一些特定的问题而生。期待我们当中的某些人,通过学习常见的共识机制后能有所启发,能发现解决某些问题更好的共识机制,应用于新的区块链项目,说不定你就是下一个中本聪。

想了解更多?关注我们就够了。

公众号:ipfscom
微信(Q):18191727
Q群:71789361
微信扫一扫,加入知识星球

猜你喜欢

转载自blog.csdn.net/angciyu/article/details/81629271