刍议区块链共识算法的发展现状与展望

2019-01-06 02:19KenJia
电脑知识与技术 2019年32期
关键词:区块链

Ken Jia

摘要:共识算法在区块链中有着至关重要的地位。它不仅可以协调数据的一致性、还对代币的发行等功能有一定的帮助。自2009年第一个区块链系统诞生至今,区块链的技术一直在进步着,如今已经达到了百花齐放的地步。本文主要介绍了区块链共识算法的产生以及发展,最后还对区块链的未来进行了展望。

关键词:区块链;共识算法;拜占庭容错;分布式系统

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2019)32-0034-02

共识问题最早可以追溯到1959年。当时就有关于针对在某个特别定义的概率空间内,讨论一组个体如何形成概率共识分布的问题。后来共识问题逐渐进入社会学、经济学,特别是计算机学领域的时候才广泛的引起了大家的关注。早起计算机领域内的共识问题还集中在分布一致性上面,其中传统的分布一致性研究还没有考虑过拜占庭容错的问题。直到后来2008年,一名化名为“中本聪”的研究者发布了一篇意义重大的论文,验证了一类可行的、实用的、互联网规模的拜占庭容错算法,自此打开了区块链的新时代大门。

1区块链共识算法发展现状

1.1区块链框架概述

目前还没有对于区块链有一个统一的定义,但是普遍来说,区块链是一种将数据区块按照时间顺序排列,同时链式结构加密储存的,不可更改的,去中心化的共享账本。区块链的框架由数据层、网络层、共识层以及应用层组成。

数据层包括链式结构和数据区块,其中每个节点都利用了哈希指针来建立数据结构。在数据交易的过程中所涉及的哈希算法、时间戳的要素保证了被交易的区块数据的不可更改性以及可追溯性。

网络层封装了区块链系统当中的消息传播等要素。区块链是分布式系统,采用P2P网络来组织全球节点,这些节点让网络具备了广播交易或者区块、转发等功能。

共识层包括各种共识算法、这些算法可以实现节点间数据的一致性。应用层则是用来实现各种应用场景实现。

1.2区块链共识算法创立及发展

分布式计算领域的共识问题于1980年提出,该问题主要描述的是在一堆可能发生故障的节点中,如何针对非故障节点对于一定特征值达成共识,后来在1982年该问题被正式命名为“拜占庭将军问题”。自此分布共识算法可以分为拜占庭容错问题以及非拜占庭容错问题。1985年由迈克尔·费舍尔等人提出了FLP不可能定理,在此基础上产生的各种算法组成了最早的分布一致性算法。1988年布莱恩·奥奇等人提出了采用主机备份模式来保持一致型的VR一致性算法。1989年莱斯利·兰伯特提出了基于消息传递的一致性算法Paxos算法。辛西娅·德沃克于1993年首次提出了工作量证明思想,而在1997年亚当·伯克也提出了用于哈希现金的工作量证明机制。最后由马库斯·雅各布松正式提出了“工作量证明”这一正式概念。1999年由Barbara Liskov等提出了實用拜占庭容错算法。2000年由埃里克·布鲁尔教授提出了后来对区块链体系设计带来影响和限制的布鲁尔定理。最后,在2008年由中本聪发表的比特币共识机制打开了区块链的大门。

1.3共识算法的模型及分类

目前大多数主流共识算法采用的核心思想包括“选主”和“记账”两部分,在具体流程中每一个轮次都会分为选主、造块、验证和上链四个阶段。在区块链系统中全体节点可以记为P,负责打包数据的节点记为M,矿工节点中的代表节点为D,最后通过共识过程的记账节点为A。选主即M→A的过程,一般来说A=1。造块即用A将特定选择的内容打包在发往全体的M中。验证即节点M将接收到包裹进行验证。上链即在包裹通过验证后更新到区块链末端的行为。

区块链共识模式有很多种区分方法。比如根据容错类型判断,可将区块链共识算法分为拜占庭容错算法和非拜占庭容错算法;根据部署方式可以将区块链共识算法分为联盟链共识算法、公有链共识算法以及私有链共识算法,最后还可以将区块链共识算法分为弱一致性共识算法和强一致性共识算法。

2区块链共识算法展望

