基于區(qū)塊鏈技術(shù)的開源公鏈項(xiàng)目Hyperledger基金會(huì)介紹
IBM是企業(yè)區(qū)塊鏈領(lǐng)域的重要參與者,其區(qū)塊鏈平臺(tái)以 Hyperledger Fabric 超級(jí)賬本為基礎(chǔ),為很多大企業(yè)比如沃爾瑪和安泰保險(xiǎn)都開發(fā)過區(qū)塊鏈試點(diǎn)產(chǎn)品。
Hyperledger 基金會(huì)是一個(gè)開源的公鏈項(xiàng)目,屬于非盈利機(jī)構(gòu)。作為機(jī)構(gòu)的贊助商之一(最近微軟和軟件服務(wù)公司 Salesforce 也宣布入駐 Hyperledger),IBM 投入了大量資金,計(jì)劃推動(dòng)機(jī)構(gòu)向私有鏈或“許可鏈”方向發(fā)展。IBM 似乎有他自己的投資意圖:Hyperledger 既要與業(yè)界知名的比特幣和以太坊等公鏈保持共通性,也要去除掉身上“不適合企業(yè)發(fā)展”的特點(diǎn)。
但不管公有還是私有,IBM 這種既保公鏈,又搞創(chuàng)收的行為恰恰忽略了 Hyperledger Fabric 區(qū)塊鏈最重要的特征。Fabric 的架構(gòu)比任何區(qū)塊鏈平臺(tái)都復(fù)雜,同時(shí),面對(duì)未來可能的篡改和襲擊風(fēng)險(xiǎn)也不夠牢靠。你可能想,畢竟是“私有鏈”,多少有擴(kuò)展性和效率的優(yōu)勢(shì),但很抱歉,F(xiàn)abric 在這方面也好不到哪兒去。簡(jiǎn)單說,基于 Fabric 建立的試點(diǎn)項(xiàng)目在部署過程中會(huì)面臨很多復(fù)雜因素和不安全狀況,未來擴(kuò)展到其他企業(yè)的可能性不大。
我們能選擇的區(qū)塊鏈有哪些?
2016 年,我還在摩根大通的時(shí)候,曾領(lǐng)導(dǎo)一個(gè)新興的技術(shù)小組負(fù)責(zé)研究和審查市面上的區(qū)塊鏈項(xiàng)目,為公司未來的戰(zhàn)略開發(fā)和投資作鋪墊。我們對(duì) Hyperledger、Axoni、Symbiont、Ripple 和以太坊等早期版本都做了深入分析。當(dāng)時(shí)我們發(fā)現(xiàn),市面上的區(qū)塊鏈項(xiàng)目在技術(shù)上都不足以支撐企業(yè)的應(yīng)用。 非常遺憾的是,當(dāng)時(shí)的問題在今天的 Hyperledger Fabric 上仍然存在,而且是核心問題。
問題有很多:區(qū)塊鏈的智能合約語言如何將復(fù)雜的商業(yè)規(guī)則以安全簡(jiǎn)單的方式表達(dá)出來?公鑰簽名如何保證有效?區(qū)塊鏈系統(tǒng)如何在不減緩效率的前提下擴(kuò)展更多的節(jié)點(diǎn)?還有,作為一家面向未來的公司,如何與其他的公鏈和私鏈輕松做到交互操作?
從這些問題看,我認(rèn)為 IBM 的區(qū)塊鏈系統(tǒng)缺乏區(qū)塊鏈的必要元素,不僅其效率指數(shù)可能給企業(yè)造成誤導(dǎo),而且在保證企業(yè)的長(zhǎng)期生存能力方面也要打個(gè)問號(hào)。雖然我和同事不應(yīng)該只把效率(比如每秒交易量和節(jié)點(diǎn)數(shù)等)作為區(qū)塊鏈技術(shù)的唯一衡量因素,但我們認(rèn)為,大家有必要知道區(qū)塊鏈應(yīng)該是什么不應(yīng)該是什么。厘清這個(gè)概念有助于我們更好地理解區(qū)塊鏈這項(xiàng)新技術(shù)的變化。
區(qū)塊鏈應(yīng)是什么?不是什么?
要想真正理解 IBM 的區(qū)塊鏈立場(chǎng),我們需要看看區(qū)塊鏈的定義。所謂區(qū)塊鏈,其核心要義是記錄項(xiàng)目和交易數(shù)據(jù)的不可更改的去中心化賬本,實(shí)際的交易記錄通過共識(shí)機(jī)制執(zhí)行。在比特幣和以太坊等公鏈中,共識(shí)機(jī)制的實(shí)現(xiàn)方式是工作量證明機(jī)制,俗稱“挖礦”。在許可鏈中,共識(shí)機(jī)制的實(shí)現(xiàn)方式是參與節(jié)點(diǎn)提供加密簽名,對(duì)書面條款投票表決。不管哪種鏈,都沒有中心機(jī)構(gòu)參與其中。
IBM 的定義抓住了區(qū)塊鏈的分布性和不可篡改性,但忽略了去中心化共識(shí),這就是為什么 Hyperledger Fabric 沒有對(duì)真正的共識(shí)機(jī)制提出要求。取而代之的是,它使用了一種叫做 Kafka 的“訂閱系統(tǒng)”。但問題是,只有參與方強(qiáng)制執(zhí)行了民主式投票機(jī)制,我們才能證明賬本信息未被篡改。容錯(cuò)機(jī)制是區(qū)塊鏈的標(biāo)志特征。如果沒有容錯(cuò)機(jī)制,IBM 的“區(qū)塊鏈”幾乎跟時(shí)間戳也沒什么兩樣了。
Fabric 的架構(gòu)同時(shí)暴露了很多弱點(diǎn),這些弱點(diǎn)很容易被不法分子利用。例如,F(xiàn)abric 在驗(yàn)證者簽名的“網(wǎng)絡(luò)內(nèi)”上使用公鑰加密技術(shù),這種做法確實(shí)提供了安全保證,但前提條件是,只有當(dāng)外部簽名交易提交后才可啟動(dòng)。
從根本上來看,比特幣及其他真正區(qū)塊鏈系統(tǒng)已驗(yàn)證的安全模式可能失效。在比特幣等真正的區(qū)塊鏈系統(tǒng)中,交易記錄只能通過外部用戶的公鑰簽名確定,任何形式的中間力量都無法參與到系統(tǒng)中。但是,F(xiàn)abric 共識(shí)機(jī)制中真正重要的簽名屬于驗(yàn)證人,而用戶簽名在任意數(shù)據(jù)集的網(wǎng)絡(luò)復(fù)制過程中往往不受重視。
Fabric 的研究者之所以不斷強(qiáng)調(diào)效率指數(shù)(比如交易速度等),就是因?yàn)?Fabric 的架構(gòu)無法在保持高效率的同時(shí)進(jìn)行擴(kuò)展。Fabric 運(yùn)用多鏈環(huán)境(通道)為用戶保密。保護(hù)用戶隱私是私有“企業(yè)”鏈的一個(gè)重要特征,不可避免會(huì)涉及很多權(quán)衡和復(fù)雜因素,但是多鏈方案不適合擴(kuò)展。而且在節(jié)點(diǎn)部署方面也很復(fù)雜,各節(jié)點(diǎn)參差不齊,智能合約可靠性低,單點(diǎn)故障容易擴(kuò)散。
所以,對(duì)于一個(gè)標(biāo)準(zhǔn)的 Fabric 部署來說,效率指數(shù)高不能說明問題。隨著節(jié)點(diǎn)數(shù)的增加,通道重新恢復(fù)為單通道,效率指數(shù)也會(huì)迅速降低:如果你想通過多通道與全網(wǎng)做交易,效率指數(shù)沒有多大參考價(jià)值。即使你看見單獨(dú)通道的每秒交易量已拼命達(dá)到 800 以上,但 16 個(gè)節(jié)點(diǎn)的通道參數(shù)也不會(huì)超過每秒 1500,節(jié)點(diǎn)參與量一旦變高,延遲可能達(dá)到 10-20 秒的長(zhǎng)度。
最近,F(xiàn)abric 下了大功夫,據(jù)說每秒交易量被提高到了 20,000 的水平,但研究者在架構(gòu)層面做出的改變大大偏離了區(qū)塊鏈的本質(zhì),以至于改后的架構(gòu)屬性面目全非:贊助人無法承擔(dān)驗(yàn)證者的角色,而且 Kafka 系統(tǒng)作為唯一的訂閱系統(tǒng)也成為擺設(shè)(從理論上說,F(xiàn)abric 可以采用真正的區(qū)塊鏈共識(shí)機(jī)制,但速度會(huì)很慢,實(shí)際應(yīng)用的可能性不會(huì)很高)。
最后一點(diǎn),速度指數(shù)只停留在單通道層面,意味著區(qū)塊鏈無法成為整體的共享信息來源。
智能合約是一種商業(yè)邏輯
面對(duì)區(qū)塊鏈,最后一個(gè)考慮的點(diǎn)是:它如何超越私有數(shù)據(jù)庫進(jìn)行擴(kuò)展?區(qū)塊鏈工具(比如智能合約語言)如何幫助企業(yè)取得廣泛的成功。
請(qǐng)記住,智能合約不是所謂的“代碼”,它是一種商業(yè)邏輯的體現(xiàn)。你可以通過智能合約在區(qū)塊鏈上買房,確認(rèn)自己的數(shù)字身份,或者買賣二手車。所以智能合約的可靠性非常重要,條款是什么,就按照什么執(zhí)行。
如果你想在區(qū)塊鏈上創(chuàng)建什么東西,你需要通過智能合約描述自己想做什么東西(比如實(shí)物交易、打包數(shù)據(jù)等等)。你描述的語言越簡(jiǎn)單,創(chuàng)建的速度就越快,也能更快讓項(xiàng)目方看到成果。更重要的是,你需要智能合約獲取收益或者給你的企業(yè)帶來好業(yè)績(jī)。
Hyperledger Fabric 的智能合約(“鏈?zhǔn)酱a”)一般由幾種編程語言寫成,包括通用的 JavaScript 語言和 Go 語言,但是需要權(quán)衡編程語言的便利性和安全性。如果區(qū)塊鏈涉及的利益很大,比如如果程序出現(xiàn) bug 或者寫錯(cuò)了,導(dǎo)致上百萬美金丟失,那編程語言確實(shí)應(yīng)該目的明確,設(shè)計(jì)的時(shí)候把安全放在首位。在理想的區(qū)塊鏈環(huán)境中,智能合約語言應(yīng)該好學(xué)也好用,但實(shí)際情況不可能如愿以償。我們知道,要成功完成經(jīng)典的程序演示“Hello world”,需要寫 150 行左右的代碼。代碼量如此之大,自然容易產(chǎn)生可能造成上百萬美元損失的 bug。
私有鏈和公鏈不會(huì)毫無關(guān)系
區(qū)塊鏈領(lǐng)域資深的觀察家正意識(shí)到,私有鏈和公鏈不會(huì)毫無關(guān)系,兩者在未來會(huì)發(fā)生聯(lián)系。私有網(wǎng)絡(luò)想發(fā)行代幣給公鏈用戶,而公鏈的去中心化應(yīng)用也想在私有鏈中儲(chǔ)存機(jī)密信息。但不幸的是,IBM Fabric 用戶僅僅因?yàn)榧軜?gòu)無法兼容,就被“隔離”在公鏈之外。不僅如此,他們因此也錯(cuò)過了智能合約語言的學(xué)習(xí)機(jī)會(huì),無法在公鏈和私有鏈之間實(shí)現(xiàn)無縫操作。
隨著 IBM 宣布建立企業(yè)區(qū)塊鏈的消息持續(xù)成為媒體關(guān)注的焦點(diǎn),我們需要看清楚聚光燈之下,這項(xiàng)技術(shù)到底有何作為。Hyperledger Fabric 很多方面的標(biāo)準(zhǔn)性不足(包括安全性、效率和可靠性等等),因此,想借助區(qū)塊鏈技術(shù)尋求發(fā)展的公司或機(jī)構(gòu)無法得到有價(jià)值的解決方案。要想真正理解區(qū)塊鏈的價(jià)值,資深用戶會(huì)尋找更有優(yōu)勢(shì)的服務(wù)公司,因?yàn)樗麄兡芴峁└玫膮^(qū)塊鏈技術(shù),對(duì)未來的發(fā)展和技術(shù)的應(yīng)用方式也有更好的規(guī)劃。
作者介紹:
Stuart Popejoy,涉足金融領(lǐng)域 15 年,在貿(mào)易系統(tǒng)和交易平臺(tái)框架創(chuàng)建方面擁有豐富經(jīng)驗(yàn)。曾供職于美國(guó)摩根大通公司的新產(chǎn)品研發(fā)部,期間領(lǐng)導(dǎo)開發(fā)了摩根的區(qū)塊鏈主打產(chǎn)品——Juno。Stuart 還參與編寫了摩根的算法交易腳本,為日后 Kadena 簡(jiǎn)潔特定的智能合約語言奠定了基礎(chǔ)。離開摩根后,與 Will Martino 在 2016 年聯(lián)合成立智能合約創(chuàng)企 Kadena,任公司總裁。