首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一篇文章读懂区块链

Why Blockchain is Hard

作者:Jimmy Song

翻译:周妍琳

关键词:区块链 Blockchain、比特币 Bitcoin、企业软件 Enterprise Software、分布式账本 Distributed Ledgers、加密数字货币 Cryptocurrency

关于区块链的资讯天花乱坠的宣传铺天盖地而来,我们所听到的有关区块链的信息告诉我们,区块链目前能够:

1.解决收入的不平衡问题;

2.永远保证所有数据的安全;

3.让一切更有效率和可信任;

4.能够拯救垂死的婴儿

不管怎样,这个见鬼的区块链到底是什么东西?它真的能做到以上所有事情吗?区块链能为诸如医疗保健、金融、供应链管理和音乐版权等各行各业带来惊喜吗?

此外,难道独立于比特币的存在意味着你是专业的区块链吗?除了说它背后一些不好的技术外要如何才能独立于比特币呢?

在本文中,我将试图通过探讨区块链是什么?更重要的是它不是什么?来回答这些问题。

▌什么是区块链?

为了检验其中的一些说法,我们必须定义区块链是什么,而且在这之中有很多令人感到困惑的谎言。许多公司利用“区块链”这个词来表示一种神奇的设备,而这种设备能使他们的数据永不出错。但是毫无疑问,这样的设备是不存在的,至少在现实世界中确实是这样的。

那么区块链到底是什么?从技术上来说,区块链是一个链表,一个区块则是一组有序的交易。如果你不理解最后一句话,那么你可以将区块链看作是数据库的一个子集,但是有一些附加的属性。

区块链和一般的数据库主要区别在于,它们在向数据库输入数据时有一些特殊的规则。换而言之,它们不会和即将输入的数据产生任何矛盾(一致性),它只是附加上的(不可篡改),而且数据本身是被用户所锁定的(所属性),它是可复制和可获取的。最后,每个人都同意数据库中事物的所处状态(权威性),没有一个集中点(分散性)。

它的最后一个要点实际上就是区块链的圣环。它的分散性非常有吸引力,因为那意味着不会有单一的失败点,那就是说,没有任何一个权威机构能够拿走你的资产或是改变“历史”来满足他们的需求。这种不可变的审查跟踪令你不需要相信任何人,这也是所有使用这项技术的人都在寻找的好处。但是,要获得这些好处也需要付出巨大的成本。

▌区块链的成本

这项不可变的审查跟踪不受任何单独一派的控制,毫无疑问这是非常有用的,但是要创造这样一个系统却需要巨大的成本。让我们来看看其中的一些问题。

▌发展更加严格和缓慢

要创造一台可验证的一致性系统并不是一项简单的任务。一个小漏洞就可能摧毁整个数据库或是导致一些数据库和其他数据库不一致。当然,一个被损坏的数据库或是一个分解了的数据库都不再拥有任何一致性的保证。此外,所有系统必须在一开始就被设计成一致的。在区块链中,没有“快速移动和能够打破的规则”。如果你打破了规则,那么你将会失去一致性,这个区块链将会损坏,并毫无价值。

你也许会想,为什么你们不能修复数据库,或是重新开始前进呢?在集中式系统中这很容易做到,但对于一个分散式系统来说却非常困难。你需要达成共识,获得系统内所有使用者的一致同意才能更改数据库。区块链必须作为一个公共资源而不受一个单一实体的控制(分散性,还记得吗?),否则就是用一种非常昂贵的方式创建了一个运行缓慢的集中式数据库。

▌激励机制难以设计

想要增加正确的激励机制并确保系统中的所有参与者不会滥用或破坏数据库同样也是一个很重要的考虑因素。因为区块链具备一致性,所以如果输入数据的成本很低,则会放入太多琐碎和无用的数据。同样的,如果输入数据的成本很高,数据库就几乎没有数据,那么这个一致的区块链也没有什么用。

那么是什么给到了最终数据?要如何确保奖励与数据目标保持一致?什么节点要保存或更新数据?是什么使它们选择了一段数据而不是另一个数据?这些问题都需要设计好完善的激励机制,它们不仅仅需要在开始时保持一致,而且在未来随着科技和公司的变化也仍需保持所有节点的一致,否则区块链将是无用的。

再一次,你可能会想为什么不能“修复”一些受损的机制,再次说明这对集中性系统来说轻而易举,但是对于分散系统来说,如果没有一致同意,你不能轻易地改变任何事。因此要是没有得到每位使用者的同意,想要“修复”任何东西是不可能的。

▌维修费用高昂

一个传统的集中式数据库只需要写入一次,但一个区块链则需被写入成千上万次。一个传统的集中式数据库只需要检查一次数据,而区块链则需要检查无数次。一个传统的集中式数据库只需要传输数据一次即可存储,但区块链需要传输数千次。

维护区块链的成本要高出几个数量级,而且成本的花费需要以实际效用来证明。大多数应用程序会寻找一些早期声明的一些属性,比如一致性和可靠性,可以使用完整性检查、收据和备份的方式来降低这些成本。

▌用户是至高无上的

对公司来说有利的,因为公司并不喜欢承担持有用户数据的责任。然而,如果用户行为不端,这可能就非常糟糕。没有办法摒弃那些向你的区块链发送无聊数据,或者找到以某种方式获利,但会给其他用户带来不便的用户。这与上述观点有关,即激励结构必须设计得非常非常好,因为如果用户发现了一个漏洞就不会轻易放弃它,尤其是能给用户带来利润的漏洞。

你也许会认为你可以很容易地拒绝为不怀好意的用户服务,但这只在集中式系统中能够轻易做到。但是,不同于集中式服务,分散式系统拒绝服务是很难做到的,因为没有一个单一实体有权利去踢出任何人。整个区块链必须是公正的,并且得强制执行软件所定义的规则。如果规则不足以去对付这些恶劣的行为,那只能说你运气不够好。这里没有所谓的法律“精神”,你仅仅去对付那些必须处理的恶意和行为不端的用户,可能就得消耗很长时间。

▌所有的升级是自愿的

强制升级并不是一种选择,网络上的其他参与者并没有义务更改你的软件,如果他们这么做了,那么建造这样的系统将会更简单、更快并且更便宜,就如一个集中式系统。但区块链的关键点就在于它不受单一实体的控制并且与强制升级相违背。

取而代之的是,所有的升级必须向后兼容,很明显这是很艰难的,尤其是如果你想要添加一些新特性的时候,或是当你想要从测试的角度去考虑时那甚至会更加困难。该软件的每个版本都为测试矩阵添加了很多内容,并因此延长了发布时间。

再强调一下,如果这是集中式系统,只要通过停止为旧系统服务就能很容易去纠正。但是在分散式系统中你不能那么做,因为你不能强迫任何人去做任何事。

▌缩放比例确实十分困难

最后,关于缩放,这种分散式系统至少比传统的集中式系统难上好几个数量级。原因显而易见,同样的数据必须在成百上千的地方存在,而不仅仅是一个单一的地方。传输、验证和存储的开销是巨大的,因为你必须支付数据库中的每一个副本,而不是在传统的集中式数据库中只需支付一次。

当然,你可以通过减少节点的数量来降低你的负担。但是在那个阶段,为什么你完全需要一个分散式系统?如果缩放的成本是主要的顾虑,那么你为什么不去建立一个集中式的数据库?

▌集中式简单得多

如果你注意到一个主题,那就是很难与分散式系统工作,不仅维修费用昂贵,升级困难,而且还要为缩放问题感到头疼。与区块链相比,集中式系统比区块链更快,更便宜,更易于维护和升级。那么为什么人们认为区块链他们解决所有问题的灵丹妙药了?

首先,许多升级到区块链的行业实际上早就应该进行基础设施升级了。卫生保健是一个臭名昭著的糟糕软件,他们依旧在使用七十年代的软件来进行金融结算,但是供应链管理的软件既难使用又难安装,因为担心涉及到风险,这些行业的大多数公司都拒绝进行升级。虽然有些花费了数亿美元对基础设施进行了升级,但是最终也还是被打回原形。区块链是这些IT基础设备升级的一种方式,同时也能让他们变得更加有野心。

其二,区块链是一种能使你看起来正处于技术领先地位的方式。无论喜欢与否,“区块链”这个词已经有了它自己的存在形式。很少有人真正理解它是什么,但如果你想要表现得很时髦,利用这些词听起来会更加合适。就像“云”意味着别人的计算机和“AI”是一种经过调试的算法一样,在这种情况下,“区块链”则意味着一个缓慢而昂贵的数据库。

第三,人们真的不喜欢政府对某些产业的控制,比起昂贵又缓慢的法律体制,他们想要的是一种不同的裁决机制。对他们而言,“区块链”实际上只是一种摆脱政府沉重监管的一种方式。这超出了区块链的作用,区块链并没有像变魔术一样带走人类的冲突。

结果是许多人在没有真正理解其能力和成本的情况下,就被大肆宣传的承诺所刺激兴奋起来了。更糟的是,实际的技术细节和成本从许多风投公司和高管那里被抽离出来,以这样的方式来掩盖区块链能做什么和不做什么。他们下面的每个人都害怕说皇帝没有衣服——我们现在有了这种情况。

▌那么区块链的好处是什么?

我们已经确信和集中式系统相比较,区块链是非常昂贵的。因此你应该使用区块链的唯一原因就是去中心化,也就是说消除单点故障或控制。

自然这也意味着软件和数据库不得经常改变,但如果真要这么做的话,通过升级或改变规则没什么好处,同时会有很多不足之处。

大多数行业并不喜欢这样,他们都需要新的功能和升级,以及在必要时进行更改和扩展的自由。但鉴于区块链很难升级、难以改变和扩展,因此区块链对多数行业来说并无多大用处。

不过我们发现货币是一个例外,不同于大多数行业的使用案例,从货币的角度来说如果不作出改变那么情况会更好。但是对规则的不变性和困难做出一些改变对货币也有积极的影响而并非一定会造成损害。那就是为什么当我们说到比特币时,会将区块链作为一个合适的工具。

很明显,很多使用区块链的公司并不真正需要区块链,而是需要升级他们的软件和基础设施。并不是不能使用区块链,但使用“区块链”这个词是不诚实的,同时也过分吹嘘了它的能力。

▌结语

如今,区块链是一个热门词汇,但不幸的是“区块链并不是比特币”的传播不会消失。如果你是一个集中式服务,区块链并不能为您提供任何您使用集中式数据库便宜一千倍便宜的东西。。如果你是一个分散式服务,那么你很可能在欺骗你自己,而不去思考你系统中的单点故障。在真正的分散式系统中,根本就没有“你”。这是这篇文章中最大的笑话。

早在2000年初期,许多科技行业的高管都在推动JAVA和XML的使用。尽管这两个东西都能成为工具但并不是实际产品,不管他们的工程师曾尝试达到的目标有多不合理,但许多高管都坚持要使用它们。区块链和它非常相似,将注意力放在你正解决的问题上,这些工具的效用就会很容易显现出来,但是如果专注于你想使用的工具上,那么你最终会制造出不能把任何事都做得特别好的Rube Goldberg机器。

从某种意义上来说,目前有关于区块链的概念正在试着做不可能的事,他们想要分散式系统的安全性,同时还想要一个集中式的系统控制。他们想要得到两者中最好的,但是最终他们却得到了两者中最糟糕的。在集中式系统的失效下,你会遭遇到分散式系统的高价和其难度。

区块链作为一个时髦用语被用得太多了以至于成为了太多没用的所谓的万灵油。如果我们越快摆脱这种炒作,我们的长期发展就会越好。

Thanks to David A. Harding and Michael Flaxman.

感谢 大卫·A·哈丁和迈克尔·弗拉克斯曼

Insight Future

Insight Future是雪山创投营新增专栏,通过筛选翻译不仅限于科技、创投、资本、金融等领域优质海外内容,为创业者提供全球最具价值的见解与趋势。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券