2.1PoW与POS算法的有机结合

一些研究者将PoW和PoS有机结合起来发明了一些新颖的证明方法。其中有权益一速度证明PoSV、燃烧证明PoB、行动证明PoA以及二跳共识算法。PoSV主要针对在PoS算法中的币龄与时间呈线性关系这一问题,主要是为了解决货币拥有着囤积货币的现象,其解决方法就是将币龄与时间的关系修改为指数衰减的形式,这样就可以让持有时间长的货币的币龄增长幅度大幅下降,从而有效遏制屯币现象。PoB共识算法是为了在网络中产生新的货币而被发明出来的,它通过让矿工将原有货币进行燃烧再进行重新挖掘从而获得更多的货币,来实现货币的产生。同时PoB算法使燃烧的货币不再被召回,而且对于矿工来说,燃烧的货币越多,挖掘出的新的货币就会越多。PoA共识算法则是将挖掘出来的一部分货币以抽奖的形式奖励给全部节点,而中奖概率则是直接和权益挂钩。二跳共识算法则是为了解决PoW潜在的51%算力攻击问题,从而保障了区块链的安全性。

2.2原生PoW算法的改进

原生PoW算法的改进主要是要将比特币扩容或降低比特币的能耗。

2016年Eyal提出了一种新型的共识算法Bitcoin-NG。这种算法主要是在每个时间段上设置了一个领导者,然后利用领导者来生产更多的区块,从而达共识算法到扩容的目的。同年提出的ByzCoin借鉴了这种思想,在保证强一致性的同时,提高了Paypal的性能以及降低了延迟。2016年提出的Elastico则是通过分片的方式来实现了拜占庭容错的安全问题。2017年ByzCoinX则是利用了上述两种容错方式将比特币在扩容的同时还不比牺牲长期的安全性和去中心性的分布式账本架构。为了降低PoW算法的能耗。研究者提出了消逝时间证明PoET和运气证明PoL。这两种证明方式都是以特定的可信执行环境为基础的随机共识算法。PoET算法的意义在于能够有效地降低能耗,让挖矿的消耗大幅降低,并且实现了"ICPUl票”的公平性。同样的,PoL算法是通过降低交易的验证时间来降低能源消耗的。

2.3原生PoS算法的改进

原生PoS算法的改进主要是针对解决PoS算法中固有的“无利害关系”问题,由此产生了很多种新的共识算法。2014年提出的Tendermint实现了第一个基于PBFT的PoS共识算法。这种方法是一收取保证金的方式,来实现问题的解决,假如矿工作恶,那么保证金就会被没收。2015年提出的Casper尚在完善阶段,其分为两类。一类是有明确PoS共识的CTFG,另一类是将PoW和PoS有机结合的CFFG。2016年提出的HoneyBad-ger共识是第一个可以实用的异步拜占庭容错共识协议,这种共识可以实现在没有任何网络的情况下,依旧保证区块链系统的活性。

2.4传统分布式一致性算法的改进

传统的分布式一致性算法一直都是非拜占庭容错的。研究者为了突破这一桎梏在2014年提出了拜占庭容错的Tanga-roa算法。2016年提出了拜占庭容错的Raft算法,后来逐渐发展成为ScalableBFT的专用拜占庭容错协议。2015年提出了恒星共识协议SCP,这是第一个具有明确安全机制的,具有渐进安全、灵活信任、低延迟和分散控制四个关键属性的共识机制。同年,将Ripple和SCP共识相结合提出了法定人数投票共识算法,以应随需要即时交易的场景。2016年NEO提出了一种名为dBFT的算法,这种算法改进了PoW和PoS最终一致性的问题,让区块链进军到金融领域内。2016年,提出了MgoRand的快速拜占庭容错共识算法,这是被认为真正的民主和高效的分布式账本共识技术。

3结束语

近年来随着区块链技术的广泛发展,共识算法技术也越来越多地为人们所学习。未来该技术将会朝着证明方式多样化、证明方式混合化、中心化共识需求增多以及研究合理的激励措施等方向努力发展。相信未来区块链技术将会得到更加长足的进步。

猜你喜欢
区块链
基于区块链技术的海上散装液体化学品运输安全监管方法
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
用“区块链”助推中企走出去