区块链:从蒸汽机车到高铁,从 POW 到 SPOS 的共识机制历史

编者按:本文作者:王秋林、崇慕,星球日报经授权编辑、转载。共识机制是区块链的核心技术之一,不论在哪个发展阶段,都应是我们关注的重点。共识机制让分布式网络能可靠地处理一个或多个节点的故障。失败的节点可能会表现出一种常常被忽略的行为类型——也就是说,将冲突的信息发送到系统的其他节点。有了共识机制,则能让所有节点取得共识,进而排除冲突信息,保证节点信息状态的一致性。区块链最早采用的共识机制是由比特币引入的PoW,后随时间推移和技术发展,SunnyKing为解决PoW种种缺点而推出PoS机制。后来,V神受此启发做了以太坊,BM在此基础上开发了DPoS。直到最近SunnyKing回归并推出全新的共识机制SPoS。下面,我就带着大家一起来了解下各共识机制的发展史。1.中本聪的比特币和POWPOW,ProofOfWork(工作量证明),最早由源自用于反垃圾邮件的HashCash算法。密码学家戴伟于1998年将POW结合签名交易技术提出了B-money设计,这是POW机制作为数字货币共识机制第一次被提出,只是B-money没有很好的解决区块链中著名的“双重花费”问题。到了2008年,中本聪融合了密码学和去中心化技术的精髓,发表了具有划时代意义的论文《btc:一种点对点的电子现金系统》,提出BlockChain这种数据结构。BlockChain能无需信任,建立一套去中心化的电子交易体系。到了2009年1月,btc网络正式上线,版本开源客户端发表,比特币由此诞生。比特币采用POW共识,它规定,矿工们在处理交易数据的同时,不断将打包的交易数据添加一个随机数并进行哈希计算,求得一位前23位为0的哈希值,作为区块的nonce。当全网有一位矿工哈希出nonce时,他就会把自己打包的区块公布出去,其他节点收到并验证区块后就会一致认为这个区块接到了区块链上,就继续进行下一个区块的打包和哈希计算。由于要得出符合要求的nonce很难,因此得以保证在一段时间内,系统中只能出现少数合法提案。同时,这些少量的合法提案会在网络中进行广播,收到的用户进行验证后会基于它认为的最长链上继续计算。因此,系统中虽然可能出现链的分叉,但最终会有一条链成为最长链。Hash问题具有不可逆的特点,因此,目前除了暴力计算外,还没有有效的解决算法。反之,如果获得符合要求的nonce,则说明在概率上付出了对应的算力。谁的算力多,谁最先解决问题的概率就越大。当掌握超过全网一半算力时,从概率上就能控制链的走向。这也是所谓51%攻击的由来。作为最早出现的区块链货币,比特币总有不完善之处。比特币为了交易的安全性而牺牲记账效率采用了POW机制,但随着节点的增加,挖矿所导致的高能耗逐渐暴露出来。时至今日,全球比特币网络消耗的能量几乎等于三峡大坝发电量的2/3。POW的优点:去中心化,将记账权公平的分派到其他节点。节点能够获得的币的数量,取决于其挖矿贡献的有效工作,也就是说,节点用于挖矿的矿机的性能越好,分给该节点的收益就会越多,这就是根据节点的工作证明来执行币的分配方式。安全性高,破坏系统需要投入极大的成本,如果想作弊,要有压倒大多数人的算力。因为作弊要付出一定成本,作弊者就会谨慎对待了。在比特币的POW机制中,由于获得计算结果的概率趋近于所占算力比例,因此在不掌握51%以上算力的前提下,矿工欺诈的成本要显著高于诚实挖矿,甚至不可能完成欺诈(由于概率过低)。POW的缺点:挖矿造成大量的资源浪费。目前bitcoin已经吸引全球大部分的算力,。这让依据算力公平分配奖励的机制,演变为了对矿机算力的大举投入,扭曲了中本聪的设计初衷。需要等待多个确认,网络性能太低。比特币区块链的共识达成的周期较长,现在每秒交易量上限是7笔,不适合商业应用POW共识算法算力集中化,慢慢的偏离了原来的去中心化轨道。从比特币扩容之争可以看到,算力高的大型矿池是主人,而持币的人没有参与决定的权利,比特币即将失去“去中心化”的标签。Pow还有很多的缺点,其中的一些问题有无更好的解决方案呢?且看Pos。2.Sunnyking的点点币和POS比特币之后,很多模仿比特币的区块链货币也出现了,如莱特币等,但这些货币都采用了低效率高能耗的POW机制,区块链领域至此很久都没有革命性的创新。直到2012年,SunnyKing发布了点点币,并在点点币中首次提出POS共识机制,一改POW当道的历史,而点点币也作为第一个采用POS的区块链货币而被载入历史。此后出现的以太坊和EOS都只是SunnyKing思想的延续,更不用说其他公链了。POS,ProofofStake(权益证明机制),是POW的升级共识机制。POS根据每个节点所占代币的比例和时间来决定记账权和奖励;等比例的降低挖矿难度,从而加快找随机数的速度,因此POS不需要大量算力来维持网络安全。简单说来就是:持有越多,获得越多。POS试图解决POW机制中大量资源被浪费的情况。这种机制通过计算节点所持有币占总币数的百分比以及占有币数的币龄来决定该节点获得本次记账权利的概率。其中币龄=持有币的数量*持有这些数量币所经过的时间,一旦币被转账了,该用户转出的币所涉及的币龄就会归零。在POW机制中,由于想要找到符合条件的nonce往往需要花费大量的电力和时间成本。因此,为了使每个区块更快被生成,POS机制去掉了穷举nonce的过程,继而采用以下更快速的算法:SHA256(SHA256(Bprev),A,t)≤balance(A)mH某个哈希函数t为UTC时间戳Bprev指的是上一个区块balance(A)代表账户A的账户余额等式右边m是某个固定的实数,唯一可以不断调整的参数是t。因此,当balance(A)越大,找到合理t的概率越大。网络中,普遍对于t的范围有所限制,如可以尝试的时间戳不能超过标准时间戳1小时,也就说,一个节点可以尝试7200次,来找到一个符合条件的t,如果找不到即可放弃。因此,在PoS中,一个账户的余额越多,在同等算力下,就越容易发现下一个区块。从上面的描述可以看出,节点记账权的获得难度与节点持有的权益成反比,相对于POW,POS共识在一定程度减少了数学运算带来的资源消耗,出块性能也得到了相应提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和POW相同。POS的优点:1)在一定程度上缩短了共识达成的时间。2)不再需要大量消耗能源挖矿。3)POS当然也能防作弊,因为如果一名持有51%以上股权的人作弊,相当于他坑了自己,因为一个人自己不会杀死自己的钱。4)防止算力中心化导致矿工作恶。POS的缺点:1)还是需要挖矿,本质上没有解决商业应用的痛点;2)所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。3)极端的情况下会带来中心化的结果。POS机制由股东自己保证安全,工作原理是利益捆绑。在这个模式下,不持有POS的人无法对POS构成威胁。POS的安全取决于持有者,和其他任何因素无关。POS虽然解决了POW的能耗的问题,但全节点确认会让区块确认的效率提不起来,且时间越长,也越容易产生马太效应,即持有币越多的人会获得更多的币奖励,从而加大贫富差距,最终产生超过50%的中心化节点,被动演化为非预期的中心化的结果。4)恶意的节点验证者可以在没有任何损失的情况下去把自己的币押在分叉链上推动硬分叉,该问题也被称为“无利害关系”问题。\tPos开创了新共识的先河,创新较强但也不太完善。且看Casper如何进化?3.举步维艰的Eth和Casper共识机制\t从2014年1月V神发布Eth白皮书《以太坊:一个下一代加密货币和去中心化应用平台》开始,使用Eth的人越来越多,很多人在Eth上发布了各种智能合约,这些智能合约的运行给基于POW机制的Eth网络带来了极大的压力,Eth网络拥堵不断,Gas价格高企,由此让网络确认时间大幅延长、DAPP运行成本飙升。整个以太坊网络随着用户的增长和DAPP的增加,逐步陷入了困境。为了改善Eth的运行效率,Eth的创始人V神计划在以太坊中引入改进版的POS共识,并逐步取代目前所使用的POW共识,这个改进版的POS被称为Casper。Casper是一种基于保证金的经济激励共识协议(security-depositbasedeconomicconsensusprotocol),是以太坊计划在未来采用的共识机制,属于POS的一个分支扩展,旨在解决POS中存在的无利害关系问题。Casper协议中的节点,称为“锁定保证金的验证人(bondedvalidators)”,必须先缴纳保证金(这一步叫做锁定保证金,"bonding")才可以参与出块和共识形成。出块是一个独立于其它所有事件而发生的过程:验证人收集交易,当轮到他们出块的时间时,他们就制造一个区块,签名,然后发送到网络上。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是,如果一个验证人作出了任何Casper认为“无效”的事情,他的保证金将被罚没,出块和参与共识的权利也会被取消。保证金的引入解决了"无利害关系问题",也就是经典POS协议中做坏事的代价很低的问题。现在有了代价,而且被客观证明做错事的验证人将会付出这个代价。容易发现,只有在验证人当前已缴纳保证金的情况下他的签名才有意义(economicallymeaningful)。这代表客户端只能依赖他们知道的锁定保证金的验证人的签名。因此当客户端接收和鉴別共识数据时,共识认可的链必须起源于出自当前锁定保证金的验证人的块。在POW协议中共识认可的链则是起源于创世块——只要你知道创世块的数据你就可以鉴别出共识认可的链。这里,只要你知道当前锁定保证金的验证人,你就可以鉴别出共识认可的链。不知道当前锁定保证金的验证人列表的客户端必须先通过另外的信道获取这个列表。这个限制通过要求所有人用当前信息鉴别共识解决了“远程攻击(longrangeattack)”问题。验证人列表随着验证人保证金不断的锁定,罚没,解锁而变动。如果客户端离线过长时间,它的验证人列表就会由于过时而不能用来鉴别共识。如果客户端经常在线,则能够与最新的验证人列表保持同步,但问题是在第一次同步之前,客户端还是需要从其他信道获取最新锁定保证金的验证人列表。这个“需要从其他信道鉴别共识至少一次”的性质,正是V神所说的“弱主观性(weaksubjectivity)”。在我们的上下文中,如果信息可以在协议之内被验证,则可称之为“客观的”;如果信息必须依赖协议外的手段才可验证,则称为“主观的”。在弱主观性共识协议中,分叉选择规则是有状态的,因此客户端必须初始化这个状态才能鉴别共识。在这里,这个状态被用来辨认当前锁定保证金的验证人。\t2018年8月31日,以太坊网络的14位核心开发人员决定通过视频通话,宣布推迟Casper的开发12个月。Casper的优点:系统可以快速惩罚节点的作恶行为,进而避免了无利害攻击。帮助以太坊大幅提高共识达成的效率,并使以太坊从根本的共识机制上,区别于比特币。Casper的缺点:设计比较复杂,更容易出现漏洞4.BM的EOS和DPOS共识机制由于比特币的POW机制导致运行效率极度低下,在结合了POS技术的基础上,DanielLarimer决定在区块链技术中引入一个新的共识机制——DPOS,来取代交易速度极慢的POW。2014年2月,BM发布了Bitshares,首次采用了DPOS技术。但Bitshares因为技术不成熟而导致了一系列问题。后来,被称为区块链2.0的以太坊也很难支持起一个庞大的去中心化商业应用生态。然后,BM决定以以太坊为对手,建立一个区块链操作系统EOS,这个新系统融入了BM对区块链技术的理解和总结,使用了改进后的DPOS共识机制。DPOS,DelegatedProofofStake(委任权益证明机制),是基于POW及POS的基础上创建的一种新型共识算法。它既能解决POW能耗过大的问题,也能避免POS权益分配下可能产生的“信任天平”偏颇的问题。DPoS中的“D”为“Delegated”,意为授权、委托;DPoS与PoS的主要区别是所有持币者选举若干代表,由代表参与记账。EOS定义民主选择出的代表为区块链网络里的区块验证者,“代表”这个术语可以与“区块验证者”等同使用。EOS规定由21位代表作为网络中的主节点,新建区块,签署并验证交易。这些代表是由EOS代币持有者投票成立的“授权事务所”。21位“委托者”的设计,是因过多的委托者会分散EOS代币持有者的注意力,造成代币持有者决策力的削弱。使用EOS.IO软件,区块以126个区块为一轮。在每一轮的开始,21个区块生产者通过token持有者的投票被选中。选中的生产者依据商定好的顺序生产区块,这个顺序由15个或者更多的生产者商定。理论上这样可以极大提升系统性能,但也带来了网络延迟问题:0.5秒的确认时间会导致下一个出块者还没有收到上一个出块者的区块,就该生产下一个区块了,那么下一个出块者会忽略上一个区块,导致区块链分叉。比如:中国见证人后面可能就是美国见证人,中美网络延迟有时高达300ms,很有可能到时美国见证人没有收到中国见证人的区块时,就该出块了,那么中国见证人的区块就会被略过。为解决这个问题,BM将原先的随机出块顺序改为由见证人商议后确定的出块顺序,这样网络连接延迟较低的见证人之间就可以相邻出块。比如:日本的见证人后面是中国的见证人,再后面是俄罗斯的见证人,再后面是英国的见证人,再后面是美国的见证人。这样可以大大降低见证人之间的网络延迟。使得0.5秒的出块速度有了理论上的可能。如果一个生产者错过了一个区块,并在24小时内没有生产任何区块,该生产者将会被移除。直到这些“宕机”的生产者们及时通知区块链,他们将打算再次生产区块才被重新加入。通过不安排那些不够可靠的节点,尽可能的减少错过区块创建,来让整个网络运行得更平稳。DPOS优点:能将维系网络运行的能源消耗降到最低,以一种低成本的方式来管理整个链上的运行,这就很大程度上解决了POW的能源耗损问题。更快的出块速度,实现平均0.5秒一个的出块速度,大幅提高了系统的运行效率和吞吐量。更加“去中心化”的管理方式,将区块链网络运行的决定权分散到全网的各个节点手中,这就很大程度上避免了POS容易出现的被庄家操纵的“控股”现象。DPOS共识机制的出现,将通过实施区块链上的“民主”来对抗“中心化”所产生的负面效应,用被公选的“弱中心化”方式来提高全网运维的效率。DPOS缺点:持股人投票的积极性并不高。绝大多数持股人从未参与投票。这是因为投票需要时间、精力以及技能,而这恰恰是大多数投资者所缺乏的。实现复杂、中间步骤较多,对于坏节点的处理存在诸多困难。社区选举不能及时有效的阻止一些破坏节点的出现,给网络造成安全隐患。\tDpos虽然做的效率很高,但缺点也不容小视。5.SunnyKing全新的SPOS共识机制随着区块链爆发,世界上很多天才在SunnyKing的基础上发明,发明出各种变形POS来。但这些都只是针对POS的一些小修改,还有着自己各种各样的问题,并不能支撑未来的大规模高性能商业级区块链。SunnyKing也在不断的反思着POS的不完善之处,在其他人为了改进POS而焦头烂额的时候,SunnyKing近日带着他反思多年的成果回归了:这个成果就是POS的下一个版本,这个版本或能开创一个新的时代,支撑未来的区块链经济。这个新版本的POS具备更高的性能和安全性,是次世代的共识机制,名为SPOS。SPOS,supernodeproof-of-stake,将在区块链数据云项目VEE中引入。SPOS的一大特点就是采用了固定的出块时间。该系统有60个节点,其中15个作为主节点,45个为备用节点。每个节点都具备极高的运算性能和网络带宽,从而让整个系统具备极高的吞吐量和运行效率。整个系统具备60个铸币槽,每个铸币槽代表了在一分钟内一个固定时间段出块的权限,在系统工作时,各个槽按顺序出块。每个节点可以竞争各个铸币槽的使用权。由于每个节点对应了一个VEE账户,而每个账户下面可以绑定9个钱包地址,在竞争时是用其中一个地址去竞争一个槽,而且一个地址也只能竞争一个槽,所以每个节点最多可以同时占有9个铸币槽,这样可以防止一个节点占有全部的铸币槽。SPOS系统在运行时其实就是各个节点轮流出块,这就可以把某个节点的偶发性失效对整个系统的影响降到最小。由于每个槽上的节点需要按照时间来出块,因此各个节点间的时间同步就显得非常的重要,所以采用了网络时间协议)来确保各个节点能按顺序进行出块。NTP是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源,且可由加密确认的方式来防止恶的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。节点可以在任意时刻发起对于一个铸币槽使用权的竞争,但为了防止竞争机制被滥用,因此系统会收取较高额度的竞争费用作为威慑。当一个节点作为挑战者向一个铸币槽的使用权的所有者发起竞争申请,SPOS协议会比较挑战者在该铸币槽上的账户的权益和被挑战的挖矿节点在该铸币槽上的账户的权益,然后决定竞争的胜出者,并将该铸币槽的使用权交给胜出的一方。虽然竞争的胜出方是通过较多的权益在竞争中获胜的,但这些权益的流动性仍是可以保证的,铸币节点随后是可以从自己的账户地址转出权益的。即使是从POS协议的出发点来看,将同一笔权益同时转给不同地址、铸币槽的竞争也是被禁止的,这等于是双花攻击。然而由于权益具备流动性,有些节点为了铸币槽所有权的竞争,而快速的将权益从一个地址转账到其他地址用于其他铸币槽的竞争,从而形成了繁忙竞争攻击。为了防止这一攻击,在对铸币槽的竞争中对于地址账户余额的衡量标准采用了余额在时间上的累积均值。如果让权益快速的流动,则地址账户的积累均值就会随时间的推移而大幅下降,从而大幅降低了该地址账户面对挑战时的竞争力,这样当节点发起繁忙竞争攻击时就会导致权益流出的地址账户很容易就丧失了铸币权,从而阻止节点发动此类攻击。用户可以将自己的权益借给节点,当节点通过出块获得收益时,可以按照比例给权益的借出方分红。虽然节点的账户余额在计算时是算上了所租借的权益,但是节点账户无权使用/转移这部分权益,权益的借出方则可以随时撤回这些借出的权益。如果一个节点上租借来的权益数量上涨、那么由于单个节点的收益是固定的,那么总权益的上涨势必导致分红率的下降、进而遏制租借权益的上涨,从而形成一套内在的自我调节机制。这个系统在设计上看起来更加中心化,但King也设计出了一套机制保障网络的安全,确保每一个超级节点都有平等的权力,防止某个节点权力过大。如果将POW比喻成陈旧缓慢的蒸汽机车,那么SPOS就是高速舒适的现代化高铁,是次世代的区块链共识机制。我们总结了部分SPOS机制:SPOS超级节点按固定顺序出块;以15个超级节点开启主网,随着网络增长,超级节点数增长到30-60;块与块之间间隔是固定的,这样带来了更佳稳定的延迟;60个铸币槽,分别代表了一分钟的60秒;抢夺/释放的机制,也让铸币权的竞争更公平;铸币平均算法MAB,可以支撑币权更好的流动性,不让币往一个地方跑,保持去中心化,保护网络安全;SPOS机制来带的好处:SPOS是为高性能区块链所设计的底层结构;固定的块间隔设计,带来的是兼具高吞吐量和更佳稳定的区块链网络;冷铸币的设计,保证了区块链更安全的性能;经济系统的设计,鼓励生态系统持续投入升级超级节点,这样保证了系统的运行效果将不断提升;区块链技术最大的重点就是共识。我们看到共识技术的不断进步,这也是极客精神的体现。注:本文主要作者:王秋林,早期区块链技术开发者,开发多款区块链游戏,曾在知名东京软件公司研发工作。内容大纲:崇慕,区块链开发者,技术生态研究者,游戏蛮牛创始人,dll.io创始人。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-7:263ms