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