IBM是真正的区块链吗?
IBM 是企业区块链(liàn)领(lǐng)域的重要参与者,其区(qū)块链平台以 Hyperledger Fabric 超级账(zhàng)本为基(jī)础(chǔ),为很多大企业比如(rú)沃尔玛和安泰保险都(dōu)开发过区块链试点产品。
Hyperledger 基金会是一个开源的(de)公(gōng)链项目,属于非盈(yíng)利机构。作为(wéi)机构的赞助商(shāng)之一(最近微软和软件服务公(gōng)司 Salesforce 也宣布入驻 Hyperledger),IBM 投入了大量资金,计划推动机构(gòu)向私有链或“许可链”方向(xiàng)发(fā)展。IBM 似乎有(yǒu)他自(zì)己的投资(zī)意图(tú):Hyperledger 既要与业界知名的比特币和以(yǐ)太(tài)坊等(děng)公链保持共(gòng)通性,也要去(qù)除掉身(shēn)上“不适合(hé)企业(yè)发展”的特(tè)点(diǎn)。
但(dàn)不管公有还是私有(yǒu),IBM 这种既保(bǎo)公链,又搞创收的行为恰(qià)恰忽(hū)略了 Hyperledger Fabric 区块(kuài)链最重(chóng)要的特(tè)征(zhēng)。Fabric 的架构比任何区(qū)块链平台(tái)都复杂(zá),同时,面对未来可能的篡改和(hé)袭击风(fēng)险也不够牢靠。你可(kě)能想,毕竟是“私有链(liàn)”,多少有扩展性和效率的优势,但很抱歉(qiàn),Fabric 在这方面(miàn)也好不到哪儿(ér)去。简单说,基于 Fabric 建立的试点(diǎn)项(xiàng)目在(zài)部署(shǔ)过程(chéng)中会(huì)面临很多复杂因素和不安全状况(kuàng),未来(lái)扩展到其他企业(yè)的可能性不(bú)大。
我们能(néng)选(xuǎn)择(zé)的区块链有哪些(xiē)?
2016 年,我还(hái)在摩(mó)根(gēn)大通(tōng)的时(shí)候,曾领导一个新兴(xìng)的技术小组负责研究和审(shěn)查市面(miàn)上(shàng)的区块链(liàn)项目,为公司未来的战略开发和投资作铺(pù)垫(diàn)。我们对 Hyperledger、Axoni、Symbiont、Ripple 和以太坊等早期(qī)版本都(dōu)做(zuò)了(le)深入分析。当(dāng)时我们(men)发(fā)现,市面上的区块链项目在技(jì)术上都不足以支撑企业的应用。 非(fēi)常遗憾的是,当时的问题在今(jīn)天的 Hyperledger Fabric 上仍然存在(zài),而且是核心(xīn)问题。
问题有很多:区块链的智能合约语言如(rú)何将复杂(zá)的商(shāng)业规(guī)则以(yǐ)安(ān)全简(jiǎn)单的方式(shì)表达出来?公钥签名(míng)如何保证有效(xiào)?区块(kuài)链系统如何在(zài)不减缓(huǎn)效率的前提下扩展更多(duō)的节点?还有,作为一家面向未来的公司,如何(hé)与其他(tā)的公链和私链轻松做到交(jiāo)互操作?
从这些问题看,我认为(wéi) IBM 的(de)区块链系统缺(quē)乏区块链(liàn)的必(bì)要元(yuán)素(sù),不仅其效率指数可能给(gěi)企业造(zào)成(chéng)误(wù)导,而且(qiě)在保(bǎo)证(zhèng)企业的长(zhǎng)期生存能力方(fāng)面也要打个问号。虽然我和同事不应(yīng)该(gāi)只把效(xiào)率(比如(rú)每秒交易量和(hé)节(jiē)点数等)作(zuò)为区块(kuài)链技术(shù)的唯一衡量因素,但我们认为,大家有必要知道(dào)区块链应该是什么不应该是什么。厘清这个概念(niàn)有助(zhù)于我们更好地理解区块链这项新(xīn)技术(shù)的变化。
区块(kuài)链应是什么?不是什么?
要想真正理解 IBM 的区块链立场,我(wǒ)们(men)需要看看(kàn)区块链(liàn)的(de)定义。所谓区块(kuài)链,其核心要(yào)义是记(jì)录(lù)项目和(hé)交易数据(jù)的不(bú)可(kě)更改的去中(zhōng)心化账本,实际的(de)交易记录通过共识机(jī)制执行。在比特币和以太坊等公链中(zhōng),共识机制的实现方式是(shì)工作量证(zhèng)明机制,俗称“挖矿”。在许可链中,共(gòng)识(shí)机制的(de)实(shí)现方式是参与节点提供(gòng)加密签名(míng),对书面条(tiáo)款投(tóu)票(piào)表决。不管哪种链,都没有中心机构参与其中(zhōng)。
IBM 的定义抓住了区块链(liàn)的(de)分布(bù)性和不(bú)可篡改性,但忽略(luè)了去(qù)中心化共识,这就是为什么(me) Hyperledger Fabric 没(méi)有对真(zhēn)正的共识(shí)机制提(tí)出要求(qiú)。取而代之的(de)是,它使用了(le)一种(zhǒng)叫做 Kafka 的“订阅系统(tǒng)”。但问题是,只有参与方强制执行了民主式投票机(jī)制,我们才能证明账本信(xìn)息未(wèi)被篡(cuàn)改(gǎi)。容错机制是区块链的标志特(tè)征。如果没有容错机(jī)制,IBM 的“区(qū)块链”几乎跟(gēn)时间戳也没什么两样(yàng)了(le)。
Fabric 的(de)架构同时暴(bào)露了(le)很多弱点,这些弱(ruò)点(diǎn)很容易被不(bú)法(fǎ)分子利(lì)用。例如,Fabric 在验证者签名(míng)的“网络(luò)内”上使用公(gōng)钥加密技术,这种做法(fǎ)确实提供了安全保证,但(dàn)前提(tí)条件是(shì),只有(yǒu)当外(wài)部签(qiān)名交易提交后才(cái)可启(qǐ)动。
从根本上来(lái)看(kàn),比(bǐ)特币及其他真正区块(kuài)链系统(tǒng)已验证(zhèng)的安(ān)全模式可能失效。在比(bǐ)特币等真正的区块链系统(tǒng)中,交易记录只(zhī)能(néng)通过(guò)外部用户的(de)公钥(yào)签(qiān)名确定(dìng),任(rèn)何形式的中(zhōng)间力(lì)量都无法参与到系统中。但(dàn)是,Fabric 共识机制中(zhōng)真正重要的签名(míng)属于验(yàn)证人,而(ér)用户(hù)签名在任意数据集(jí)的网络复制(zhì)过程中往(wǎng)往不受(shòu)重视。
Fabric 的研究者之所(suǒ)以不断强调(diào)效率(lǜ)指数(比如(rú)交(jiāo)易速度等),就是因为 Fabric 的架构无(wú)法在保持高效率的同时进行扩展。Fabric 运用多链环境(通道(dào))为用户保密。保护用户隐私是私有“企业”链的一个重要特征,不(bú)可避免会涉及很多(duō)权(quán)衡和复杂因素,但是多(duō)链方(fāng)案不(bú)适(shì)合扩展。而且在节点(diǎn)部署方面(miàn)也很(hěn)复杂(zá),各节点参(cān)差(chà)不(bú)齐,智能(néng)合约可靠性低,单(dān)点(diǎn)故障容易扩(kuò)散(sàn)。
所以,对于一个标准的 Fabric 部署来说,效率(lǜ)指数高不(bú)能说明问题(tí)。随着(zhe)节点(diǎn)数的增加(jiā),通道重新(xīn)恢复为单通道,效率指(zhǐ)数也(yě)会迅速降(jiàng)低:如(rú)果你想(xiǎng)通过(guò)多(duō)通道与全(quán)网做交易,效率指数没有多大参考价值(zhí)。即(jí)使你看见单独通道的每秒交易量已拼命达到 800 以上,但 16 个节点的通道参数也不(bú)会超过每秒 1500,节点参与量(liàng)一旦变高,延迟可能(néng)达到 10-20 秒的长度。
最近,Fabric 下了大(dà)功夫,据说每秒交易量被提高到了(le) 20,000 的水平,但研究(jiū)者在架构层面做出的改变(biàn)大大偏离了区块(kuài)链的本质,以(yǐ)至于改后的架构属(shǔ)性面目全非:赞助人(rén)无法(fǎ)承担验证者的角色,而且 Kafka 系统作(zuò)为唯一的订阅系统也成为(wéi)摆设(从理论上说,Fabric 可(kě)以采用真正的区块链共识机制,但速度会很慢(màn),实(shí)际应(yīng)用的可能性(xìng)不会很高)。
最后一点(diǎn),速度指数只(zhī)停留(liú)在单通(tōng)道层面,意味着区块链无法(fǎ)成为整体的(de)共享信息(xī)来源。
智能合约是一(yī)种商业逻(luó)辑(jí)
面对区块(kuài)链,最后(hòu)一个考虑的(de)点是:它(tā)如何超越私(sī)有数据库进行(háng)扩(kuò)展?区块链工具(比(bǐ)如智能合约语言(yán))如何帮助企业(yè)取得广泛的成功。
请记(jì)住,智(zhì)能(néng)合约不是所谓的(de)“代(dài)码”,它(tā)是一(yī)种商业逻辑的体现。你可(kě)以通过智能合约在区块链上买房,确认自(zì)己的数字身份(fèn),或者买卖二手车。所以智能(néng)合约的(de)可靠性非常重要,条款是什(shí)么,就按照什么执行。
如果你想在(zài)区块链上创建什么东西,你(nǐ)需要通(tōng)过智能合约描述自己想(xiǎng)做什么东西(比(bǐ)如实(shí)物交易、打包数据(jù)等等)。你描述的语言越简(jiǎn)单,创建的(de)速度就越快,也(yě)能更(gèng)快让项(xiàng)目方看到成果。更重要的是,你(nǐ)需要智(zhì)能(néng)合约(yuē)获取收益(yì)或者(zhě)给你的企业带来(lái)好(hǎo)业绩。
Hyperledger Fabric 的(de)智能合约(“链式码(mǎ)”)一般由几种编程语言写成,包括通用的 Javascript 语言(yán)和(hé) Go 语言,但(dàn)是需要权衡编程语言(yán)的(de)便利性和(hé)安(ān)全性(xìng)。如果区(qū)块链涉及(jí)的利益很大,比如如果程(chéng)序出现 bug 或者写错了,导致上百(bǎi)万美金丢失,那编程语言确(què)实应该目的明(míng)确(què),设计的(de)时候把安全放(fàng)在首位。在理(lǐ)想的(de)区块链环(huán)境中,智(zhì)能合约语言(yán)应该好学也好用,但实际(jì)情况不可能如愿以偿。我(wǒ)们知道,要成功(gōng)完成经典(diǎn)的程序演示“Hello world”,需要写 150 行(háng)左右的(de)代码(mǎ)。代码量(liàng)如此之(zhī)大,自然容易产生可能造成(chéng)上(shàng)百万(wàn)美元损失的(de) bug。
私(sī)有链和公(gōng)链不(bú)会毫(háo)无(wú)关系
区块链领域(yù)资深的观察家正意识到,私有链和(hé)公链不会毫无(wú)关系,两者在未来会发生联系。私有(yǒu)网络想发行代(dài)币给公链用户,而公链的去中心化应用也想在私有链(liàn)中储(chǔ)存机密信息。但不幸的是,IBM Fabric 用户仅仅因为架构无法兼容,就被“隔离(lí)”在公链之外。不仅如此,他们因此也错过了(le)智能合约语言的学习(xí)机会,无法(fǎ)在公链和私有链之间实(shí)现(xiàn)无(wú)缝操作(zuò)。
随着(zhe) IBM 宣布建(jiàn)立企业(yè)区(qū)块链的消息持续成(chéng)为(wéi)媒体关注的(de)焦(jiāo)点(diǎn),我们需要看清楚聚光灯(dēng)之下(xià),这项技(jì)术到(dào)底有何作为。Hyperledger Fabric 很多方面的标(biāo)准性不足(zú)(包括安全性、效率和可(kě)靠性等等),因此,想(xiǎng)借助区块链技术寻求发展的公(gōng)司或机构无法得到有价值的解决方案。要(yào)想真正理解区块链的价值,资深用户(hù)会寻找(zhǎo)更有优(yōu)势的服务公(gōng)司,因为他们(men)能提供更好的区块链技(jì)术,对未来的发展(zhǎn)和技术的应用方式也(yě)有更好的规(guī)划。