首页
学习
活动
专区
工具
TVP
发布

当区块链停止出块时:越来越多的加密中断缘何出现

近期,越来越多由于区块链停止出块而造成的上层应用故障无法使用,这似乎打破了区块链曾经的“零故障”承诺。笔者认为这种情况的出现,是由于在许多新的区块链项目中,开始出现新的共识算法。与最早的比特币和以太坊等不同的是,新的算法似乎更倾向于实现CAP中的分区容错性和一致性,这样做就极大地提高了整个系统的可扩展性。而比特币则看重可用性的实现,因此只会发生分叉,而几乎永远不会中断。

来源:区块链铅笔 作者:David Floyd 翻译:Maya

Berniesanders(不要与前总统候选人、佛蒙特州参议员Bernie Sanders搞混了)是基于区块链的博客平台Steemit上的一个机构。

内容创作者可以在Steemit上赚取加密货币,至少是Steemit区块链上的原生代币,一个热门帖子可以获得三个代币。虽然最近受欢迎的内容是华夫饼配方、浪漫小说和加密货币专业知识,Berniesanders使用者自我描述为“糟糕的”一句话帖子还是获得了相当稳定的收入(一次约能获得30美元)。

最近的例子有:“你开心吗?我玩得很开心。”(60美元),“我在船上!”(31美元),“给我看看你的鞋子。”(30美元)和“一个烂帖可以收到多少评论?”(263美元和319条评论)。

但是在9月17日当天的几个小时内,Steemit社区无法看到Berniesanders的帖子。

那天,Steemit发生了一次故障,其区块链无法继续出块,整个平台停止了运作。在最上层的区块链和应用软件都进入了休眠。

该公司解释说,Steem的故障与即将出现的硬分叉升级有关。这个分叉的代码由一些节点提前运行,因此,当某些安全措施失效时,这些节点会分裂到不兼容的链上。节点意外地提前完成了网络硬分叉,因此,这些节点无法就新的区块达成共识。

“在这种情况下,区块链就停止出块了,” Steemit的创始人兼首席执行官Ned Scott告诉CoinDesk。 “但它造成了连锁效应,而且对所有上层的应用程序形成了多米诺骨牌效应。”

Scott表示,对于Steem区块链来说,那意味着400个应用程序受到影响。

其中一些应用程序可能会让人感到困惑,担心甚至愤怒,用户们会想知道为什么他们无法与自己最喜欢的基于区块链的工具进行交互了。在这个实践中,一旦Steemit网络再次开始正常运转,一些用户回归发帖时带上了一些诸如"testingshitsteem"、

"amateurshitdevs" 和 "deadchain"的标签。

这或许有些尖刻了。

当然,其他用户并没有那么尖锐。一位Steemit用户用了“alphasteem”(她发表了华夫饼配方)说:

“我猜这就是新技术的运作方式。”

唯一的问题是,这不是这个特定的新技术应有的表现。区块链网络被引用最多的优点之一就是它们是零故障,或者说几乎零故障、不中断的。

例如,有一个网站专注于追踪比特币自2009年1月发行以来正常运行的时间:截至本文撰写时,其百分比是99.992559576%。以太坊基金会这样描述其网络上的应用,称之“严格按照程序设定运行,没有任何中断、审查、欺诈或第三方干扰的可能性”。

然而,最近几个月,主要区块链网络都出现过中断故障,这一趋势让一些人感到疑惑,到底怎么了?

更多故障中断

Steem网络上的事件并不是近期区块链中断出块的唯一例子(实际上,这甚至不是Steem最近几个月中的唯一一次出现故障)。

3月,Neo的区块链也曾短暂中止。该项目的高级研发经理Malcolm

Lerider最初解释称,“当共识节点在共识期间断开连接时,” 这种情况就可能发生。

有一些尖锐的评价认为,如果Neo网络的7个共识节点中只要有一个下链就会造成区块链中止,那么实际上Neo就非常脆弱。Lerider对此稍作了一点回应。他说Neo当然可以承受损失一个共识节点,导致这次事件的情况要复杂得多。

几个月后,EOS区块链也出现了将近5个小时无法出块的问题。

当时,Thomas Cox是Block.One,也就是EOS协议背后的公司的产品副总裁(自那以后他就离开了这家公司)。他表示,延期交易没有通过恰当的核实,这就导致了一种“诡异的状态”并且“阻止了区块链继续出块”。

这次事件就发生在EOS网络在6月投入使用几天之后。

同盟或者授权协议

这些例子引出了一个问题,为什么,在区块链技术存在了近10年之后,它的零故障承诺却开始被慢慢打破了呢。

答案可能与新的共识算法的出现有关:即是区块链系统中所有参与者就网络状态达成一致的过程。

在比特币、以太坊以及工作量证明机制(PoW)的系统中,其共识算法决定这些系统极不可能会发生网络中断的情况,即使是在大量节点掉线的时候。

对此,Monero(一种采取PoW的加密货币)项目负责人Riccardo Spagni告诉CoinDesk:

