Why Blockchain is Hard


译文。

什么是区块链

许多公司用“区块链”这个词,来表示某种神奇设备,通过这种设备,他们的所有数据将永远不会出错。当然,这样的设备并不存在,至少当涉及现实世界时,是如此。

区块链是什么?从技术上讲,区块链是区块的链单,区块是一组有序交易( a blockchain is a linked list of blocks and a block is a group of ordered transactions)。你可以将区块链视为数据库的一个子集,并带有一些附加属性。

区块链与普通数据库的主要区别在于,有特定规则——关于如何将数据放入数据库的特定规则。即,它不能与数据库中已经存在的其他数据冲突(一致性);它是仅附加(不可变)(append-only (immutable));数据本身被锁定于一个所有者(可拥有);它是可复制和可获得的(replicable and available)。最后,每个人都对“数据库中的事物状态;没有一个中心方(去中心化)”达成共识( everyone agrees on what the state of the things in the database are (canonical) without a central party (decentralized))。

最后一点确实是区块链的圣杯。去中心化非常有吸引力,因为它意味着没有单一失败点。即没有任何一个权威体能够拿走你的资产,或改变“历史”来适应他们自己的需求。这种你不必信任任何人的不可变审计跟踪,是每个使用该技术的人都在寻找的好处。 但是,这种好处成本很高。

区块链的成本

来看一些问题。

开发更加严格和缓慢(Development is stricter and slower)

创建一个可证明一致的系统并非易事。一个 bug 可能会破坏整个数据库,或导致一些数据库与其他数据库不同。当然,损坏或拆分的数据库不再有任何一致性保证。此外,所有这些系统必须从一开始就设计为一致的。区块链中没有 “move fast and break things”。 如果你 break 一些东西,你就失去了一致性,区块链就会被破坏,失去价值。

为什么不能修正数据库或重新开始,然后继续前进?这在中心化系统中很容易实现,但在去中心化系统中,这非常困难。如果要更改数据库,需要达成系统所有参与者的共识。区块链必须是一个不受单个实体控制的公共资源(去中心化)。

激励结构很难设计

添加正确的激励结构,并确保系统中的所有参与者无法滥用或损坏数据库,同样是一个很大的考虑因素。区块链可能是一致的,但如果因为将数据放入其中的成本非常低,而存在大量轻浮无用数据,这区块链就没什么用;如果因为将数据放入其中的成本很高,区块链几乎没有数据,这个一致性区块链也不会有用。

什么赋予数据最终性(finality)?如何确保奖励符合网络目标?节点为什么保存或更新数据,当数据发生冲突时,他们选择哪一个数据覆盖另一个数据?这些都是激励问题,需要良好答案,而且随着技术和公司的变化,它们不仅需要在开始的时候,还需要在未来的任何时刻,相校准,否则区块链就是没有用的( they need to be aligned not just at the beginning but at all points in the future as technology and companies change, otherwise the blockchain is not useful )。

然后,你可能想知道,为什么你不能“修复”一些失效激励。在中心化系统中,这很容易,但在去中心化系统中,如果没有共识,你就无法改变任何事情。除非所有人都同意,否则不存在对任何东西的“修复”。

维护成本非常高

传统中心化数据库只需要被写入一次;区块链需要被写入数千次。传统中心化数据库只需要检查一次数据;区块链需要检查数据数千次。传统中心化数据库只需要传输一次数据进行存储;区块链需要传输数千次数据。

维护区块链的成本要高出几个数量级,并且成本需要通过效用来证明合理性( the cost needs to be justified by utility)。大多数应用正在寻找一些前述性能,如一致性和可靠性,通过区块链,这些应用以此可获得更便宜的完整性检查,收据和备份效用。

用户主权

这真的很好,因为公司不喜欢承担拥有用户数据的首要责任。然而,如果用户“行为不端”,这可能很糟糕——没有办法把那些向你的区块链发送无聊数据的用户赶出去,也没有办法想出某种方式(这种方式会给其他用户带来很多不便)来盈利。这与上述观察有关,即激励结构必须进行非常好地设计,因为计算利用率的用户不太可能放弃,特别是如果用户有利润。

你可能会认为,你可以拒绝向恶意用户提供服务,这在中心化服务中很容易实现。然而,与中心化服务不同,去中心化系统拒绝服务非常困难,因为没有任何一个实体有权将任何人踢出局。区块链必须中立(impartial),并执行由软件定义的规则。如果规则不足以阻止不良行为,则是你运气不好。 这里没有法律“精神”。 你不得不去面对恶意或行为不当者,可能会持续很长时间。

所有升级都是自愿的

强制升级不是一个选项。网络上的其他玩家没有义务改变你的软件。如果他们这样做,这样的系统将更容易、更快、更便宜地作为一个中心化系统来构建。区块链的要点是,它不受单个实体控制,这与强制升级相违背。

相反,所有升级都必须向后兼容(all upgrades have to be backwards-compatible)。这显然相当困难,特别是如果你想添加新功能,从测试角度考虑,这更加困难。该软件的每个版本都向测试矩阵添加了很多,并延长了发布时间( Each version of the software adds a lot to the test matrix and lengthens the time to release)。

