为什么区块链很难?2018-06-07

2018-06-07  本文已影响0人  李章文

原文出自jimmysong,Medium原文链接如下:https://medium.com/@jimmysong/why-blockchain-is-hard-60416ea4c5c

围绕区块链的泡沫是巨大的,现在我们听说区块链可以做到:

  1. 解决收入不公平的问题
  2. 保障所有的数据永久性的安全
  3. 使得所有事情都更加的便捷和去信任化
  4. 挽救正在死亡的婴儿

这真的是区块链吗?它真的能做所有这些事情吗?区块链真的可以给各种各样的诸如:健康、金融、供应链管理和音乐版权等等行业带来一些惊人的变化吗?

同时,比特币是不是前区块链?你如何支持比特币的同时对其背后的技术说三道四?

在这篇文章中,我会在寻找区块链究竟是什么以及更为重要的,区块链不是什么的过程中尝试去回答上述的这些问题。

什么是区块链?

为了检验这些声明是否有效,我们需要先定义区块链是什么,这时就有了许多的混淆。很多公司使用“区块链”这个词来代指很多能够存储无法被篡改的数据的各种设备。而实际上,这样的设备,当然,是不存在的,至少在现实世界中是不存在的。

[image:035DC057-921A-47F0-94CF-B92971EBA46D-1785-0000050DA3DEC289/FullSizeRender.jpg]

那么究竟什么是区块链呢?技术上来说,区块链是一个连接着一串区块的链条,同时一个区块是一系列转账的集合。如果你不能理解这句话,你可以想象区块链是数据库的一个子集,同时拥有一些额外的功能。

最主要的区分区块链与一个普通的数据库的地方在于如何将数据储存进入数据库的特殊的规则。那就是:它不能与其它已经存在于数据库中的其它数据相冲突(一致性),它只能添加(不可篡改性),它的数据锁定在一个拥有者手中(拥有性),它是可复制和可提供的。最终,每个人都同意数据库中数据的状态(公认的)同时又没有一个中心化的组织(去中心化)。

而最后一点是区块链真正梦寐以求的东西。去中心化非常有吸引力是因为它不存在单点的失败。就是说,没有单个的节点有权力按照自己的需求夺取你的资产或改变“历史”。每个使用这一技术的人在寻求的是利用这一不可篡改的账本记录使得你不再需要信任任何人,这一益处是由巨大的消耗获得的。

区块链的消耗

不被任何单一组织控制的不可篡改的账本记录显然是非常有用的,但建立这样一个系统是有非常多的损耗的,让我们一起来看一看。

开发更加的严格和缓慢

开发一个一致可验证的系统不是一个简单的任务。一个小小的bug就有可能摧毁整个数据库或导致一些数据库与其它的不再相同。当然,一个被破坏或分裂的数据库将不再有一致性的授权。而所有这样的系统都被设计成需要拥有一致性。不存在“转移迅速且破坏事物”在区块链中。如果你在其中进行破坏,你将失去一致性同时区块链将崩溃且变得一文不值。

[image:0B0408A2-BF22-4EF9-ABA9-83F858F5EBF2-1785-0000054C64393BA5/FullSizeRender.jpg]

你可能会想,为什么你不能修复这一数据库或者重新调整后再开始并继续?这样的想法在一个中心化的系统中来实现是很简单的,但在一个去中心化的系统中却是非常困难的。你需要在这一系统中所有人的共识或批准才能改变数据库。区块链将成为一个公共资源而不是在任何一个单一的个体或组织的控制之下(去中心化的,还记得吗?),否则整个的努力将变成花费昂贵的代价来建立一个缓慢而中心化的数据库。

激励结构非常难以设计

增加正确的激励机制,以确保系统中所有的参与者都不能篡改或毁坏数据库是一个非常庞大的考虑。一个区块链可能具有一致性,但如果由于添加数据十分低成本导致其中充斥着大量的无用或无意义的数据将使得这一区块链不再有用。同时,如果添加数据的成本过高将导致其中几乎无数据的具有一致性的区块链同样无用。

