LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > Mike Hearn:紧急迫降

Mike Hearn:紧急迫降

2015-05-09 面神护法 来源:巴比特
1-9l6xloRowv4fksAuNMrPDQ

  众所周知,比特币区块越来越大,有一种意见认为,应该任由它发展,达到区块的上限。对这种说法的一个普遍的辩护意见是,这样的后果也不会怎么样嘛:不过是交易费的自由竞争。每一个人都爱自由市场对不对 那么谁能反对用交易费来自由竞争呢

  事实上,很多人会反对这个说法,理由嘛,就像没有人会欢迎出现一个IPV4地址的竞争市场一样。IP地址正在变得越来越稀少,复杂的网址转换技术和凭公司力量在市场上竞争的方式,并没有成为胜出的解决之道:那些都是权宜之计。与此同时我们都开始向真正的解决方案迁移:IPV6。

  但没关系——因为交易费自由竞争这个说法内在的逻辑是错的。我不相信当比特币超负荷的时候,交易费会升高,并且系统稳定运行。与此相反,我相信比特币会崩溃。

  在本文中,我将推演两个场景:

  第一个是,如果明年(即我预测区块会达到上限的时间)我们运行着与今天类似的软件的话,会发生什么。

  第二个是,如果我们运行一些假设的比特币核心更新版本和钱包应用,又会发生什么。

  在这两个场景中,我们都假设区块大小上限是1mb。

  比特币核心代码与今天相同

  当比特币核心超出承载能力时,会发生什么

  进入比特币系统的交易流在某种程度上是稳定的,这个速度在星期日会低一些。这些交易信息先进入“内存池”,内存池是交易信息出现在区块链上之前,它们被存储的地方。就像内存池这个名字显示的,这些信息只保存在内存中。如果一个节点重启,这个节点内存中的信息就会被清空,当然其他未重启的节点中依然保留着这些交易信息。

  当区块大小接近100%的时候,发生的第一件事就是确认时间越来越长。根据Dave Hudson的蒙特卡洛模拟结果,当区块大小达到上限的80%时,有一半的交易的确认时间会达到20分钟左右。当区块大小达到上限,即1mb时,有一半的交易要等6个小时以上才能得到确认。

  但事实上,将会发生的事不是这样简单。因为当区块大小达到100%时,真实的交易量会大于100%。也就是说永久性的未完成确认的交易信息堆积就会出现。

  比特币核心里面并没有处理永久性并不断增长的堆积信息的代码。交易信息只能在内存里面排队,直到节点崩溃。在这个意义上可能会发生下面三种情况之一:

  因为陷入交易信息的汪洋大海,节点可能会变得异常的慢

  当节点试图分配内存空间的时候,节点可能会崩溃掉

  节点可能会被操作系统内核终止

  所有这三种情况都是坏消息。比特币核心没有自动重启的功能。如果节点死掉或者变得超级慢,只能靠节点的管理者自己注意到发生的情况,手动重启节点,每次,每次都是这样。

  还有,几乎所有的钱包都不知道积压的信息有多大。无论积压交易信息占用的内存有多大,他都会任由用户继续向节点发送交易信息。因此随着积压交易信息越来越大,节点会占光内存然后无法运行。直到被手动重启。

  你可能觉得,节点重启,问题就解决了,因为节点会忘记之前所有的积压交易,重新开始运行。但是这有两个问题。第一,这会使双花的可能性大大上升。人们总是想要快速购买,在双花概率上升的情况下,这会变得不牢靠。第二,钱包仍然不知道什么地方出了问题。钱包只是注意到,他们发送的交易信息迟迟没有得到确认,而根据程序,钱包会反复广播没有得到确认的交易信息。因此节点会迅速的积压大量未确认信息,积压有增无减,很快会再一次超过节点的运行能力。

  我不知道这种情况什么时候会真的出现,但是只要比特币内核会无限制的接受任何有效的交易信息,那么节点崩溃就是迟早会发生的。

  然后会怎样

  额,用户们会注意到交易没有被确认。在此之前他们应该已经抱怨过很久确认慢,但是现在他们要真的骂娘了。有些用户会经历真正的“不便”,甚至会损失钱。因为,比如说,他们跟别人约好了当面交易,于是将币从桌面钱包转移到手机钱包中,但是当他们见面之后,币的转移仍然没有得到确认,那么他们计划好的交易就无法向下进行。

  我们之所以知道这样的后果,是因为在过去我们曾经碰到“区块大小软限制”。在系统默认中,区块曾经默认小于低于1mb的某个值。在2013年,区块大小达到了这个250kb的软限制,用户开始抱怨。然后一些矿池提高了他们的限制,开始铸造更大的区块,之后事情很快得到解决。加入你仔细回顾当时的讨论,你会看到一些与今天的讨论似曾相识说法:小区快没有问题,只要多付一点交易费就好了!

  为什么交易费市场不能解决问题

  有大量关于“交易费市场”的讨论,今天也有某些此类市场显露雏形。问题是,这会使超载问题更加糟糕,甚至创造更多的中心化行为。

  怎么会这样呢

  现在交易费很低廉。当交易信息堆积形成,节点开始崩溃的时候,每个人都会想“多付一点点交易费没什么大不了,我负担得起”。让我们假设这种花些小钱无所谓的情况。第一次交易付出的交易费看起来不够,用户将提高交易费,发起第二次交易,这无疑使过载问题更加严重,使节点崩溃更快的到来。

  蛋疼的是你没有办法自动选择一个交易费。即使你决定一点一点的提高交易费,因为在过载的情况下,确认交易动辄需要几个小时的时间,你还是很容易被交易费比你多的交易抢到前面。想要发现你支付的交易费没有竞争力,只有一个途径,就是注意到你的交易迟迟得不到确认。但即便你支付的交易费足够高,确认过程还是会动辄数个小时(看上面的模拟)。所以在你不耐烦的等待中,你可能会增加交易费发起另一个交易——发现事情的吊诡之处了吧——这个“争上游”的游戏没办法互相协调,每个人都不想浪费钱,于是一次次以最小的幅度增加交易费,一直增加一直增加,但是你永远得不到你想要的确认!

  SPV钱包无从知道他们的交易费的竞争力,除非发生一些重要的协议改变。目前他们可以使用一些硬性的费用标准,在目前的情况下,使用硬性的资费标准,交易的确认可以很好的运行。但是在过载的情况下,SPV钱包将不得不求助于可信的第三方。所有类似“小区快使区块链更加去中心化”的说法,都忽略了这个问题:对很多使用着今天最实用的去中心化钱包的用户来说,小区快将导致比以前更低的去中心化水平。

  但是,交易费不上升,矿工怎么维持下去呢

  我和加文都不认为交易费市场能够成为通胀补贴的(即区块奖励的比特币)替代品。从经济上看这就不可行。你可以读一读加文对此的讨论,我写了另外一篇文章提出另一个可能的选择。

  那么交易费的角色到底是什么 我认为无论是在现在还是未来,交易费的首要目的就是使人们免于大量无意义的小额支付的干扰。在理想的世界中,绝大部分交易应该是事实上免费的。只有非常迅速频繁的发起交易的钱包(比如交易所的钱包)才必须支付交易费。矿工应该就像现在做的,按照“优先级”排序收录免费交易。其中的道理是,只有流动的比特币才是有价值的比特币。多说一句,“比特币没有交易费”与“比特币有小额的交易费”这两句话在哲学上的区别是巨大的。

  也许这不会发生,让我们拭目以待。但是这是我为什么反对,用人为的超载解决经济问题。

  用户会怎么反应

  很糟糕。

  很多年以前,当我和我在谷歌的新导师,非凡的Andrew Kirmse在走廊散步时,他说我要为谷歌地球做容量规划和集群网络建设。

  我对此感到有一点紧张,因此,22岁的我说:

  “我估计如果过载的话,最坏的情况不过是,我们不得不中断几个小时,或者一天。”

  安德鲁看我就像看一个傻蛋。“是啊……但那就坏了,我们会上头条”。

  上头条 啊!是啊!当然我们会上头条。谷歌几乎从来不会中断服务。谷歌有这样的声誉。如果谷歌地球因为过载中断服务几个小时……这将成为谷歌服务不稳定的信号,这将成为新闻媒体竞相报道的内容。

  当听到节点崩溃的消息,你觉得普通的比特币用户会怎么想呢 膨胀的未确认交易,突然双花的风险,高涨的交易费……所有这一切都是因为一个完全可预测并且很容易解决的问题

  他们会得出结论说,比特币开发社区是不称职的。这件事会上头条。

  然后那些囤币而不是日常使用比特币的人,早上醒来,读到这些新闻和故事,他们会得出结论说,自己错误估计了比特币未来的价值……,可能比特币根本不会成为未来的货币。

  然后价格一旦出现动荡,人们会蜂拥而至将他们的币转移到交易所卖掉,这无疑又会是交易拥堵的时刻,而且是逻辑推演的必然结果。随着大量用户突然对比特币失去信心,价格随之跌落,他们会觉得离场的时间到了。只要休眠状态的币开始移动,甚至是试图开始移动,未确认交易堆积的情况就会进一步恶化。

  然后呢

  比特币总会复活。被极端不可信的系统搞崩溃的人最终会放弃,不再试图花掉他们的比特币。很多币会停在一个地方,节点管理员可能会将他们的节点设置成自动重启。SPV钱包会找到一个可信的第三方来获得交易费数据。

  最重要的是,再也不会过载了……因为用户留不住了。堆积的未确认信息会确认干净,交易费会再次降落到最小。

  因此生活会继续。

  比特币会苟活。

  但比特币会失去未来。会成为数字货币版的MySpace。信徒们会失去信心,试图将比特币带入主流的商业活动会转而尝试其他东西。那些被“为了让世界更美好”而激励的人也会离场,因为他们看到大众永远不会再使用他们的产品。

  比特币核心代码发生更新

  让我们回到使用更新的核心的场景。这种场景下,结果也不会好,但是我不得不推演这个场景。否则我知道会有人拿这个说事。

  让我们想象一下如下的改变:比特币核心加强了关于内存池大小的限制,于是再也不会耗尽机器的内存了。

  理论上也会有其他的改变,比如,让SPV钱包自行计算交易费(这是个大工程),但是我不相信这个功能能够及时出现。

  OK,那么……区块和内存池都满了。比特币无能为力了:在此时此刻它无法处理更多的交易。

  然后会发生什么呢 以下之一:

  钱包试图向网络提交一个交易,但是从遥远的某处送回表示拒绝的P2P协议信息,告诉他们内存池已满。用户收到一个错误信息,然后币没有移动。可以想见用户相当暴躁,因为他的钱看起来锁定在钱包里,无法使用。

  钱包试图向网络提交一个交易,没有被拒绝,或者只是被半数的点拒绝。稍后我将解释为什么会发生这样的事。收到交易的节点会试图转发这个交易,但是并不是每一个内存池都是一样的,因此交易不能稳定的传播到网络的每一处。他可能会到达一些矿池,却没有到达另外一些。于是,可能会穿过网络到达资金的接收方,也可能不会。如果接收方看不到交易,你无法获得想要交易的产品。如果接收方看到了,但是交易并没有到达每一个矿工处,那个6小时只有50%确认可能的确认窗口只会使事情更加糟糕。交易需要一天甚至更多的时间才能确认会成为常态。可以想见,用户会相当暴躁,因为他的钱看起来锁定在钱包里,无法使用。

  钱包发现他们的交易没有送达节点的内存池,于是决定以更高的交易费再试一次。他们重新提交,然后节点说……OK,我将踢掉交易费低的交易,把你换进来。然而,原来那个交易者已经离线了,他不知道发生了什么。不知道现在他们的交易被踢出来了,永远不会得到确认。最终他们会发现这件事,于是他们提高手续费,但是,他们依然无法保证他们不会再一次被踢出来,甚至第三次,第四次……,经过几次尝试后,可以想见,用户会相当暴躁,因为他们的钱看起来锁定在钱包里,无法使用。

  为什么钱包不能收到拒绝信息呢 简单地说,这就是一个岂有此理的,开发者的共识。一些比特币核心的开发者相信,拒绝信息只是某种查虫是才用到的东西,而不是应用程序可以依赖的功能。因此,无法保证一个钱包可以发现他的交易并不合适。但即便如此,我们又会回到无限确认时间的交易问题。

  结论

  我相信,当比特币经历超载的情形时,无论如何我们无法做到不伤害比特币的声誉和用户基础。比特币的声誉和用户基础都会遭受严重的伤害,因为比特币是加密货币概念的创立者,加密货币这个概念也将不可避免的同时遭受巨大的伤害。

  基于此,我们提早升高区块的限制是很重要的,这样我们的事业才能顺畅的继续下去。

—-

文章来源:http://www.8btc.com/crash-landing

原文链接:https://medium.com/@octskyward/crash-landing-f5cc19908e32

原文作者:Mike Hearn

编译者/作者:面神护法

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...