解决收入不平等
永远确保所有数据安全
让一切高效得多、无需信任
拯救垂死的婴儿
那么,区块链到底是什么样的技术?它真可以做到所有上述这些吗?区块链能为医疗、金融、供应链管理和音乐版权等形形色色的行业带来惊人的效果吗?
另外,不支持比特币是否意味着你就是支持区块链?你怎么一边支持比特币,一边又说其背后的技术不好?
我在本文中分析区块链是什么,更重要的是,区块链不是什么,力求解答许多这些问题。
区块链是什么东东?为了辨别其中一些说法的真伪,我们要定义区块链是什么东东,这方面存在太多的混淆。许多公司使用“区块链”这个词来表示某种神奇的装置;借助这种装置,它们的所有数据都不会出错。当然,这种装置并不存在,至少在现实世界并不存在。
那么,区块链是什么东东?从技术上来讲,区块链就是区块的链表,而区块是一组有序的交易。如果你不理解最后一句话,不妨将区块链视为数据库的一个子集,只是多了几个属性。
区别区块链与普通数据库区的地方主要是,有特定的规则来规定如何将数据放入数据库。也就是说,它不能与已经存在于数据库中的其他一些数据相冲突(一致的),它是只能添加的(不可变的),数据本身归所有者拥有(可拥有的),可复制和可用的。最后,每个人都一致同意数据库中数据的状态是什么(规范化的),没有中央集权机制(去中心化的)。
这最后一点才是区块链的终极目标。去中心化之所以很有吸引力,是由于这意味着没有单一故障点。也就是说,没有哪个权威机构能够拿走你的资产,或篡改“历史记录”来适应它的需要。你不必信任任何人的这种不可变的审计跟踪记录(audit trail)正是每个使用这项技术的人所渴求的好处。但是这种好处的成本很高。
区块链的成本不受任何一方控制的不可变的审计跟踪记录当然有用,但创建这样一个系统却面临很多的成本。不妨分析其中一些问题。
创建一个可证明一致性的系统并非易事。一个小错误可能会破坏整个数据库或导致一些数据库与其他数据库不同。当然,损坏或拆分的数据库不再有任何一致性方面的保证。此外,所有这类系统一开始设计时就确保一致性。区块链中没有“快速行动,打破陈规”(move fast and break things)一说。如果你打破了陈规,就丧失了一致性,区块链就会损坏,毫无价值。
你可能会想,为什么就不能修正数据库或重新开始、继续前进?这在集中式系统中很容易实现,但在去中心化系统中很难实现。你需要共识,即系统中所有参与者达成一致,那样才能更改数据库。区块链势必是不受任何一个实体控制的公共资源(去中心化,记得吗?),否则费了这么大劲创建一个缓慢的集中式数据库,代价未免太大了。
增设正确的激励结构,并确保系统中的所有参与者无法滥用或破坏数据库,这同样是需要考虑的一个重大因素。区块链可能是一致的,但如果由于往里面添加数据的成本很低,因而区块链里面有大量无关紧要的无用数据,区块链不是很有用。但如果由于往里面添加数据的成本很高,因而区块链几乎没有什么数据,那么一致的区块链也没有用。
什么赋予数据最终性?你如何确保奖励与网络目标相一致?为什么节点保留或更新数据?出现冲突时,什么让节点选择某一个数据,而不是另一个数据?这些都是需要好好给出答案的激励问题;它们不仅需要一开始做到一致,还需要在将来技术和公司发生变化时随时都做到一致,否则区块链就没有用。
你可能再次想为什么不能“修复”一些破损的激励机制。同样道理,这在集中式系统中很容易,但在去中心化系统中,倘若没有达成共识,你根本无法更改什么。除非大家达成了共识,否则“修复”毫无意义。
传统的集中式数据库只需要写入一次,区块链需要写入数千次。传统的集中式数据库只需要核查一次数据,区块链需要核查数千次数据。传统的集中式数据库只需要传输一次数据以便存储,区块链需要传输数千次数据。
维护区块链的成本要高出几个数量级,需要由实际功效来证明成本。如果充分利用完整性检查、收据和备份,寻求上述一些属性(比如一致性和可靠性)的大多数应用就能如愿获得这类属性,而成本低得多。
这可能非常好,因为公司本来就不喜欢拥有用户数据,觉得这是累赘。但如果用户“行为不端”,这可能很糟糕。有的用户往你的区块链发送大量无用数据,或者想出了获利方法,却给其他用户带来诸多不便,但你无法将这种用户踢出去。这与上面这一点有关:必须精心设计好激励结构,因为有办法获利的用户不太可能罢手。
你可能以为只要拒绝向恶意用户提供服务就行,这在集中式服务中很容易实现。然而,与集中式服务不同,在区块链中拒绝服务很难,因为没有哪个实体有权将任何人踢出去。区块链必须是公正的,执行由软件定义的规则。如果规则不足以阻止不良行为,那你就没辙了。这里没有法律的“精神”。你只好与不怀好意或行为不端的分子周旋,可能要持续很长时间。
强行升级行不通。网络上的其他参与者没有义务来更改你的软件。如果他们有这种义务,这样一个系统构建成集中式系统会极其容易、快速和省钱。区块链的要点在于,它并不由哪一个实体来控制,强行升级违背了初衷。
相反,所有升级都必须向后兼容。这显然相当困难,如果你想添加新功能来得尤其困难,从测试的角度来考虑更为困难。软件的每个版本为测试增添了许多变数,延长了发布的时间。
再说一遍,如果这是集中式系统,这很容易纠正,只要不再为旧系统提供服务。然而在去中心化系统中没法这么做,因为你没法强迫谁做任何事情。
最后,扩展起来其难度比传统的集中式系统至少高出几个数量级。原因很明显。同样的数据要放在成百上千个地方,而不是放在一个地方。传输、验证和存储的开销很大,因为数据库的每个副本都要承担这笔开销,而不是在传统的集中式数据库中只要支付一次那些成本。
当然,你可以通过减少节点数量来减轻负担。但那样的话,何必需要去中心化的系统?如果扩展成本是关注的主要问题,何不就搞一个集中式数据库?
集中化容易得多你可能注意到了一点,那就是去中心化系统很难处理,维护成本高昂,难以升级,而且难以扩展。相比区块链,集中式数据库维护起来快速得多、便宜得多、容易得多,还更容易升级。那么,为什么人们继续使用区块链这个词,好像它就是解决所有问题的某种万能药?
首先,许多信奉区块链的行业其实早就该进行IT基础设施了。众所周知,医疗行业的软件很糟糕。财务结算仍在上世纪70年代的软件上运行。供应链管理软件不但难以使用,还难以安装。由于害怕牵涉的风险,这些行业的公司大多拒绝升级。好多基础设施升级项目花了上亿美元,到头来却落得恢复原状的结局。区块链是推销这些IT基础设施升级,让它们更诱人一点的一种方式。
其次,区块链可以让你看起来好像处于技术的前沿。不管你喜不喜欢,“区块链”这个词本身已有一定的市场。很少有人真正理解它的涵义,但是为了显得时髦,于是把这些词挂在嘴边。就像“云”意味着别人的计算机,“AI”意味着经过调整的算法,这里的“区块链”意味着缓慢而昂贵的数据库。
第三,人们其实不喜欢政府控制某些行业,想要一种不同于法律框架的裁决机制,法律框架常常速度慢、成本高。对他们来说,“区块链”实际上就是摆脱政府监管这把沉重枷锁的一种方法。这过分吹嘘了区块链的功能。区块链不会奇迹般地消除人类冲突。
结果是,许多人听信夸大的承诺,没有真正了解区块链的功能或成本。更为糟糕的是,风险投资家和企业高管有意无意回避了实际的技术细节和成本,对区块链能做什么、不能做什么却含糊其辞。他们下面的每个人都害怕说皇帝没有穿衣服,现在我们面临同样的情形。
那么,区块链适用于什么呢?我们已经表明了一点:区块链相对于集中式数据库而言非常昂贵。所以,应该使用区块链的唯一原因是去中心化。也就是说,为了消除单一故障点或单一控制点。
这自然意味着软件或数据库不得经常改来改去,如果真要改动的话。进行升级的优点太少,搞乱或改变规则的缺点太多。
大多数行业并不像这样。大多数行业都需要新功能或升级,需要必要时可以自由地更改和扩展。鉴于区块链难以升级、难以改变、难以扩展,大多数行业对区块链来说没有多大的用武之地。
我们发现资金是一个例外。与大多数行业使用场合不同,如果没有变化,资金就更好。不可变性和难以改变规则有利于资金,而不是有损于资金。这就是为什么区块链是适合比特币的合适工具。
很显然,许多希望使用区块链的公司其实并不是真的想要区块链,而是想要其所在行业进行IT升级。这本身没什么不劲好,但使用“区块链”这个词来达到目的却有失诚信,是过分吹嘘其功能。
结论
区块链是当今的一个流行术语;遗憾的是,“是区块链不是比特币”这个文化基因不会消亡。如果你提供的是集中式服务,区块链能做的事情集中式数据库都能做,而后者的成本只有前者的千分之一。如果你提供的是去中心化服务,那么你可能在自欺欺人,没有考虑到系统中存在的单一故障点。在真正去中心化的服务中根本没有“你”。