长文│区块链有那么厉害吗

近年来围绕区块链的炒作声势浩大。按照当前炒作的说法,区块链可以做到以下4点:

1.解决收入不平等问题

2.确保所有数据永远安全

3.让一切活动更加高效且无需信任基础(trustless)

4.拯救传统行业

区块链到底是什么?它真的能实现这些事情吗?区块链真的能为医疗、金融、供应链管理、音乐版权等行业带来突破吗?支持区块链不就意味着拥护区块链吗?如果你支持区块链,你怎么能在背后说区块链的坏话呢?

在本文中,我会探讨区块链是什么以及不是什么,借此回答这些问题。

区块链是什么?

为了检验上文中的那些观点,我们得先定义区块链是什么,这个问题让很多人一头雾水。许多公司使用“区块链”这个词来指某种能确保数据永远不出错的神奇设备。毫无疑问,这种设备是不存在的,至少在现实世界不存在。

A:我们今年应该关注什么?

B:区块链

B:区块链将改变一切,每个人都在说区块链

B:区块链的潜在应用是无穷的,我们一定不能落人之后

A:区块链到底是什么?

B:“人工智能”

确切来说,区块链是数据区块以顺序相连的方式组合成的一种链式数据结构,区块是一组有序排列的交易。如果你不理解这句话,你可以将区块链想作为数据库的一个子集,这个子集有若干额外的特性。

区块链和一般数据库的主要不同在于将数据放入到(区块链)数据库时须遵循特定规则。也就是说,新放入的数据不能与数据库中的其他数据相冲突(数据必须保持一致),数据只能增补(不可改变),数据本身被绑定给一个拥有者(数据是可拥有的),数据是可复制、可利用的。数据库中数据的(规范)状态由用户商定,无中央党派参与(去中心化)。

区块链的精髓是去中心化,它意味着不存在任何故障点,这是它非常诱人的地方。也就是说,没有任何机构可以随心所欲地窃取资产或更改“历史”。这种不可改动的审计追踪可以使用户不需要信任任何人,而这正是区块链用户追求的好处。但是,这种好处的代价很大。

区块链的成本

不受任何一方控制、不可更改的审计追踪固然很有用,但是开发这种系统的成本很大。下面让我们看看这些成本来自哪些地方。

开发较为严格且缓慢

开发一个一致的系统并不简单。一个小小的bug就能摧毁整个数据库,或者导致部分数据库变得与其他数据库不同。当然,数据库一旦毁坏或破裂,就再也无法保障一致性了。而且,开发这些系统时从一开始就必须确保一致性。在区块链里,“快速行动,打破陈规”是行不通的。如果数据库被打破,系统就会失去一致性,区块链就会被毁坏,变得毫无价值。

A;我们还需要三名程序员B:使用灵活的编程方法

A:灵活的编程方法不代表用更少的人做更多的工作

B:那就找一些代表它的词语再来问我

激励结构模式很难设计

添加正确的激励模式,确保系统中的所有参与者无法滥用或破坏数据库,也是一个主要考虑事项。如果往区块链里放入数据的成本非常低,导致区块链中都是毫无意义的无用数据,满足一致性的区块链也可能会变得用处不大。如果往区块链里放入数据的成本非常高,导致区块链里几乎没有数据,一致的区块链也会变得毫无用处。

用户握有主权

这点非常好,因为企业本来就不乐意承担对用户数据的责任。但是,如果用户行为不当,这样反而会适得其反。如果用户用无意义的数据大量填充区块链,或者在使用某种方法获利时给其他用户造成了很大不便,系统是无法踢出这些用户的。所以我在上文中说必须设计好激励结构模式,因为找到获利途径的用户是不会放弃这个机会的,尤其是可以从中获得好处的时候。

那为什么不拒绝给恶意用户提供服务呢?这在中心化的系统中非常容易,但是和中心化的服务不同,拒绝提供服务是非常难实现的,因为没有任何一家机构拥有踢出任何用户的权利。区块链必须保持中立,执行软件规定的规则。如果这些规则无法完全制止恶劣行为,那只能自认倒霉了。区块链里没有任何法律“精神”。也许在很长一段时间内,开发者都必须面对这些恶意或行为不端的用户。

所有的升级都是自愿的

所有升级都必须确保向后兼容。要做到这点显然相当困难,尤其是在通过升级添加新的特性时。如果从测试的角度来看,会更难做到。每个版本的软件都会给测试矩阵带来很多麻烦,导致发布新版本的时间延长。

(升级吧!老兄)

如果是中心化的系统,修正起来就会非常容易,只要不再服务旧系统就行了。但是在去中心化的系统中就不能这么做,因为系统无法强迫任何人做任何事。

