关于区块链的讨论不绝于耳。也许你听说过,区块链现在可以:
到底什么是区块链?它真的能做所有这些事情吗?区块链能为医疗、金融、供应链管理和音乐版权等不同行业带来惊人的变化吗?而比特币从业者是不是意味着你是支持区块链的?你怎么能在支持比特币的同时诟病比特币背后的技术呢?
在这篇文章中,我试图通过解答什么是区块链来回答上述疑问。
我们来先定义清楚区块链是什么,这里有很多常人理解上容易混淆的地方。许多公司使用“区块链”这个词来指某种神奇的装置,在这个装置之上它们的所有数据永远不会出错。显然,这样的装置在现实世界中是不存在的。
那么什么是区块链?从技术上讲,区块链是数据区块以有序的方式组合起来的链式数据结构。如果您不理解最后一句,您可以将块链看作是附加了一些属性的数据库子集。
区分区块链和普通数据库的要点在于如何将数据放入数据库。也就是说,它不能与数据库中已经存在的其他数据冲突(一致),它仅仅是附加(不可变),并且数据在本身被锁定到所有者(Ownable)后,它是可复制的和可用的。最后,每个人都同意数据库中的数据以协商一致的规范和协议存在(去中心化)。
接下来所说的最后一点,是区块链真正备受推崇的关键:去中心化是非常有吸引力的,因为这意味着它没有单一的失败点。
也就是说,没有任何一个权威机构能够拿走你的资产或改变“历史”以满足他们的需要。这种不可改变的审计跟踪,意味着在这里你不需要相信任何人,这也正式这项技术背后人们不断在追逐的利益。然而,为了这些利益我们付出了巨大的代价。
任何一方都无法控制这些不可改变的审计跟踪,但是创建这样一个系统需要付出很多代价。让我们来看看其中的一些问题。
创建一个明显一致的系统并不是一件容易的事情。一个小错误可能会破坏整个数据库,或者导致某些数据库与其他数据库不同。当然,损坏或拆分的数据库不再具有任何一致性保证。
此外,必须从一开始就设计所有这些制度,使之保持一致。在区块链中没有“快速移动和破坏”,如果你破坏了一些东西,你就会失去一致性,区块链就会变得毫无价值。
你可能在想,为什么不能修复数据库或者重新开始再继续前进呢?这在集中式系统中很容易做到,但在去中心化的系统中非常困难。要更改数据库,需要系统中所有参与者的一致意见或协议。区块链必须是不受单个实体控制的公共资源(去中心化,记得吗?),或者整个工作是创建一个缓慢、集中的数据库的一种非常昂贵的方法。
增加正确的激励结构,并确保系统中的所有行为者都不能滥用或破坏数据库,同样也是一个很大的考虑因素。区块链可能是一致的,但如果其中包含大量琐碎、无用的数据,那就不太有用了,因为将数据放入其中的成本非常低。
如果几乎没有数据,那么一个一致的区块链也不会有用,因为将数据放入其中的成本非常高。
如何确保奖励与网络目标一致?为什么节点要保存或更新数据?是什么使它们在冲突时选择一条数据而不是另一条数据?这些都是激励性的问题,需要很好的答案,它们不仅需要在开始的时候,而且在未来的任何时刻,随着技术和公司的变化,它们都需要一致,否则区块链就没有用了。
同样,你可能会想,为什么你不能“修复”一些坏的激励。同样,这在集中式系统中很容易,但在去中心化系统中,没有共识就不能改变任何事情。除非大家都同意了,否则就不会有任何“修理”。
传统的集中式数据库只需写入一次,一个区块链需要被写到数千次;传统的集中式数据库只需要检查一次数据,区块链需要检查数据数千次;传统的集中式数据库只需传输一次数据即可存储,区块链需要传输数千次数据。
维护区块链的成本要高出一个数量级,成本需要通过效用来证明。大多数应用程序寻找一些属性,如一致性和可靠性,可以通过使用完整性检查、收据和备份,以更低的成本获得这些功能。
这可能真的很好,因为公司不喜欢拥有用户数据的责任。但是,如果用户“行为不当”,这可能是不好的。没有办法驱逐那些用琐碎的数据垃圾处理你的区块链的用户,或者想出一种以某种方式盈利的方法,这会给其他用户带来很大的不便。
这与上述观点有关,即激励结构必须设计得非常、非常好,因为发现漏洞的用户不太可能放弃这一点,特别是如果用户有利润的话。
您可能认为可以简单地拒绝向恶意用户提供服务,这在集中式服务中非常容易。然而,与集中式服务不同,拒绝服务是很困难的,因为没有一个实体有权将任何人逐出。区块链必须公正,并强制执行软件定义的规则。如果规定不足以阻止不良行为,你就倒霉了。这里没有法律的“精神”,你只需处理恶意或行为不端的演员,可能会有很长一段时间。
强制升级不是一种选择,网络上的其他玩家没有义务对您的软件进行更改。如果他们这样做了,这样一个系统将更容易、更快和更便宜的建设作为一个集中的系统。区块链的要点是它不受单个实体的控制,这与强制升级相违背。
相反,所有升级必须是向后兼容的。这显然是相当困难的,特别是如果您想要添加新的特性,甚至更难从测试的角度思考。该软件的每个版本都为测试矩阵添加了大量内容,并延长了发布时间。
同样,如果这是一个集中的系统,这将是非常容易纠正,不再服务于旧的系统。但是,在去中心化的系统中,您不能这样做,因为您不能强迫任何人做任何事情。
最后,与传统的集中式系统相比,缩放至少要困难几个数量级。原因很明显:同样的数据必须生活在成百上千的地方,而不是一个地方。传输、核查和储存的开销是巨大的,因为数据库的每一份副本都必须支付这些费用,而不是在传统的中央数据库中只支付一次费用。
当然,您可以通过减少节点数量来减轻负担。但到了那个时候,为什么你需要一个去中心化的系统呢?如果扩展成本是主要问题,为什么不直接建立一个集中的数据库呢?
如果你注意到一个主题,那就是去中心化系统很难使用,维护成本很高,升级难度很大,规模也很大。集中式数据库比块链更快、更便宜、更易于维护和更易于升级。那么,为什么人们总是使用区块链这个词,就好像它是解决所有问题的灵丹妙药一样?
结果,很多人在没有真正理解能力或成本的情况下,就被夸大的承诺忽悠了。更糟糕的是,实际的技术细节和成本是从很多风险投资公司和高管那里抽象出来的,以致于模糊了区块链能做什么和不能做什么。
每个人都不敢说皇帝没有衣服,这就像我们现在所面对的情况。
那么区块链有什么好处呢?
我们已经确定,与集中式数据库相比,区块链非常昂贵,所以你应该使用区块链的唯一原因是去中心化。也就是说,移除单一的故障点或控制点。
这自然意味着软件或数据库不能经常改变,如果有的话。升级应该没有什么好处,而搞砸或改变规则也会有很多负面影响。
大多数行业都不是这样的,大多数行业都需要新的功能或升级,以及在必要时改变和扩展的自由。考虑到区块链很难升级,很难改变,也很难扩展,大多数行业对区块链没有多大用处。
我们发现的一个例外就是钱。与大多数工业用例不同的是,如果不改变,钱就会更好。改变规则的不变性和困难是对金钱有利的,而不是有害的。这就是为什么当谈到比特币时,区块链是正确的工具。
很明显,许多想要使用区块链的公司并不是真的想要区块链,而是想要对其特定行业进行IT升级。这一切都很好,但是用“区块链”这个词来达到这个目的是不诚实的,而且夸大了它的能力。
区块链是当今流行的术语,不幸的是,这种“区块链而不是比特币”的迷因不会死。如果您是一个集中式服务,区块链不会为您提供任何您无法用集中式数据库便宜一千倍的东西;如果您是一个去中心化的服务,那么您可能是在欺骗自己,而不是考虑系统中存在的单一故障点。在真正去中心化的服务中根本不会有“你”。
早在2000年代初,科技行业的许多高管就在推动使用Java和XML。尽管这两件事都是工具,而不是实际产品,但许多高管坚持使用这些工具,不管他们的工程师试图实现的目标有多么糟糕。
区块链就是这样的。专注于你正在解决的问题,这些工具将使你自己变得显而易见。专注于你想要使用的工具,你最终会制造出鲁伯·戈德堡机械,这些机械做得并不特别好。
从某种意义上说,目前关于区块链的概念正试图做不可能的事情,他们想要一个去中心化的系统的安全和一个集中的控制。人们的欲望是得到两个世界中最优解,但他们最终得到的却是两个世界中最劣解。通过集中式系统的故障模式,我们可以得知去中心化系统的成本和难度。
区块链作为一个时髦的词被过度使用,我们越快摆脱炒作,从长远来说,生活就会越好。
作者:金刚福禄蛙,公众号:圈叔道馆,ID: xinladaoIT
本文由 @金刚福禄娃 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自网络
上一篇
已是最后文章