“PoW可以处理所有情况,例如网络在分裂后,经过一段时间再次聚合在一起。它强大得令人难以置信。”

相比之下,新的共识机制,也就是Neo、EOS和Steem采用的那些算法,指定某一部分特殊节点来判定网络的状态。替代“挖矿”,这些节点通过更迅速同时耗能更小的流程达成一致,从而实现比比特币和以太坊更实惠、快速的交易。

这些系统被广泛地称为同盟或者授权协议,同时根据确切的加密方式被加上更多特定的标签:Neo采用的授权拜占庭容错算法(dBFT)以及EOS和Steem采用的授权权益证明算法(DPoS)。

Neo的Lerider对总体来说同盟区块链更容易发生故障而中断的想法提出了质疑。“不同的共识算法可以被用到一个同盟区块链中,” 他告诉CoinDesk,并且“想了解哪些算法更容易出问题,” 就需要研究具体的操作。

但是,从广泛意义上看,授权共识算法为加密货币带来了一些新的东西:即适应此前只有中心化供应商有能力处理的用例的充分的扩展性。例如,Block'tivity网站表明,Steem和EOS每天可以处理数百万笔交易。

然而,与此同时,新的协议把中心化供应商的一个缺点也再次带回了区块链世界:系统故障。当同盟系统中的关键节点发生故障或者掉线时,整个网络可能会就此停止运行。

可用性或者一致性?

然而,这并非是说这些机制就一定比传统的PoW差。

瑞典金融科技公司Cinnober的区块链及加密货币负责人Eric Wall表示,在实际工作中存在重要的权衡。

他告诉CoinDesk,“所有的分布式系统基本上都受到CAP定理的限制”。

这个定理在关于区块链网络的讨论中经常被引用,它表明一个特定系统只能实现以下特性中的三者之二:一致性(consistency)、可用性(availability)和分区容错性(partition tolerance)(因此被缩写为“CAP”)。

Wall说,实际上选择范围更少。分区容错性,也就是在一个损失了一些信息的网络中运行区块链的能力,正如因特网那样,是“不可协商的”。因此,工程师或可以像比特币和以太坊那样选择可用性;或像EOS、Steem和Neo那样选择一致性。

Wall描述了这些选项在实际应用中的含义,并说:“许多同盟系统在紧急情况下就会中断,通常需要手动干预才能再次开始运行。另一方面,比特币通常不会中断,但会在短短一个月的时间内反复分叉成两个链。”

换言之,从用户的角度来看,比特币网络或许永远不会中断,但是如果用户发现自己在一个分叉链上交易,比特币并不保证在确定规范链的情况下,不会最终抛弃其它分叉链。

Wall还表示,大多数时候比特币都缺乏一致性,但这也不算什么大问题。他说,“网络的确具有最终一致性,这种一致性源自一个事实,那就是所有的分叉在一段时间后都会自动选择新的规范链。”

他补充说,“因此尽管比特币并不代表真正的CAP系统,它的实际应用与其一样出色。”

然而,某些事件再次表明,选择可用性而不是一致性会使区块链陷入麻烦。Steemit的Scott指出了2013年3月发生的一件事,比特币发生了分叉,当时还是一名记者的Vitalik Buterin称之为“过去四年中我们见到的最严重的一次呃逆”。

与此相呼应的是,Wall认为这类事件是倾向一致性的CP系统优于倾向可用性的AP系统的证明:

“相比之下,两个彼此冲突的分叉链对网络的威胁比一条中断链的威胁大得多。”

炫耀旧伤疤

然而,有一点似乎值得注意的是,比特币自2013年以来没有再遭遇类似事件,而其他更年轻的网络却持续遭遇“呃逆”。

Wall说,“这些漏洞在同盟系统中比在基于PoW的系统中更普遍的原因最近被归结于一个事实,那就是比特币的基本代码更久经考验、也经过了更严格的审查,并且与那些同盟系统相比质量更好。”

实际上,2015年,当最老的DPoS区块链Bitshares被发布时,比特币已经存在超过6年了。

但更年轻的网络也可能迎头赶上。Scott在最近一次故障之后说,“Steem现在已经是一个久经考验磨练的区块链了。”

“我并不是说过去的路上是一帆风顺的,” 他接着说。“我把过去的磕碰和瘀伤看作是对我们的力量和韧性的证明,还有对创新的推动。”

Steem仍准备按计划在本周完成第20次硬分叉升级。

此外,值得注意的还有,尽管已经是一个经验丰富的老手,比特币不过以一线之差避开了本周发现的一个严重漏洞,这个漏洞很可能会以相当低的代价卸下多数区块链。

对此,Zcash公司的创始人兼首席执行官Zooko Wilcox告诉CoinDesk,终究,所有网络都不是完全安全的(zcash像比特币一样是一种基于PoW的加密货币)。

他总结道:

“软件故障可能导致任一软件系统的崩溃,这也包括了像比特币、以太坊和Zcash这样的区块链。”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181005A1JHQO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券