区块链技术已经成为了近些年的投资热门项目。各大公司都陆续投入资金进行区块链与公司相关业务的研究,当然也产生了许多区块链相关的创业公司。共识机制作为区块链底层技术之一,为区块链的安全性和透明性打下了坚实的基础。

共识机制是什么

区块链中的共识机制能让在去中心化的区块链网络中所有节点达成一致的一种机制。由于区块链去中心化的特性,各个节点彼此平行,必须设计一套维护系统运作顺序与公平性的制度。

统一区块链的主链、奖励消耗算力来维护区块链网络的区块链使用者以及惩罚恶意用户、决定谁有资格有一个区块的打包权(即记账权)并获得打包这个区块的区块奖励,以上都是共识机制在区块链中作用的体现。

类似于法律,当然法律是建立在制定法律的人或机构是一个可信的第三方;区块链在这个方面更进一步,区块链中的共识机制是建立在密码学的基础上,相对于第三方机构更加可信。当然可以说区块链技术是建立在我们对密码学的信任之上。

为什么需要共识机制

由于点对点网络中存在较高的网络延迟,各个节点所观察到交易先后顺序不可能完全一致,对交易的排序就显得尤为重要。通过分布式共识决定交易顺序则是一个好的解决方法。像PaxosZabRaftViewstampedReaplication在分布式系统相关文献、分布式数据库和文件系统较常见的崩溃容错共识算法可以处理在交易过程或计算机崩溃时造成传递延迟问题。

区块链多数情况下也是处理存在恶意节点的问题。我们不能保证某一个节点一定是友好诚信的。由于总存在恶意的节点扰乱系统运作,这需要我们解决类似拜占庭将军问题的难题。相对于上文解决的崩溃容错问题,解决这个问题困难得多。但这也是真正解决信任问题的共识算法方向。实际情况下这种问题也更难解决。比特币重点解决的双花问题就属于这类共识问题,共识机制保证了比特币去向的唯一性并且使比特币的区块链网络中的所有节点承认了这点。

共识机制的未来

在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来。也就出现了许多不太被人熟识的共识算法。一般都是基于故障模型、通信类型、通信网络连接、信息发送者身份、通信通道稳定性、消息认证性来设计满足条件的共识算法。

在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。一般来说,在私有链和联盟链情况下,对一致性、正确性有很强的要求。要采用强一致性的共识算法。而在公有链情况下,对一致性和正确性通常没法做到百分之百,通常采用最终一致性的共识算法。

区块链的共识机制也在不断地发展,常见的如PoWPoSDPoSBFTDBFTPBFT或者一些混合机制如BFT-PoSPoW-PoS机制只是共识机制的一小部分,从FileCoin开始大家慢慢提的Useful Work Consensus,就是说要在共识算法里设计能够让矿机做真实业务的机制,BlockMessageProof of Delivery也是这样。

共识机制的理论可能会影响人们对共识机制的看法,技术在理论与实际有差距很正常。当然这也是为什么需要更多更好的共识机制被开发出来,当实际与理论不相符时也许我们应该想想开发出新的共识机制了。下篇文章将详细介绍一些常见的共识机制。



分享到: