现在到处都在讨论区块链,来听听那些谈论区块链的人是怎么说的:区块链现在已经可以解决收入不均衡的问题,可以让数据永远安全,让所有事情更加有效率,并且无需信任。那么到底什么是区块链呢?它真的是无所不能吗?区块链真地可以为类似医疗,金融,供应链管理和音乐版权行业带来革新吗?
此文中,我会尝试通过考虑区块链究竟是什么,还有更重要地,区块链不能做什么?从而回答这些问题。
什么是区块链?
为了回答这些问题,我们需要先定义什么是区块链,不然会造成很多的困扰。很多公司使用“区块链”这个词,来表明这是某种充满魔术色彩的工具,有了区块链,这些公司的数据就永远不会出现错误。当然,这种东西是不存在的,至少在现实世界中是不可能的。
那么什么是区块链?严格来说,区块链就是很多区块相连接的链,每个区块包含着转账数据。如果你不理解最后一句,你可以将区块链想象成数据库相连接,在加上些更多的属性。
区分区块链和普通数据库的重要因素就是,在区块链中将数据放入数据库存在特殊的条件。那就是,输入的新数据不可以和已经在里面的数据有冲突(数据一致性),而且这些数据不可更改,数据本身和用户锁定在一起,这是可复制的以及有效的。最后,在没有中心化个体的控制下,每个人都对数据库中发生的事情达成共识。
最后一点就是区块链的核心。去中心化非常有吸引力,因为这暗示着不会存在任何的单点故障。也就是说,没有任何的单个机构可以拿走你的资产,或者改变“记录”来满足他们的需求。这种不可更改性,使得你不需要去相信任何人,这对任何区块链中的成员都是有益的。但是这份受益,却需要付出很大的代价。
区块链的代价
不被任何第三方控制的不可更改性能是非常有用的,但是对于创造这样的系统,也需要很多的代价。我们来看看其中的一些问题。
开发过程更加严格也更慢
创建一个完全统一的系统并不是简单的任务。很小的失误都会使得整个数据库被破坏,或者导致一些数据库变得和其他的不同。当然,被破坏或者分裂的数据库再也没有任何统一性的保证。并且,所有这类系统都需要设计成从外部来看具有统一性。在区块链中,并没有“快速前进,打破常规)”的说法。如果你打破常规,你就失去了统一性,那么区块链就会变得破坏以及没有价值。
那么也许你会想,为什么你不能只是修复这个数据库,或者重新启动再推进了?在中心化的系统中,这很容易解决,但是在去中心化系统中却非常困难。你需要系统中所有参与者的共识或者同意,来对数据库进行修改。区块链应该是开源的,并且不被任何中心化单位所控制。
激励制度设计有很大难度
增加激励制度,并且保证系统中所有的参与者都不会攻击或者破坏数据库,是非常值得考虑的事情。区块链也许具有一致性,但是如果其中含有很多无用数据的时候,这就不会非常有用,因为将数据输入的成本会非常低。也不会有任何具有一致性的区块链会有用,如果其中不包含任何数据,因为将数据放入的代价非常高。
那么如何确保数据最终的准确性?你怎么确保奖励是和网络的目标是一致的呢?为什么节点要去维持或者更新数据,在有冲突的时候,他们为什么要选择其中一个?这些都是关于激励的问题,现在需要解答,而且不止是在开始的时候需要统一好,后续随着公司和技术的变化,也要时刻保持统一。不然区块链就没用了。
而且,也许你想知道为什么你不能修改一些有问题的激励模式。再一次强调下,这在中心化系统中很容易实现,但是在去中心化系统中,在没有达成共识的前提下,你不能修改任何东西。除非从每个人那边获得共识,不然你不能修改任何东西。
维护非常花费成本
传统的中心化数据库只需要写入一次就可以。但是区块链需要写入几千次,传统的中心化数据可以只需要一次性检测数据。区块链需要检查几千次数据。传统中心化数据库需要只需要一次性将数据转移到存储器。区块链则需要将数据转移几千次。
维护区块链的成本是数量级增长,而且这部分成本还需要根据使用性能进行更改。大多数应用都在追求之前说的一致性和稳定性等特性,但是如果使用完整性检查,收据和备份,在成本上就会便宜很多。
用户为王
这样会很好,因为公司不喜欢将用户的数据放在首要责任。但是如果用户做出什么不好的行为,这也非常不好,因为你无法将这个用户踢出,或者指出这样做会影响其他很多的便利性。
以上可以说明,激励制度的设计非常非常重要,可以使得用户不想去放弃,特别是如果对这个用户来说有利可图。也许你会想说,你可以简单地拒绝为欺诈者服务,这在中心化服务过程中很容易实现。但是,和中心化服务不同,在区块链上拒绝服务很困难因为没有任何个人有权利去将别人踢出。区块链必须要遵守软件中写下的规则。如果这个规则不能惩罚不好的行为,那么只能说你运气不好。区块链上,没有“法律”的精神,你只能花费很长时间去处理恶意行为。
所有的升级是自发的
强制升级并不是选项。网络上的其他人员没有义务去更改你的软件。如果他们这样做,那么不如打造更加容易,快速以及便宜的中心化系统。区块链的关键在于它不受控制于单个主体,同时这也和强制升级相违反。
但是,所有的升级都要和之前兼容。显然这很困难,特别是当你想添加新的特性时,如果从测试角度来看,就更加困难了。每个版本的软件都会添加很多的测试矩阵,也会花费更多的时间来进行释放。
扩容非常困难
最后,在扩容性方面至少要比传统中心化系统要难几个数量级。原因很明显。同样的数据需要在成百上千个地方,而不是像中心化那样,在同个地方。传输,验证和存储的开销是很大的,因为区块链上任何数据库的复制都需要花钱,而不像中心化的数据库那样,只需要付费一次就可以。
中心化会容易很多
如果你发现这个问题,那就是去中心化的系统很难进行运作,维护也很昂贵,很难升级并且不容易扩容。中心化的数据库和区块链比起来,就会更加快速,便宜,容易维护并且升级也比较容易。那么为什么人们还要使用区块链作为解决方案呢?
首先,很多想要使用区块链的行业,对于IT底层升级已经完全过时了。医疗行业有众所周知地难用的软件。金融结算还在用70年代的软件。供应链管理软件很难使用,也很难安装。这些行业的很多公司拒绝去更新软件,因为这会带来很多风险。有很多底层更新,花费了数百位美元,但是最后又用回之前的软件。区块链可以帮助这些行业IT底层的更新。
其次,区块链让你看起来是在科技的前端。其实很少人真地理解区块链,但是都想要使用这些词汇来让自己听起来显得更加聪明。就好像“云计算”意味着其他人的电脑,“AI”意味着修正算法,“区块链”在这篇文章中的意思就是缓慢,昂贵的数据库。
第三,在某些行业,人们不喜欢政府的监管,所以希望有和缓慢昂贵的法律框架不同的仲裁机制。对他们来说,区块链是避免政府监管很好的方法。这其实也高估了区块链可以做的事情,区块链不可能魔幻版地去除人的影响。我们现在就有些像“皇帝的新衣”。
那么区块链有什么用处呢?
我们已经说了,区块链和中心化数据库比起来,非常昂贵。所以你需要使用区块链的原因,就是它可以完成去中心化。也就是说,它移除了单个主体的控制。
这也就是说,软件或者数据库不能经常去进行更改。不会有太多升级和改变规则的余地。
但是大多数行业不像这样,很多行业都需要进行新功能的升级,并且需要能够自由地进行更改以及扩展。假设区块链很难去升级,改变以及扩容,很多行业并不需要区块链。
但是有个例外就是货币。和很多其他行业不同,货币不希望改变。不可篡改和难以改变对于货币来说,是好处。这就是为什么当区块链应用在比特币上的时候,它是个非常正确的工具。
很清楚地是,很多公司想要使用区块链,并不是因为想要区块链,而是需要将IT底层升级到适用于他们行业。这是非常好的,但是使用区块链这个词去过度营销有些过度。
结论
这些天区块链是个很流行的词语,但是不幸地是,但是如果你在使用中心化服务,区块链不会让你获得更多。如果你在使用去中心化系统,那么可能你没有考虑到如果其中出现单个节点的问题该怎么办。区块链,说起来容易,做起来可不容易。
回到2000年代早期,很多科技行业的巨头都推动使用Java和XML。尽管这两者是工具,并不是真正的产品,很多巨头也坚持使用它们,不论他们的工程师使用起来有多不方便。区块链和这个很像,关注你需要解决的问题,那么工具就会出现。如果你只关注工具,那么最终就会成为鲁布•戈德堡机械,不会做成什么事。
因此,现在很多区块链的概念都尝试在做些不可能的事情。他们想要这种去中心化系统的安全性掌控在一个中心化个体手上。想要获得两者的好处,但是最终可能获得两者的坏处。最后我们获得了去中心化系统的成本和困难,同时还有中心化系统的失败模式。
区块链现在被认为是万金油,可能我们越快地走出这个旋涡,我们就会走地更长远。