原文作者:Jimmy Song
编译:TRON
原文标题:Why Blockchain is Hard
文章来源:https://jimmysong.medium.com/why-blockchain-is-hard-60416ea4c5c
注:本文最初发表于2018年,中文译文有删节
围绕区块链的夸张宣传有很多。经常会听到区块链将:
1、解决收入不平等
2、让所有数据永远安全
3、让一切变得更加高效和无需信任
到底什么是区块链?它真的可以做所有这些事情吗?区块链能否为医疗保舰金融、供应链管理和音乐版权等各行各业带来惊喜?
支持比特币不就意味着你支持区块链吗?你怎么能支持比特币,却说它背后的技术不好?
在本文中,我试图通过解释区块链是什么,更重要的是它不是什么,来回答这些问题。
区块链是什么?
搞清楚诸多问题之前,我们必须定义区块链是什么,而这其中存在很多误解。许多公司使用“区块链”这个词来表示某种神奇的设备,通过它他们的所有数据都不会出错。当然,这样的设备是不存在的,至少现在没有。
那么什么是区块链?从技术上讲,区块链是一个个由有序交易构成的区块所组成的链表。如果你不理解的话,你可以将区块链视为一种带有附加属性的数据库。
区块链与普通数据库的主要区别在于,如何将数据放入数据库有特定的规则。也就是说,它不能与数据库中已经存在的其他一些数据发生冲突(一致),它仅是追加(不可变),并且数据本身可以被锁定给一位所有者后(可拥有),它是可复制的和可用的。最后,由每个人共同决定数据库中的内容,而没有一个中心组织(去中心化)。
其中最后一点才是区块链的神圣理念。去中心化非常有吸引力,因为它意味着没有单独一个点造成的失败。也就是说,没有任何一个权威机构能够夺走你的资产或改变“历史”以满足他们的需求。这种无需信任任何人的、不可变的交易记录是每个使用该技术的人都在追寻的好处。然而,这种好处需要付出巨大的代价。
区块链的成本
不受任何一方控制的不可变交易记录当然是有用的,但创建这样一个系统需要很多成本。让我们来看看其中的一些问题。
开发更严格更慢
创建一个可证明的保持一致的系统并非易事。一个小错误可能会损坏整个数据库或导致某些数据库与其他数据库不同。当然,损坏或分裂的数据库不再有任何一致性保证。此外,所有此类系统必须从一开始就设计为一致的。区块链中没有“快速行动并打破常规”。如果你破坏了东西,你就会失去一致性,区块链就会变得腐败和毫无价值。
你可能在想,为什么你不能直接修复数据库或重新开始并继续前进?这在中心化系统中很容易做到,但在去中心化系统中却非常困难。你需要达成共识,或经过系统中所有参与者的同意,才能更改数据库。区块链不是费大力气只为创建一个昂贵的、缓慢的中心化数据库,它必须是不受单个实体控制的公共资源(去中心化)。
激励机制难以设计
为区块链创建正确的激励机制并确保系统中的所有参与者都不会滥用或破坏数据库,同样是一个要考虑的重要因素。有时区块链即便具备了一致性,但如果写入成本太低,也会导致其中有很多没用的垃圾数据,使得整个区块链变得没有价值。如果写入数据成本太高,则会导致区块链中没有数据,那么这个区块链也将没有用处。
最终由什么给出数据?如何确保激励与网络目标一致?节点依据什么来保持或更新,当它们冲突时依据什么将一个覆盖另一个?这些都是必须要解决的激励问题,它们不仅需要在开始时,还要随着技术和公司的变化在未来的所有时间点保持一致,否则区块链将无用。
同样,你可能想知道为什么你不能“修复”一些损坏的激励机制。再次强调,这在中心化系统中很容易,但在去中心化系统中,你根本无法在没有达成共识的情况下更改任何内容。区块链里没有“修复”,除非和所有人达成协议。
高昂的维护成本
传统的中心化数据库只需要写入一次的操作。区块链中需要被写入数千次。传统的中心化数据库只需要检查一次数据,区块链需要数千次检查数据。传统的中心化数据库只需传输一次数据即可存储,区块链需要传输数千次数据。
维护区块链的成本要高出几个数量级,并且需要证明有效。大多数应用程序寻找一些属性,如一致性和可靠性,可以通过使用完整性检查、收据和备份,以更低的成本获得这些功能,而不一定通过昂贵的区块链。
用户掌握所有权
对于那些不想对保存用户数据承担责任的公司,区块链可能是好事。但是,如果用户“行为不端”,这可能会很糟糕。你没有办法踢出那些向你的区块链发送垃圾数据的用户。或者你想出了一种方法对某些人有效,但可能会给其他用户带来很多不便。综上,激励机制必须设计得非常非常好,因为发现漏洞的用户不太可能放弃它,特别是如果用户有有利可图的话。
你可能认为可以简单地拒绝为恶意用户提供服务,这在中心化服务中很容易做到。然而,区块链与中心化服务不同,拒绝服务很困难,因为没有一个实体有权将任何人踢出去。区块链必须是公正的并执行软件定义的规则。如果规则不足以阻止不良行为,那么你就不走运了。这里没有法律的“精神”。你只能亲自处理恶意或行为不端者,可能需要很长时间。
所有升级都是自愿的
强制升级是不可取的。网络上的其他用户没有义务配合更改软件。如果他们这样做了,这样一个系统将更容易、更快、更便宜的构建为一个中心化的系统。区块链的关键在于它不受单个实体的控制,强制升级违反了这一点。
并且,所有升级都必须向之前兼容。这显然是相当困难的,特别是如果你想添加新功能,并且从测试的角度思考时会更加困难。软件的每个版本都增加了很多测试群体,延长了发布时间。
同样,如果这是一个中心化系统,通过不再为旧系统提供服务,这将很容易纠正。但是在一个去中心化的系统中你不能这样做,你不能强迫任何人做任何事情。
扩展与优化真的很难
最后,扩展与优化至少比传统的中心式系统难几个数量级。原因很明显。相同的数据必须存在于数百或数千个地方,而不是一个地方。传输、验证和存储的开销是巨大的,因为数据库的每个副本都必须为其支付费用,而不是在传统的中心化数据库中只支付一次这些成本。
当然,你可以通过减少节点数量来减轻负担。但最初,你为什么需要一个去中心化的系统呢?如果扩展与优化成本是主要问题,为什么不建立一个中心化的数据库呢?
中心化要容易得多
如果你注意到一个主题,那就是去中心化系统非常难以使用、维护成本高、难以升级且难以扩展。中心化的数据库比区块链更快、更便宜、更容易维护和更容易升级。那么为什么确实有很多人持续使用“区块链”这个词,好像它是解决所有问题的灵丹妙药?
首先,许多采购区块链相关产品的产业确实早该进行 IT 基础设施升级了。医疗保健的软件是出了名的糟糕。财务结算仍然在 70 年代的软件上运行。供应链管理软件既难用又难安装。由于涉及的风险,这些行业中的大多数公司都拒绝升级。有许多基础设施升级耗资数亿美元,最终还是被回滚。区块链是一种销售这些 IT 基础设施升级并使其更具吸引力的方式。
其次,区块链是一种让你看起来处于技术前沿的方式。不管你喜不喜欢,“区块链”这个词已经有了自己的生命。很少有人真正理解它是什么,但想要显得时髦,所以用这些词来听起来更聪明。就像“云”是指别人的计算机,“人工智能”是指一种自我调整的算法一样,“区块链”在这种情况下意味着一个缓慢而昂贵的数据库。
第三,人们真的不喜欢政府对某些行业的干预,他们想要一种不同于通常缓慢而昂贵的法律框架的裁决机制。对他们来说,“区块链”实际上只是摆脱沉重的政府监管机构的一种方式。这夸大了区块链的作用。区块链不会神奇地消除人类冲突。
结果就是很多人在没有真正了解区块链的功能和成本的情况下,夸大了其应用前景。更糟糕的是,实际的技术细节和成本是从许多 VC 和高管那里抽象出来的,以至于模糊了区块链能做什么和不能做什么。他们下面的人都不敢说皇帝没有穿衣服,这就是我们现在的情况。
那么区块链有什么用呢?
我们已经确定,相对于中心式数据库,区块链非常昂贵。所以你应该使用区块链的唯一原因是去中心化。也就是说消除单点故障或控制。
这自然意味着软件或数据库不能经常改变,如果有的话。升级应该没有什么好处,改变规则会有很大的坏处。
大多数行业都不是这样的。大多数行业都需要新功能或升级,以及根据需要进行更改和扩展的自由。鉴于区块链难以升级、难以改变和难以扩展,大多数行业对区块链的使用并不多。
我们发现的一个例外是金钱。与大多数工业用例不同,如果不改变,钱会更好。改变规则的不变性和困难对金钱是有利的,而不是有害的。这就是为什么区块链是比特币运作的正确工具。
很明显,许多希望使用区块链的公司实际上并不需要区块链,除非要对特定行业进行 IT 升级。区块链很好,但不应使用“区块链”这个词来达到不诚实的目的,并且夸大了它的能力。
结论:
如今,区块链是一个流行的热词,不幸的是,这种“区块链不是比特币”的说法不会消失。如果你是一个中心化服务,区块链不会给你任何你不能用中心化数据库便宜一千倍的东西。如果你是去中心化服务,那么你可能是在自欺欺人,没有考虑系统中存在的单点故障。在真正去中心化的服务中根本不会有“你”。
早在 2000 年代初期,科技行业的许多高管都在推动使用 Java 和 XML。 尽管这只是两件 工具 而不是实际产品,但许多高管仍坚持使用它们,无论这与他们的工程师要实现的目标有多不匹配。区块链非常类似。专注于你正在解决的问题,这些工具会让它们变得显而易见。专注于你想使用的工具,你只会造出鲁布戈德堡机械,一种什么也做不好的复杂机械。
从某种意义上说,当前的区块链概念正在尝试做不可能的事情。他们想要一个中心化系统来控制去中心化系统的安全性。欲望是两全其美的,但他们最终得到的却是不伦不类。你只会用去中心化的成本和难度,来解决一个寻常的中心化问题。
区块链被用作销售大量无用噱头的流行语太多了。我们越快摆脱炒作,我们的长期生活就会越好。