相比传统的中心化的系统,在区块链中进行扩展的难度只是要高出多个数量级。原因很明显:同一的数据必须存储在成千上万个地方,不能存储在一个地方。传输、验证和存储的成本无比巨大,因为每个数据库的副本都必须支付成本。而在传统的中心化的数据库中,这些成本是一次性支付的。

当然,你可以通过减少节点数来减少成本负担。但是如果是这样的话,那为什么要开发一个去中心化的系统呢?如果扩展成本是主要考虑事项,那又为什么不干脆开发一个中心化的数据库呢?

中心化容易很多

正如上文所言,中心化的系统很难开发,维护成本高,很难升级,很难扩展。与区块链相比,中心化的系统开发起来更快,成本较低,维护和升级更为容易。那么问题来了,为什么人们嘴里一直挂着“区块链”这个词,好像区块链就是解决他们问题的万能药?

A:在ICO后,我们革命性的平台将利用区块链来……

B:区块链!!!!!!!

A:我们的应用是分布式的应用

B:区块链是一个缓慢的数据库

原因一,区块链的主要兜售对象大多是很久没有进行IT架构升级的行业。医疗保健业现在仍使用着非常糟糕的软件。金融结算业使用的仍然是70年代的软件。供应链管理业使用的软件既难使用又难安装。这些行业中的大多数公司都拒绝进行升级,因为升级会带来风险。IT架构升级导致损失数亿美元的案例比比皆是。区块链可以使IT架构升级更为诱人,让消费者更容易接受升级。

原因二,区块链可以让别人觉得你处在技术前沿。不管你喜不喜欢,“区块链”这个词本身听起来就很高大上。很少有人真正理解区块链是什么,人们使用这个词只是为了赶时髦,为了让别人感觉自己更加聪明。如果说“云”指的是别人的计算机,“AI”指的是经过调整的算法,按这种说法“区块链”指的就是一个缓慢、昂贵的数据库。

原因三,人们不喜欢政府控制特定行业,他们想要一种与现有法律框架不同的裁决机制,因为前者往往十分缓慢且昂贵。在他们看来,“区块链”只是一种让他们摆脱庞大政府监督机构的一种方式。但是这完全是炒作,区块链无法神奇地消除人类矛盾。

结果,很多人没有真正理解区块链的作用和成本,在炒作的影响下相信了它的承诺。更糟糕的是,许多风险投资机构和公司高管没有认识到实际的技术细节和成本,他们不清楚区块链可以实现什么,无法实现什么。这些高管的手下不敢告诉他们真相,就像是童话《皇帝的新装》中,没人敢告诉皇帝,他没穿衣服。

区块链有什么好处?

我们已经知道,相较于中心化的数据库,区块链的成本非常高。因此,区块链的唯一用处就是去中心化——消除故障点或第三方控制。这就意味着,软件或数据库不能经常进行更改。升级带来的好处很少,但是系统被破坏或更改规则带来的弊端更多。

大多数行业并不是这样。大多数行业需要新的特性或升级,而且必须可以自由地进行改变和扩展。由于区块链很难升级、很难改变、很难扩展,因此区块链在大多数行业中并没有多大用处。

不过货币是一个例外。和大多数行业用例不同,货币不改变反而更好。对于货币而言,区块链不可篡改的属性是很好的。这就是为什么区块链技术适合用于比特币的原因。

很显然,很多希望利用区块链的公司并不是真的想要区块链,而是想对他们所在的行业进行IT更新。这个目的很好,但是利用“区块链”这个词来实现目的是不诚实的,是对区块链能力的过分吹嘘。

结语

近来区块链变成了一个热词,“区块链非比特币”这个流行语不会消失。如果你提供的是中心化的服务,获得同样的结果,用中心化的数据库要比用区块链便宜一千倍。如果你提供的是去中心化的服务,你可能在自欺欺人,因为你没有考虑系统中存在的单个故障点。在真正的去中心化服务中,“你”是完全不存在的。

2000年年初的时候,科技行业的很多高管推行使用Java和XML。虽然Java和XML是工具而不是真正的产品,许多高管仍然坚持支持使用Java和XML,不管这两种工具是否适合工程师用来实现他们的预期目标。区块链很像当时的Java和XML。专注于你要解决的问题,解决问题的工具会自然显现。如果专注于你想使用的工具,你最终就会制造出什么也做不好的鲁布戈德堡机械。

在某种程度上,当前的区块链构想是在试图实现不可能实现的事。人们既想要去中心化系统的安全性,也想要中心化系统的控制权。既想要鱼也想要熊掌,最终只能竹篮打水一场空——既拥有去中心化系统的成本和困难性,又拥有中心化系统的失效模式。

人们用区块链这个热词来销售很多毫无用处的「万灵药」,但是它已经被用烂了。我们越快摆脱炒作,我们就走得越远。

翻译:sean

原文:https://medium.com/@jimmysong/why-blockchain-is-hard-60416ea4c5c

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180524G1NV8Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券