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