[image:954E3813-035F-4B93-9715-7FB16B1756F9-1785-000005556DCFB167/FullSizeRender.jpg]

最终由谁提供数据?你怎么确定奖励的反馈与整个网络的目标相一致?节点为什么保存或更新数据以及什么使得他们在两个数据存在冲突时选择一个而不是另一个?这些都是需要被好好回答的关于激励的问题,这些问题不仅仅是需要在一开始被很好的解答,而且是需要在未来,技术和公司都发生变迁时都需要能被很好的解决的问题,否则区块链将不可用。

再一次,你可能会好奇为什么你不能“修复”一些被破坏的激励。同样的,在一个中心化的系统中,这可能非常容易,但在一个去中心化的系统中,在没有共识的情况下,你不可能简单的改变任何事情。不存在“修理”任何事情,除非获得所有人的同意。

治理的消耗是非常大的

一个传统的中心化的数据库只需要被写一次,而一个区块链需要被写成千上万次。一个传统的中心化的数据库只需要检查一次数据,而区块链需要检查成千上万次。一个传统的中心化的数据库只需要传输数据到存储器一次,而区块链需要传输数据到存储器成千上万次。

治理一个区块链的花费是十分高昂的,而且这一开销需要被证明是有效的。大多数的应用正在寻找一些前述的性能,如一致性和可靠性,来更加便宜的使用完整性检查,收据和备份等。

用户是独立自主的

由于公司不喜欢首先拥有用户数据的责任,这可能是非常好的。但是,如果用户“行为不端”,这又有可能会很糟糕。没有办法将使用粉尘数据攻击区块链的或者找到某种方式获利的用户提出出去,从而给其它用户带来了很多的不便。这与上述的观察同样有关系,即激励结构必须设计的非常好,因为如果用户找到某些利用的方式后是不会轻易放弃的,尤其是对于用户有利益驱使的话。

你可能在考虑你可以像在中心化的服务中那样简单的拒绝向恶意用户提供服务。然而,与中心化的服务不同的是,拒绝服务是非常困难的因为没有任何一个实体有权将任何人踢出局。区块链必须是公正的,并且严格执行由软件制定的规则。如果规则不足以阻止不良行为,那么是你运气不好。这里没有法律的“精神”。看似简单的处理恶意或行为不端的人,都可能需要持续很长一段时间。

所有的升级都是自愿的

强制升级是不可能的。网络上的其它玩家没有义务改变您的软件。如果他们这样做,这样一个系统将更容易、更快、更便宜地构建为一个中心化的系统。区块链的重点在于它不在单一实体的控制之下,它是反对强制升级的。

相反,所有的升级都必须向后兼容。这显然是非常困难的,特别是如果你想添加新的功能,并且从测试的角度来考虑会更加困难。软件的每个版本都将极大的增加测试矩阵并延长发布时间。

再一次的,如果这是一个中心化的系统,这些都将很容易通过不再为旧系统服务来纠正。而在一个去中心化的系统中,你不能这样做,你甚至根本不能强迫任何人做任何事。

扩展是非常难的

最后,扩展要比一个传统的中心化的系统困难至少几个数量级。原因也很明显。同样的数据必须存在于几百或几千个地方,而不是一个地方。传输、验证和存储的开销都是十分巨大的,因为数据库的每个副本都必须付钱,而不是在传统的中心化的数据库中一样仅支付一次这些成本。

当然,你可以通过减少节点数了来减轻负担。但是,如果那样考虑的话,你为什么还需要一个去中心化的系统呢?如果扩展的成本是首要考虑的问题的话,为什么不直接建立一个中心化的数据库呢?

中心化会容易得多

如果你注意到一个主题,那就是分散系统很难合作,维护费用昂贵,难以升级同时难以扩展。与区块链相比,中心化的数据库更快,更便宜,更容易维护而且更易于升级。那么,为什么人们继续使用区块链这个词好像它是解决所有问题的万能药?

