围绕区块链的炒作是巨大的。周围区块链炒作的声音告诉我们,区块链在现在这个时代将:
解决收入不平等
永远确保所有数据的安全
使一切变得更加高效和无需信任
无论如何,区块链到底是什么?真的可以做所有这些事情吗?区块链能否为医疗,金融,供应链管理和音乐版权等行业带来惊人的收益?
而且因为你不是比特币就意味着你是更高端的区块链吗?普通人为何只看到比特币三个字,却对其背后伟大的技术默不作声?
在本文中,我试图通过让你了解区块链是什么,更重要的是,让人们了解不是因为任何东西挂上区块链三个字就可以解决很多现实问题。
什么是区块链?
为了研究其中一些说法,我们必须定义什么是区块链,而这正是其中许多困惑的来源。许多公司使用“区块链”一词来描述某种神奇的设备,通过这些设备,他们的所有数据都不会出错。当然,至少在现实中,这种传说中的设备是不存在的。
那么什么是区块链?从技术上讲,区块链是区块的链条,而区块是一组有序交易。如果你不了解最后一句话,可以将区块链视为数据库里的子集,并具有一些其他属性。
区分区块链和普通数据库的主要关键点是,关于如何将数据放入数据库有特定的规则。也就是说,它不能与数据库中已有的其他数据冲突(一致性),只能追加(不可变性),数据本身被锁定为所有者(可拥有),可复制且可用。最后,每个人都同意在没有中央参与者(去中心化)的情况下处理数据库中事物的状态(规则)。
最后一点确实是区块链的圣杯。去中心化非常具有吸引力,因为它意味着没有单点故障。也就是说,没有任何一个权威机构能够拿走您的资产或更改“历史记录”以满足他们的需求。您无需信任任何人,这条不变的审计线索就是所有使用该技术的人都在寻找的好处。然而,这种好处需要付出巨大的代价。
区块链的成本代价
不受任何一方控制的不可变的审计跟踪无疑是有用的,但是创建这样一个系统要付出很多成本。让我们研究一些问题。
创建一个更严谨,不可篡改的,可证明一致性的系统并非易事。一个小错误可能会破坏整个数据库或导致某些数据库与其他数据库不同。当然,已损坏或拆分的数据库不再具有任何一致性保证。此外,所有此类系统必须从一开始就进行设计以保持一致。区块链无法做到“快速确认并解决问题”。如果你破坏事物,则会失去一致性,并且区块链将变得毫无价值。
您可能在想,为什么不能只修复数据库或重新开始并继续前进?在中心化的系统中这样做很容易,但是在去中心化的系统中则很难。你需要达成共识或系统中所有参与者的同意才能更改数据库。区块链必须是不受单个实体(去中心化,还记得吗?)控制的公共资源,否则整个工作是创建缓慢的集中式数据库的一种非常昂贵的方法。
激励结构难以设计
添加正确的激励结构并确保系统中的所有参与者都不能滥用或破坏数据库也是一个重要的考虑因素。区块链可能是一致的,但是如果其中有很多琐碎无用的数据,那么区块链就不会很有用,因为将数据放入其中的成本非常低。如果几乎没有数据,那么一致的区块链也没有用,因为将数据放入其中的成本非常高。
是什么赋予数据确定性?您如何确保奖励与网络目标保持一致?为什么节点在发生冲突时会保留或更新数据,又为何使它们选择一个数据而不是另一个呢?这些都是激励性问题,需要良好的答案,并且不仅需要在开始时而且在未来随着技术和公司的变化而协调一致,否则区块链将无用。
再次,您可能想知道为什么您不能“解决”一些坏的动机。再一次,在中心化的系统中这很容易,但是在分布式系统中,您根本无法在没有共识的情况下进行任何更改。除非所有人都同意,否则任何事情都无法“修复”。
维护区块链系统非常昂贵
传统的集中式数据库只需写入一次。区块链需要被写入数千次。传统的集中式数据库只需要检查一次数据。区块链需要检查数据数千次。传统的集中式数据库只需传输一次数据即可存储。区块链需要传输数据数千次。
维护区块链的成本要高出几个数量级,而且成本需要通过效用来证明。大多数应用程序在寻找前面提到的某些属性(如一致性和可靠性)时,可以通过完整性检查,收据和备份来以更低的价格获得这些东西。
用户是主权控制者
由于公司不希望将用户数据放在首位,因此这确实非常好。但是,如果用户“行为不当”,这可能很糟糕。没有办法用琐碎的数据来阻止用户向你的区块链发送垃圾邮件,或者想办法以某种方式获利,从而给其他用户带来很多不便。这与上述观点有关,即激励结构必须设计得非常好,特别是如果发现漏洞的用户不太可能放弃,尤其是在为用户带来利益的情况下。
你可能会认为可以拒绝对恶意用户的服务,这在集中式服务中非常容易做到。但是,与集中式服务不同,拒绝服务很困难,因为没有一个实体有权将任何人赶出去。区块链必须公正并执行软件定义的规则。如果规则不足以阻止不良行为,那么您就不走运了。这里没有法律的“精神”。你只需要与恶意或行为不端的行为者打交道,可能就需要很长时间。
所有版本升级均为自愿
强制升级不是区块链系统的选择。网络上的其他广播者没有义务更改你的软件。如果他们这样做的话,将这样的系统构建为中心化系统将更加容易,快捷和便宜。区块链的要点是,它不受单个实体的控制,并且强制升级违反了这一规则。
相反,所有升级都必须向后兼容。这显然是相当困难的,特别是如果您想添加新功能,并且从测试角度考虑时甚至更加困难。该软件的每个版本都在测试矩阵中增加了很多内容,并延长了发布时间。
同样,如果这是一个中心化系统,则不再维修旧系统将很容易纠正它。但是在分散式系统中,你无法执行此操作,因为你不能强迫任何人执行任何操作。
扩容真的很难
最后,扩容区块链系统比传统中心化式系统难至少大几个数量级。原因很明显。相同的数据必须存在于数百或数千个位置中,而不是单个位置。传输,验证和存储的开销是巨大的,因为数据库的每个副本都必须支付这些费用,而不是在传统的集中式数据库中一次支付这些费用。
当然,您可以通过减少节点数来减轻负担。但是到那时,为什么您根本需要一个去中心化的系统?如果扩展成本是主要问题,为什么不仅仅建立一个中心化的数据库呢?中心化化要容易得多。
如果您注意到一个主题,那就是分布式系统很难使用,维护成本高,难以升级且难以扩展。集中式数据库比区块链更快,更便宜,更易于维护和升级。那么,为什么人们继续使用“区块链”一词来解决所有问题呢?
大多数行业都不是这样。大多数行业需要新功能或升级,并且需要根据需要自由更改和扩展。鉴于区块链难以升级,难以更改且难以扩展,大多数行业对区块链的使用并不多。
但我们发现的只有一个东西例外——金钱。
与大多数工业用例不同,如果不进行改变,钱会变得更好。不可变性和更改规则的困难对金钱是有利的,而不是不利的。这就是为什么就比特币而言,区块链是完成这项工作的正确工具的原因。
显而易见的是,许多希望使用区块链的公司实际上根本就不需要区块链,而是将IT升级到其特定行业。一切都很好,但是使用“区块链”一词到那里是不诚实的,并且超出他们能力。
结论
如今,区块链是一个流行的名词,不幸的是,这种“想要区块链而非比特币”的思维模式并不会消失。如果您是中心化的服务,则区块链无法为您提供任何您无法使用集中式数据库便宜一千倍的东西。如果您是去中心化服务,那么你可能会自欺欺人,而不考虑系统中存在的单点故障。真正的去中心化服务根本不会有“你”。
早在2000年代初期,技术行业的许多高管就开始推动使用Java和XML。尽管这两种语言是工具,而不是实际产品,但无论他们的工程师想要达到的目标多么糟糕,许多高管仍坚持使用它们。区块链非常像当时的那种情况。专注于你要解决的问题,这些工具将使自己变得显而易见。专注于您要使用的工具,最终您将制造出性能不佳的Rube Goldberg机器。
从某种意义上说,当前的区块链概念正在试图做不可能的事情。他们希望在中心化系统的控制下实现分布式系统的安全性。欲望是两全其美的,但他们最终得到的却是两败俱伤的。通过集中式系统的模式,你会得到分布式系统的成本和困难。
大量使用区块链作为流行语来出售大量无用的毒药。我们摆脱炒作的速度越快,长期的发展就越好。
作者 jimmy song 比特币核心开发者 编译cybtc