区块链实施需要注意哪些
巴比特 51CTO

什么是区块链?

为了回答这些问题,我们需要先定义什么是区块链,不然会造成很多的困扰。很多公司使用“区块链”这个词,来表明这是某种充满魔术色彩的工具,有了区块链,这些公司的数据就永远不会出现错误。当然,这种东西是不存在的,至少在现实世界中是不可能的。

那么什么是区块链?严格来说,区块链就是很多区块相连接的链,每个区块包含着转账数据。如果你不理解最后一句,你可以将区块链想象成数据库相连接,在加上些更多的属性。

区分区块链和普通数据库的重要因素就是,在区块链中将数据放入数据库存在特殊的条件。那就是,输入的新数据不可以和已经在里面的数据有冲突(数据一致性),而且这些数据不可更改,数据本身和用户锁定在一起,这是可复制的以及有效的。最后,在没有中心化个体的控制下,每个人都对数据库中发生的事情达成共识。

最后一点就是区块链的核心。去中心化非常有吸引力,因为这暗示着不会存在任何的单点故障。也就是说,没有任何的单个机构可以拿走你的资产,或者改变“记录”来满足他们的需求。这种不可更改性,使得你不需要去相信任何人,这对任何区块链中的成员都是有益的。但是这份受益,却需要付出很大的代价。

区块链的代价

不被任何第三方控制的不可更改性能是非常有用的,但是对于创造这样的系统,也需要很多的代价。我们来看看其中的一些问题。

开发过程更加严格也更慢

创建一个完全统一的系统并不是简单的任务。很小的失误都会使得整个数据库被破坏,或者导致一些数据库变得和其他的不同。当然,被破坏或者分裂的数据库再也没有任何统一性的保证。并且,所有这类系统都需要设计成从外部来看具有统一性。在区块链中,并没有“快速前进,打破常规)”的说法。如果你打破常规,你就失去了统一性,那么区块链就会变得破坏以及没有价值。

那么也许你会想,为什么你不能只是修复这个数据库,或者重新启动再推进了?在中心化的系统中,这很容易解决,但是在去中心化系统中却非常困难。你需要系统中所有参与者的共识或者同意,来对数据库进行修改。区块链应该是开源的,并且不被任何中心化单位所控制。

激励制度设计有很大难度

增加激励制度,并且保证系统中所有的参与者都不会攻击或者破坏数据库,是非常值得考虑的事情。区块链也许具有一致性,但是如果其中含有很多无用数据的时候,这就不会非常有用,因为将数据输入的成本会非常低。也不会有任何具有一致性的区块链会有用,如果其中不包含任何数据,因为将数据放入的代价非常高。

那么如何确保数据最终的准确性?你怎么确保奖励是和网络的目标是一致的呢?为什么节点要去维持或者更新数据,在有冲突的时候,他们为什么要选择其中一个?这些都是关于激励的问题,现在需要解答,而且不止是在开始的时候需要统一好,后续随着公司和技术的变化,也要时刻保持统一。不然区块链就没用了。

而且,也许你想知道为什么你不能修改一些有问题的激励模式。再一次强调下,这在中心化系统中很容易实现,但是在去中心化系统中,在没有达成共识的前提下,你不能修改任何东西。除非从每个人那边获得共识,不然你不能修改任何东西。

维护非常花费成本

传统的中心化数据库只需要写入一次就可以。但是区块链需要写入几千次,传统的中心化数据可以只需要一次性检测数据。区块链需要检查几千次数据。传统中心化数据库需要只需要一次性将数据转移到存储器。区块链则需要将数据转移几千次。

维护区块链的成本是数量级增长,而且这部分成本还需要根据使用性能进行更改。大多数应用都在追求之前说的一致性和稳定性等特性,但是如果使用完整性检查,收据和备份,在成本上就会便宜很多。

用户为王

这样会很好,因为公司不喜欢将用户的数据放在首要责任。但是如果用户做出什么不好的行为,这也非常不好,因为你无法将这个用户踢出,或者指出这样做会影响其他很多的便利性。

以上可以说明,激励制度的设计非常非常重要,可以使得用户不想去放弃,特别是如果对这个用户来说有利可图。也许你会想说,你可以简单地拒绝为欺诈者服务,这在中心化服务过程中很容易实现。但是,和中心化服务不同,在区块链上拒绝服务很困难因为没有任何个人有权利去将别人踢出。区块链必须要遵守软件中写下的规则。如果这个规则不能惩罚不好的行为,那么只能说你运气不好。区块链上,没有“法律”的精神,你只能花费很长时间去处理恶意行为。