首先,很多这些在区块链上销售的行业对于IT基础设施升级而言确实过气了。卫生保健使用的软件确实非常糟糕。财务结算仍然在70年代的软件上运行。供应链软件难以使用且难以安装。由于涉及风险,大多数这些行业的公司都拒绝升级。戊戍的基础设施升级费用高达数亿美元,最终无论如何都会回滚。区块链是销售这些IT基础架构升级的一种方式,让它们看起来更有吸引力。

其次,区块链是一种看起来像处于技术前沿的方式。不管你喜不喜欢,“区块链”这个词已经成为了一种生活,很少有人真正理解它是什么,但大家希望使用这些词来让自己显得更聪明。,就像“云”意味着别人的计算机,“AI”意味着调整后的算法,在这种情况下,“区块链”意味着一个缓慢、昂贵的数据库。

第三,人们真的不喜欢政府对某些行业的控制,并且希望有一个不同于通常很慢且昂贵的法律框架的不同裁决机制。对它们来说,“区块链”实际上只是摆脱政府监管的沉重工具的一种方式。这超出了区块链可以做的事情,区块链不会奇迹般地消除人类之间的冲突。

结果是很多人在承诺中被夸大了,却没有真正理解它的能力和开销。更糟糕的是,实际的技术细节和成本从很多风险投资人和管理人员中抽象出来,以至于模糊了区块链可以做什么和不可以做什么。这样情况下的每个人都害怕说皇帝没有衣服,认为自己在现有情况下是有的。

那么区块链究竟有什么用处?

我们已经确定了区块链相对于中心化的数据库而言是非常昂贵的了。所以你应该使用区块链的唯一原因是去中心化,也就是说,去除单点的故障或者控制带来的影响。

这自然意味着软件或者数据库不会经常改变周围的事物,如果有的话。此外,升级和改变规则应该有很大的不利之处。

大多数行业不是这样的。大多数行业都需要新功能或升级,并根据需要自由更改和扩展。鉴于区块链难以升级,难以改变并难以扩展,大多数行业对区块链的使用并不多。

我们发现的一个例外是金钱。与大多数工业用例不同,如果资金不变,资金会更好。不变和难以改变规则对金钱有利而不是损害。这就是为什么区块链是比特币工作的正确工具。

很明显,很多希望使用区块链的公司并不是真的想要区块链,而是IT升级到他们特定的行业。这一切都很好,但是使用“区块链”这个词来达到目的就是不诚实和过度使用它的能力。

结论

区块链是当今流行的术语,不幸的是,这种“区块链不是比特币”的文化基因不会消亡。如果你是一个中心化的服务,区块链不会给你带来任何不便于中心化数据库使用的方式。如果你是一个去中心化的服务,那么你可能会自欺欺人,而不会考虑系统中存在的单点故障。然而在真正的去中心化服务中根本没有“你”。

[image:E58652D7-CDD8-4DC8-A688-ED3224792E0C-13337-0001CF813F45D2D1/84ABF715-2ABD-46A5-AECB-0DD488BE086D.png]
整篇文章中最大的笑话

早在2000年初,科技行业的许多高管就推动使用Java和XML。尽管这两件事是工具而不是实际产品,但许多高管坚持使用它们,不管它们的工程师尝试的时候发现有多么的难用。区块链非常相似。重点关注你正在解决的问题,这些工具将使他们自己显而易见。专注于你想要使用的工具,你最终会制造Rube Goldberg机器,这些机器不会做任何特别好的事情。

从某种意义上说,目前区块链的概念正试图完成一些不可能的任务。他们希望通过中心化的控制获得去中心化系统的安全性。愿望是同时得到两个世界中最好的,但他们最终得到的是两个世界中最糟糕的。通过中心化系统的失败模式,您可以获得去中心化系统的成本和难度。

区块链被用来作为流行词来销售大量无用的蛇油。我们摆脱炒作的速度越快,长远来说我们都会变得更好。

上一篇下一篇

猜你喜欢

热点阅读