雖然區(qū)塊鏈技術在創(chuàng)建新的金融、供應鏈和數(shù)字身份系統(tǒng)等方面具 有巨大的潛力,但它常常錯誤地被視作解決業(yè)務問題的萬能靈丹妙藥。
通過多家大公司和政府機構的 大量試點和概念驗證 都顯示出了區(qū)塊鏈技術的現(xiàn)實性的希望,但這些項目并不總是能成為明顯能投入實際應用的商業(yè)案例,這就證明有必要采取不同的做法。有時,像關系數(shù)據(jù)庫這樣久經(jīng)考驗的可靠技術,比起基于 p2p 技術的分布式分類賬更能有效地執(zhí)行任務,因為 p2p 技術往往需要復雜的治理和設定一系列規(guī)則。
例如,在一個業(yè)務的整個價值鏈上提供具有全面可見性的區(qū)塊鏈,這件事看上去可能非常有意義,但是當你權衡為之建立的整個上下游生態(tài)系統(tǒng)以及構建區(qū)塊鏈的成本時,這一解決方案在財務上可能就并不合理了。
“誰來為它買單呢?這些直覺上的優(yōu)勢將如何給參與者帶來實際的效益?如果技術建設成本是由各方分擔的,那么效益是否在收入或者投資回報中也會進行相應分配?這些棘手的問題往往會隨著從試點項目轉入實際生產(chǎn)后變得更加麻煩,” IDC 咨詢公司全球區(qū)塊鏈戰(zhàn)略研究主管 James Wester 說,”換句話說,即使試點項目驗證了這個概念是可行的,但從實際應用的規(guī)模上看,成本和其他各方面考慮因素,會成為主要問題。”
還有一部分問題與區(qū)塊鏈項目的融資方式有關。試點項目和概念驗證(PoC)往往來自于創(chuàng)新或研發(fā)預算,但一旦投入正式生產(chǎn),其成本就不可避免地會落到負責業(yè)務的部門或公司。而當區(qū)塊鏈牽涉到需要合作伙伴公司在一個開放分類賬上協(xié)同工作時,合作各方必須就復雜的規(guī)則以及這個項目的資金來源達成一致。
Wester 還說,“如果沒有令人信服的商業(yè)案例,這些建設成本可能就欠缺吸引力了??紤]到區(qū)塊鏈的天然的分布性,如果合作中有一方?jīng)Q定不參與,整個方案就會分崩離析?!?/p>
以下是企業(yè)在使用區(qū)塊鏈時可能遇到的主要問題:
1. 區(qū)塊鏈還相對年輕,依然存在許多軟件缺陷
雖然第一個分布式區(qū)塊鏈是在 2008 年由“中本聰”(化名)提出的概念,但該技術在現(xiàn)實世界中的應用只有短短幾年的歷史。
兩種最流行的區(qū)塊鏈平臺,超級分類賬(Hyperledger)和以太坊(Ethereum),都還不夠成熟,這可能導致區(qū)塊鏈部署中出現(xiàn)無法預見的問題。Forrester Research 公司的首席分析師 Martha Bennett 說,各公司的首席信息官們(CIO)以及他們的團隊應該考慮到這一點,軟件中有可能會發(fā)現(xiàn)嚴重漏洞。他們甚至可能會讓一個區(qū)塊鏈項目半途而廢,在遇到嚴重的軟件故障后不得不重頭開始。
例如,Ethereum 用于執(zhí)行智能合約的腳本,Solidity ,目前居然還不支持使用小數(shù)點,這需要開發(fā)人員另外找一個變通方案,或者從頭開始自己編寫一個軟件。
“這種情況我已屢見不鮮,” Bennett 說,“當我和那些正在進行區(qū)塊鏈項目的人交談時,盡管他們都正在從事大型的正規(guī)項目,他們也會說,使用區(qū)塊鏈這項技術的時間越長,就越發(fā)地意識到它是多么地不成熟?!?/p>
改變的是,許多創(chuàng)業(yè)公司,和像 IBM 和 Oracle 這樣的領先企業(yè)技術供應商,一直穩(wěn)定地在為之工作,從特定編程環(huán)境復雜的底層中抽象出更多可用工具,和“可以提供適當防護的智能合約腳本語言”,Bennett 說。
Bennett 還說:“總體而言,值得指出的是,不僅工具在改進,而且現(xiàn)在有相當多的服務可以讓企業(yè)以更容易的方式建立和運行區(qū)塊鏈網(wǎng)絡。”
2. 很少有商業(yè)領袖完全了解區(qū)塊鏈和相關技術
區(qū)塊鏈經(jīng)常被濫用,當成許多伴生技術、架構、用例甚至是哲學的簡寫。
歸根結底,它是一個點對點的分布式分類賬或數(shù)據(jù)庫,由一組協(xié)議和一個區(qū)塊鏈組合而成,這意味著區(qū)塊鏈是一系列加密的數(shù)據(jù)集合,記錄著隨著時間的推移而發(fā)生的不可篡改的變化。雖然這樣解釋可能相對簡單直觀,但根據(jù)該技術是如何實現(xiàn)的,其定義可能會變得復雜費解。
作為戰(zhàn)略研究主管,Wester 經(jīng)常被要求定義區(qū)塊鏈和屬于“區(qū)塊鏈”這個大標題下的“一系列技術”,包括 標記資產(chǎn)、加密數(shù)字貨幣、加密錢包、分布式分類賬、智能合約和自主身份識別,而后面所列的這些技術其實都是可以在區(qū)塊鏈網(wǎng)絡上運行的應用程序或架構,但它們并不是該技術與生俱來的固有部分。
Wester 說:“如今我們還處在向別人解釋這項技術工作原理的階段。此外,在不是很了解各種技術之間差異的情況下,人們也有可能對這項技術侃侃而談,所以很多一知半解的人甚至懶得去認真學習相關術語和技術。”
3. 區(qū)塊鏈并不總是適合存儲數(shù)據(jù)
區(qū)塊鏈最大的價值之一是“一次寫入多次讀取”的分布式特性,它可以很容易地跨越 web 上的不同節(jié)點進行部署,但是每條記錄都包含自己的 Hash 值,因此記錄是不可篡改的。
在其他技術中,用戶只擁有選擇性的視角,要么只能查看內(nèi)部系統(tǒng),有些或許可以查看一些黑名單,而通過基于區(qū)塊鏈的網(wǎng)絡實現(xiàn)了分布式分類賬,可以提供更豐富、更全面的交易歷史記錄。
然而,這并不意味著與交易相關的數(shù)據(jù)必須成為該鏈的一部分。
例如,如果區(qū)塊鏈用戶將圖像作為其交易記錄的一部分,那么數(shù)據(jù)量將會快速增長,考慮到僅用作讀取的存儲數(shù)據(jù)量會隨著時間推移變得越來越大,網(wǎng)絡開銷也會快速增長。由于區(qū)塊鏈的分布式特性,所有數(shù)據(jù)必須復制到鏈中的所有節(jié)點,Bennett 解釋說。
所以對于某些交易任務,使用具有單獨網(wǎng)絡化存儲的關系數(shù)據(jù)庫,會比使用區(qū)塊鏈而讓開銷增長到無法控制的程度要好?!拔乙f的經(jīng)驗法則是:當關系數(shù)據(jù)庫可以順利完成一項工作時,就永遠不要為這項工作使用基于區(qū)塊鏈的架構,” Bennett 說。
Bennett 還說,雖然不是所有區(qū)塊鏈技術框架都需要跨節(jié)點對數(shù)據(jù)進行完全復制,但是所有的區(qū)塊鏈系統(tǒng)都需要小心翼翼地搭建技術架構,才能把法規(guī)要求、保密性需求和潛在的延遲問題等等都納入考慮范圍?!斑@就決定了哪些數(shù)據(jù)會放在區(qū)塊鏈上,而哪些不會,” 她說。
4. 規(guī)模擴展性仍然是個問題(但該問題比以前減輕了)
區(qū)塊鏈面臨的主要問題之一是其規(guī)模的可擴展性,或者說,如何在不消耗越來越多 CPU 容量的情況下實現(xiàn)增長的能力,以及如何在近乎實時的情況下完成交易的能力,比如通過信用卡進行支付。Visa 表示,它的網(wǎng)絡 VisaNet 每秒可處理多達 6.5 萬筆交易。
由于區(qū)塊鏈的特性,插入到區(qū)塊鏈中的每條新記錄都必須進行序列化,這意味著,較之可以并行更新數(shù)據(jù)的傳統(tǒng)數(shù)據(jù)庫,區(qū)塊鏈的更新速度更慢。
盡管許多區(qū)塊鏈聯(lián)盟和相關的創(chuàng)業(yè)公司都在進行各種試驗,比如,有一種每秒可以 處理上萬筆交易 的區(qū)塊鏈網(wǎng)絡,還有一種甚至號稱比 VisaNet 的網(wǎng)絡容量還要大,但大多數(shù)區(qū)塊鏈仍然受到可擴展性問題的阻礙。比特幣等流行的區(qū)塊鏈協(xié)議每秒只支持 3 到 5 筆交易,而以太坊技術每秒可以支持約 20 筆交易。
在技術框架和治理模型之間,可擴展性的程度仍然是一個問題。例如,以太坊基金會正在使用 權益證明共識模型 以及 分片機制 等技術來提高其協(xié)議的性能。
“如何構建網(wǎng)絡架構也很重要,網(wǎng)絡延遲可能比計算能力更具挑戰(zhàn)性,” Bennett 說?!袄纾铱催^令人印象非常深刻的測試結果,但是如果它們是通過租用一個巨大的 AWS 集群來完成你的測試,那么這些測試結果對實際應用毫無意義?!?/p>
Gartner 公司負責研究的副總裁 Avivah Litan 說,如今,可擴展性更多時候是一個治理問題,而不是技術問題。
Litan 表示:“隨著區(qū)塊鏈得到許可,零信任模型的整個概念就瓦解了。” 他說:“只有數(shù)量有限的見證人操作節(jié)點并參與達成共識的過程,所以你真的需要信任那些當事人,如果他們做錯了什么,你需要的是法律框架的支持。因此對我來說,這在實際中是無法擴展的?!?/p>
Bennett 認為,在區(qū)塊鏈的環(huán)境下,經(jīng)常使用的指標“每秒交易數(shù)”相對來說也是毫無意義的。她說:“首先,你如何定義‘交易’?其次,如果你無法最終敲定交易,是否能處理大量交易也就變得無關緊要了?!?/p>
5. 區(qū)塊鏈需要治理
區(qū)塊鏈并沒有從本質上消除中央集權式管理,根據(jù)明尼阿波利斯聯(lián)邦儲備銀行(Federal Reserve Bank of Minneapolis)最近的一份報告,區(qū)塊鏈實質上只是用一種授權或信任模式來替代了另一種。
報告指出:“參與者必須信任區(qū)塊鏈系統(tǒng)的設計、技術和網(wǎng)絡規(guī)則,而不是將信任托付給經(jīng)紀代理或銀行等中央集權式機構來促成交易。但區(qū)塊鏈并沒有消除對治理權威的需要,仍然需要以某種形式對規(guī)則進行建立、實施和執(zhí)行,以及對意外的系統(tǒng)挑戰(zhàn)和異常做出響應。雖然這樣一個治理機構的成員可以是分布式的或分散化管理的,但是仍然需要一個治理的端點來處理所有的操作問題?!?/p>
Bennett 說,如何解決爭端,或者在出現(xiàn)問題時如何達成協(xié)議,這些仍然是治理中的關鍵問題。
例如,如何遵守智能合約的運作方式,以及遇到有爭議的合約怎么處理,區(qū)塊鏈參與者需要為這些問題達成一致。
Bennett:“如果區(qū)塊鏈中有軟件沒有編寫的事情發(fā)生,就需要有一種“非鏈式”的方式將它編寫進去,或者是一個‘終止開關’,來阻止區(qū)塊鏈以一種你意想不到的方式運行?!?/p>
7. 默認情況下,區(qū)塊鏈會共享你可能不希望共享的信息
公共區(qū)塊鏈,也是區(qū)塊鏈最普遍的一種形式,它是完全開放和透明的,這意味著鏈上的任何人都可以看到每一筆交易。例如,特幣就是這樣的形式。
公共區(qū)塊鏈還具有一個原始能力,即更強的防篡改能力,因為公共鏈可以增長至數(shù)千個節(jié)點,甚至是數(shù)百萬個節(jié)點,整個鏈就像一臺巨大的分布式計算機。節(jié)點越多,一次錯誤的執(zhí)行者就越難以控制鏈上的大多數(shù)的計算能力,于是要么阻止新交易得到確認,要么自己創(chuàng)建并確認自己的條目。如果能夠實現(xiàn)自創(chuàng)建自確認這一點,就會出現(xiàn)一些不法行為,比如 雙重支付 比特幣或其他加密數(shù)字貨幣。
另一方面,當你在商業(yè)環(huán)境中工作時,完全的透明通常并不是一件好事。例如,如果使用區(qū)塊鏈技術作為股票交易平臺的一部分來實現(xiàn)即時結算機制,那么鏈中的每個參與者都可以看到其他用戶在做什么,這將允許一個用戶與另一個用戶進行實時交易。
而另一個例子是,如果一個制造商使用區(qū)塊鏈作為其供應商的公開分類賬,它將允許一個承包商查看鏈中的所有其他分包商的信息。
“我或許并不希望我的客戶看到我所有的分包商是誰,即使你可能想要在鏈上實現(xiàn)一個特定的交易流程,” Bennett 說,“所以,你馬上就會決定該如何做……你會選擇對交易數(shù)據(jù)保密。”
有一些方法可以在區(qū)塊鏈上創(chuàng)建信息獨享權,這樣的話,僅有一些用戶能看到機密或敏感數(shù)據(jù)。例如,Linux 基金會旗下的 區(qū)塊鏈開源項目 超級分類賬(Hyperledger)就使用“通道”或子鏈來確保只有部分授權用戶才能看到敏感信息。
8. 區(qū)塊鏈的安全性取決于最薄弱的環(huán)節(jié)
如上所述,區(qū)塊鏈有兩種類型,公共的和私有的。公共區(qū)塊鏈允許任何人加入,比特幣是公開區(qū)塊鏈的一個很好的例子,任何想購買這種加密數(shù)字貨幣的人都可以加入這個鏈。它是公開透明的,這意味著鏈中的每個人都可以看到所有的交易。如果一個或多個參與者試圖在系統(tǒng)中弄虛作假,不法行為就會被挫敗,因為參與驗證新交易的大多數(shù)用戶會提供的正確數(shù)據(jù)。
“底線是,在一個大型的公共區(qū)塊鏈網(wǎng)絡中,你不必信任對等的參與者。這就是 拜占庭將軍問題,公眾的區(qū)塊鏈解決了這個問題,” Litan 說。
相反的,私有或帶許可的區(qū)塊鏈是集中管理的,需要人們獲得加入許可,它們適合在單個組織或合作伙伴組織之間使用。只有授權用戶才能加入這樣的鏈。
公共區(qū)塊鏈和私有區(qū)塊鏈天然地都是安全的,因為它們是不可篡改的,例如,每條記錄或塊是不可更改的,并與其他所有記錄或塊綁定在一起。添加新塊需要用戶之間達成共識,這種達成共識的規(guī)模需要多大,取決于使用的具體區(qū)塊鏈技術。對一些技術來說,需要達到 50% 共識,而對其他技術來說,這個百分比可能更高。區(qū)塊鏈的不可篡改性和共識要求使得它們在本質上比大多數(shù)其他網(wǎng)絡技術更安全,但這取決于技術架構和運行這些鏈節(jié)點的人和場所,區(qū)塊鏈其實很容易受到攻擊,這一點已經(jīng)在實踐一次又一次地驗證了。
上述明尼阿波利斯聯(lián)邦儲備銀行的這份報告中提及,雖然區(qū)塊鏈提供了針對鏈上記錄的數(shù)據(jù)完整性的安全,但該安全性僅限于區(qū)塊鏈本身,如果沒有額外的技術或系統(tǒng),無法防止未經(jīng)授權的訪問,比如數(shù)據(jù)泄露。
例如,最近針對 以太坊經(jīng)典令牌交換 的“51% 攻擊”就表明,即使是區(qū)塊鏈技術,也不能阻止弄虛作假。51% 的攻擊指的是,如果獲得加密數(shù)字貨幣礦池中大多數(shù) CPU 的控制權,一個人就可以胡作非為。這種攻擊通常局限于節(jié)點較少的小型區(qū)塊鏈,因為它們更容易受到基于工作量證明(PoW)共識機制的個人篡權控制。
數(shù)據(jù)透明性,即鏈上的所有參與方查看交易的能力,是區(qū)塊鏈技術頗具吸引力的一部分,因為如果意圖不軌的參與者試圖添加未經(jīng)驗證的數(shù)據(jù),可以很快被識別出來。然而,數(shù)據(jù)的透明度也可能成為一個威脅。例如,美聯(lián)儲的報告指出,在金融機構的結算或清算系統(tǒng)中,保密性可能是安全的一個關鍵因素,所以系統(tǒng)數(shù)據(jù)的透明度會是一個安全風險。
報告指出:“如果實行數(shù)據(jù)透明化,但又需要保證保密性,則需要對鏈上的數(shù)據(jù)進行加密,或對數(shù)據(jù)訪問進行強認證。區(qū)塊鏈中可以加入保密性和訪問控制,但這些并不是區(qū)塊鏈技術的固有屬性。區(qū)塊鏈自身也不提供認證功能?!?/p>
換句話說,不要因為一個具體的區(qū)塊鏈設計和實施中包含一個特定的特性,比如隱私、數(shù)據(jù)透明性或強認證的相關特性,就假定其他所有區(qū)塊鏈也包含這個特性。
Bennett 指出,向區(qū)塊鏈提供信息的那些系統(tǒng),如智能合約,也可能成為網(wǎng)絡攻擊的載體,因為它們不是分散管理的,可能成為單點故障。
智能合約既不智能也并非合約
智能合約,或自動執(zhí)行合約,是構建在區(qū)塊鏈技術之上的業(yè)務自動化工具。它們是區(qū)塊鏈技術中頗具吸引力的特性之一,因為它們能夠消除管理開銷?;旧希坏┖霞s的某些條件得到滿足,關于收據(jù)信息、金錢、財產(chǎn)或貨物的動作就會自動開始執(zhí)行。
例如,保險公司可以利用智能合約,根據(jù)大規(guī)模的洪澇、颶風或干旱等災害來發(fā)放賠款?;蛘?,一旦貨物抵達進入港口,集裝箱內(nèi)的物聯(lián)網(wǎng)傳感器如果確認了各種條件,比如貨物的封裝完好無損,一直儲存在適當?shù)臏囟认?,等等,就可以自動簽發(fā)海運提貨單。
然而,Bennett 認為,所謂的智能合約既不智能,也不是法律意義上的合同。再加上區(qū)塊鏈腳本語言還缺乏成熟度,程序員的學習曲線本來就比較陡峭,這種情形下可能會導致 bug 或漏洞。
Bennett 表示,如今智能合約實際上只是等同于用于創(chuàng)建自動化流程的一套規(guī)則和軟件,而自動化流程在當前已不再是個問題,有很多種實現(xiàn)方法。
“我們甚至開始看到一些工具,可以讓商人們使用時集合了智能合約其中包含的基本要素,” 她說,“然而,這僅僅是個開始,正如一些公司已經(jīng)發(fā)現(xiàn)的,確保每個網(wǎng)絡參與者都運行相同版本的智能合約,這件事本身就可能會成為一個挑戰(zhàn)。”
Bennett 補充說,還有一些其他挑戰(zhàn),包括如何確保智能合約本身不會產(chǎn)生安全問題,以及確保智能合約的任何外部輸入都是有效正確的。
“就像我一直說的那樣,一個事物并不能僅僅因為它在區(qū)塊鏈上就意味著它一定是真實的,” Bennett 指的是確保輸入數(shù)據(jù)的準確性和來源的真實性,她說,“智能合約只能說和團隊為流程自動化而制定的那些規(guī)則效果差不多,而且還取決于編程的質量。”
如何遵守合約的運作方式,怎么處理有爭議的合約,針對這些問題還需要區(qū)塊鏈的參與者達成一致。創(chuàng)建新的業(yè)務流程還也需要在不同用戶之間就這些條件達成一致,而且在實踐中,已經(jīng)有一些真實的例子,因為人們不能為這些運行條件達成一致而導致區(qū)塊鏈項目被擱置。所以,區(qū)塊鏈不僅僅只與 IT 相關,它也與合同協(xié)議息息相關。
“就像最近有人對我說的,區(qū)塊鏈中 80% 是商業(yè),20% 是技術,” Benett 這么說。
此外,雖然區(qū)塊鏈可能分散在數(shù)十個或數(shù)千個節(jié)點上,但智能合約卻不是以分布式管理的。這意味著這些區(qū)塊鏈節(jié)點無法看到智能合約是如何工作的,換句話說,作為區(qū)塊鏈網(wǎng)絡的一部分,這些公司組成的區(qū)塊鏈聯(lián)盟必須依賴于一個另一個實體來獲取輸入智能合約的信息,這個實體稱為一個 oracle(數(shù)據(jù)庫)。
區(qū)塊鏈網(wǎng)絡使用一些名為 oracle 的集中式管理軟件作為代理,來查找和驗證真實世界中發(fā)生的事件,然后根據(jù)預定義的條件觸發(fā)一個智能合約。例如,從加利福尼亞運往丹麥的藥品的溫度可以通過集裝箱中的物聯(lián)網(wǎng)傳感器進行監(jiān)控。而傳感器信息由 oracle 軟件收集,然后發(fā)送給智能合約,如果在整個運輸過程中溫度范圍滿足條件,智能合約則可以通過區(qū)塊鏈觸發(fā)事件,例如簽發(fā)海運提貨單或對所發(fā)貨物進行付款。
如果你的公司是某個區(qū)塊鏈聯(lián)盟的一部分,例如,一個供應鏈,它并沒有任何辦法知道在智能合約中具體運行的是什么。所以數(shù)據(jù)就沒有可驗證性。本質上而言,運行 oracle 和智能合約所在服務器的公司無論將什么樣的信息提供給區(qū)塊鏈,你都只能原單接受。
“你必須找到一個數(shù)據(jù)來源,一張表,一個 oracle 來獲取這些數(shù)據(jù)。目前還沒有標準的流程來驗證數(shù)據(jù)的真實性。這會是錯誤集中產(chǎn)生的地方,” Gartner 公司的 Litan 這樣說。
“智能合約還不成熟,” Litan 繼續(xù)說,“我和參與一個區(qū)塊鏈聯(lián)盟的公司聊過,我問他們,‘你們?nèi)绾沃乐悄芎霞s在做什么呢?他們說他們無法知曉。如果你在現(xiàn)實生活中有一份合約,你難道不想知道它在做什么嗎?”