所有的升级是自发的

强制升级并不是选项。网络上的其他人员没有义务去更改你的软件。如果他们这样做,那么不如打造更加容易,快速以及便宜的中心化系统。区块链的关键在于它不受控制于单个主体,同时这也和强制升级相违反。

但是,所有的升级都要和之前兼容。显然这很困难,特别是当你想添加新的特性时,如果从测试角度来看,就更加困难了。每个版本的软件都会添加很多的测试矩阵,也会花费更多的时间来进行释放。

扩容非常困难

最后,在扩容性方面至少要比传统中心化系统要难几个数量级。原因很明显。同样的数据需要在成百上千个地方,而不是像中心化那样,在同个地方。传输,验证和存储的开销是很大的,因为区块链上任何数据库的复制都需要花钱,而不像中心化的数据库那样,只需要付费一次就可以。

中心化会容易很多

如果你发现这个问题,那就是去中心化的系统很难进行运作,维护也很昂贵,很难升级并且不容易扩容。中心化的数据库和区块链比起来,就会更加快速,便宜,容易维护并且升级也比较容易。那么为什么人们还要使用区块链作为解决方案呢?

首先,很多想要使用区块链的行业,对于IT底层升级已经完全过时了。医疗行业有众所周知地难用的软件。金融结算还在用70年代的软件。供应链管理软件很难使用,也很难安装。这些行业的很多公司拒绝去更新软件,因为这会带来很多风险。有很多底层更新,花费了数百位美元,但是最后又用回之前的软件。区块链可以帮助这些行业IT底层的更新。

其次,区块链让你看起来是在科技的前端。其实很少人真地理解区块链,但是都想要使用这些词汇来让自己听起来显得更加聪明。就好像“云计算”意味着其他人的电脑,“AI”意味着修正算法,“区块链”在这篇文章中的意思就是缓慢,昂贵的数据库。

第三,在某些行业,人们不喜欢政府的监管,所以希望有和缓慢昂贵的法律框架不同的仲裁机制。对他们来说,区块链是避免政府监管很好的方法。这其实也高估了区块链可以做的事情,区块链不可能魔幻版地去除人的影响。我们现在就有些像“皇帝的新衣”。

那么区块链有什么用处呢?

我们已经说了,区块链和中心化数据库比起来,非常昂贵。所以你需要使用区块链的原因,就是它可以完成去中心化。也就是说,它移除了单个主体的控制。

这也就是说,软件或者数据库不能经常去进行更改。不会有太多升级和改变规则的余地。

但是大多数行业不像这样,很多行业都需要进行新功能的升级,并且需要能够自由地进行更改以及扩展。假设区块链很难去升级,改变以及扩容,很多行业并不需要区块链。

但是有个例外就是货币。和很多其他行业不同,货币不希望改变。不可篡改和难以改变对于货币来说,是好处。这就是为什么当区块链应用在比特币上的时候,它是个非常正确的工具。

很清楚地是,很多公司想要使用区块链,并不是因为想要区块链,而是需要将IT底层升级到适用于他们行业。这是非常好的,但是使用区块链这个词去过度营销有些过度。

结论

这些天区块链是个很流行的词语,但是不幸地是,但是如果你在使用中心化服务,区块链不会让你获得更多。如果你在使用去中心化系统,那么可能你没有考虑到如果其中出现单个节点的问题该怎么办。区块链,说起来容易,做起来可不容易。

回到2000年代早期,很多科技行业的巨头都推动使用Java和XML。尽管这两者是工具,并不是真正的产品,很多巨头也坚持使用它们,不论他们的工程师使用起来有多不方便。区块链和这个很像,关注你需要解决的问题,那么工具就会出现。如果你只关注工具,那么最终就会成为鲁布?戈德堡机械,不会做成什么事。

因此,现在很多区块链的概念都尝试在做些不可能的事情。他们想要这种去中心化系统的安全性掌控在一个中心化个体手上。想要获得两者的好处,但是最终可能获得两者的坏处。最后我们获得了去中心化系统的成本和困难,同时还有中心化系统的失败模式。

区块链现在被认为是万金油,可能我们越快地走出这个旋涡,我们就会走地更长远。


CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