如果这是一个中心化系统,那么,通过不再为旧系统提供服务,就很容易调整。但在去中心化系统中, 你不能这样做,因为你不能强迫任何人做任何事情。

扩展很困难

同样的数据必须同时存储在成百上千个地方,而不是一个地方。传输、验证和存储的开支巨大。

当然,你可以通过减少节点数量来减轻负担。但如果这样,你为什么需要一个去中心化系统呢?如果扩展成本是主要问题,为什么不建立一个中心化数据库呢?

中心化要容易得多

去中心化系统很难合作,维护费用昂贵,难以升级,难以扩展。与区块链相比,中心化数据库更快,更便宜,更容易维护,更易于升级。为什么人们总是把“区块链”这个词当做所有问题的灵丹妙药呢?

首先,许多在区块链上进行“出售”的行业,确实需要进行 IT 基础设施升级——卫生保健软件,金融结算软件,供应链管理软件。这些行业的大多数公司,由于所涉及风险而拒绝升级。有许多基础设施的升级花费了数亿美元,但最终还是被回滚了。区块链是一种销售这些 IT 基础设施升级的方式,让这些升级更有吸引力(Blockchain is a way to sell these IT infrastructure upgrades and make them a bit more appetizing)。

其次,区块链是一种让你看起来处于技术前沿的方式。不管你喜不喜欢,“区块链”这个词已经拥有自己的生命。很少有人真正理解它是什么,但想要表现时髦,所以用这些词,作为一种展现自己更聪明的方式。就像“云”意为别人的计算机,“AI”意为一种调整后的算法(a tweaked algorithm),在这种语境中,“区块链”意味着一种缓慢,昂贵的数据库。

第三,人们真的不喜欢政府对某些行业的控制,他们想要一种不同于法律框架的审判机制。对他们而言,“区块链”实际上只是摆脱政府监管沉重工具的一种方式。这是一种吹嘘,超出了区块链可以做的事情。区块链不会奇迹般地消除人类冲突。

结果是,很多人在没有真正理解区块链能力或成本的情况下,对承诺大肆宣传。更糟糕的是,实际技术细节和成本都是从许多 VCs 和相关管理人员那里抽象出来的,以模糊区块链能做什么,不能做什么。他们中的每个人都不敢说皇帝没有穿衣服,这就是我们现在的情况。

区块链有什么用处?

相对于中心化数据库,区块链非常昂贵。所以,你应该使用区块链的唯一原因是去中心化。即移除单点故障或控制。

这意味着,软件或数据库必须不能经常改变事物。 升级几乎没有好处,改变规则有很多坏处(This naturally means that the software or database must not change things around often, if at all. There should be little upside to upgrading and much downside to screwing up or changing the rules)。

大多数行业并非如此。大多数行业都需要新的特性或升级,以及必要时进行更改和扩展的自由。考虑到区块链很难升级、难以改变、难以扩展,区块链对大多数行业都没有多大用处(most industries don’t have much use for a blockchain)。

我们已经发现的一个例外是货币。与大多数行业用例不同,如果货币不变,货币会更好。对于货币而言,不可变性和规则的难以改变,是有利的,而非有害。这就是为什么对于比特币而言,区块链是合适的工具。

很明显,很多希望使用区块链的公司,并不是真的想要区块链,需要的是对他们特定行业的 IT 升级。 这一切都很好,但使用“区块链”这个词来达到目的,就是不诚实的,是对区块链能力的吹嘘。

结论

区块链是当今流行语,不幸的是,这种“是区块链,而非比特币”的流行句不会消亡。 如果你是一个中心化服务,区块链不会给你带来任何,比其便宜千倍的中心化数据库方式所无法给你带来的。如果你是一个去中心化服务,你则可能在自欺欺人,没有考虑你系统中存在的单点故障。 在真正的去中心化服务中,根本没有“你”。

早在 2000 年初,科技行业的许多高管就推动使用 Java 和 XML 。尽管这两样东西都是工具,而不是实际产品,但许多高管坚持使用它们,不管它们与他们的工程师试图达到的结果之间,契合度如何之低。区块链非常相似。专注于你正在解决的问题,工具将自我显而易见。专注于你想要使用的工具,你最终会制造 Rube Goldberg 机器,这些机器不会做任何特别好的事情。

从某种意义上,目前区块链的概念正试图做到不可能。他们想要一个去中心化系统的安全,同时拥有中心化系统的控制度。对这两个世界而言,这个想法是最好的,但他们最终会得到的是两个世界中最糟糕的结果。你得到的是,去中心化系统的成本和难度,以及中心化系统的失败模式。

区块链被用来作为流行词,来销售大量无用“万灵药”( snake oil)。长远来看,我们越快摆脱这种炒作,我们会过得更好。

原文:https://medium.com/@jimmysong/why-blockchain-is-hard-60416ea4c5c
作者:Jimmy Song
编译:白花花