1. 程式人生 > >【問鏈財經-區塊鏈基礎知識系列】 第二十課 區塊鏈聯盟鏈攻伐戰

【問鏈財經-區塊鏈基礎知識系列】 第二十課 區塊鏈聯盟鏈攻伐戰

編者按:聯盟鏈是目前區塊鏈落地實踐的熱點,也是大家對“殺手級應用”期望最大的區塊鏈部署形態。聯盟鏈的誕生源於對區塊鏈技術的“反思”,是對比特幣、以太坊所體現的技術特點與企業客戶實際需要的融合與折衷,蘊含了大量區塊鏈工作者的智慧與辛勞。

由於對未來價值的“共識”,很多廠商推出了自己的聯盟鏈框架或平臺,本文選擇了 Hyperledger Fabric、FISCO、BCOS、微軟的 Coco、企業以太坊聯盟(EEA)及 R3 的 Corda 這五個具有一定影響力的聯盟鏈,擬從設計理念、生態、效率、擴充套件性、節點管理與許可權管理、智慧合約、部署與運維友好性、隱私保護、公鏈結合或演化能力九個方面進行比對,以供各位開發者、愛好者參考。

其中,EEA 由於只出具規範而不涉及程式碼,所以比對中採用了其官方承認的技術基礎——摩根大通的 Quorum 平臺;Corda 並不是區塊鏈,嚴格說與其他四者的比較屬於分散式賬本技術這個層級的比較,但是由於其承認設計上是受到區塊鏈技術啟發,且對其他聯盟鏈也產生了一定的影響,因此,也列入了比較範圍。本文的資訊主要來源於公開的技術白皮書、Github 中的開源資訊,就不在文中一一註明了。

一、設計理念

設計理念其實決定了一個框架或者系統的最佳應用方式,是其設計的出發點,因此,研究每種區塊鏈時,都應當認真關注其如何“看待自己”,以免在應用上出現“硬套”的問題。設計理念上本文分成核心思路與市場定位兩部分進行比較。

(一)核心思路
核心思路體現的是其設計初衷,這個“初心”對其後續技術走向有一定的影響。

Hyperledger Fabric 是希望改變公鏈的單一通用網路模式,通過建立多個可以互聯的區塊鏈網路覆蓋各類不同的業務場景,實現設計的靈活性,滿足多樣化的要求,並實現網路間的互動,這種思路體現在了其獨特的通道機制設計上。
FISCO BCOS 初衷是設計一個國內企業主導研發、自主可控、對外開源的滿足金融行業需求企業級區塊鏈底層平臺,並逐漸擴充套件至其他領域、適用於廣泛的分散式商業場景,所以進行了自底向上的完整設計,並考慮了較多國內的特殊需求。
Coco 基於保密聯盟環境的假定,重新評估了公鏈的設計,通過將其他區塊鏈協議整合為底層,快速高效地構建區塊鏈應用。在這種思路下 Coco 大膽放鬆了一些關鍵的設計限制,並且最終實現了一個對現有區塊鏈協議的加速機制,可整合的協議已經包括 Hyperledger Fabric、以太坊、Corda、Quorum 等。
EEA 是力求引導一種基於以太坊的標準區塊鏈設計,可根據成員需要定製,但不提供程式碼(Quorum 提供部分開原始碼)。官方承認其技術基礎是摩根大通開發的 Quorum 平臺,該平臺的目標則是提供高速、高吞吐量交易的能力,以解決區塊鏈技術在金融等領域遭遇的挑戰。
Corda 希望提供一個具有唯一性、權威性、可以記錄企業間所有協議的全域性邏輯賬本,核心是實現具有節點間最小信任機制的無中心資料庫,因此,Corda 主張充分考慮與現有業務系統的結合,而非將現有業務系統拆掉重來。Corda 的設計思路對 Hyperledger Fabric 有一定影響,也參與了對後者的建設。
(二)市場定位
市場定位反映了對自身應用方向的價值主張。五個聯盟鏈都是面向企業級應用的,但是具體的定位略有差異:

Hyperledger Fabric 旨在打造不分行業的通用區塊鏈開源框架;
FISCO BCOS 源自企業級區塊鏈平臺 BCOS,做為一個金融版本分支,保留通用性的同時,更關注於金融行業,並且較多考慮了監管機構的特殊性;
Coco 希望提供更高效易用的區塊鏈技術,沒有特殊的行業定位;
EEA 比較有趣,它以將所有企業導向一個統一的路線圖(該路線圖以以太坊技術發展為基礎)為目標,但是由於目前的技術代表是摩根大通的 Quorum,所以,應用例項上對金融行業更有指導性;
Corda 則是針對金融行業的,並且明確提出至少一定時間內不會考慮其他行業。
從設計理念的角度來講,選用 Hyperledger Fabric 時,應當善用其通道機制,通過通道機制降低業務或者環境的複雜度,但是要注意其跨通道能力的一些技術限制;FISCO BCOS 則應關注其對國內市場特殊需求的適應性設計,這些設計會帶來很多部署上的優勢;Coco 和 EEA(Quorum)設計理念上都屬於基於現有協議的優化加速機制,只是前者“博愛”,相容的協議更多,後者“專一”,只針對以太坊;選用 Corda 則要先明確,它不是區塊鏈,不要帶著區塊鏈的價值假定去應用。

二、生態

大家常說建聯盟鏈就是建生態,所以本文就比較下要幫著別人建生態的聯盟鏈,其自身的生態建的如何。生態考察主要包括管理方、社群和商業應用這三個方面。

(一)管理方
從管理方看,各家都是“實力派”。

Hyperledger Fabric 的管理方是 Linux 基金會,基金會管理下的 Hyperledger 其實是一個專案系列,包括 Cello、Swatooth、Burrow、Iroha 等;
FISCO BCOS 管理方是金鍊盟,金鍊盟是由深圳市金融科技協會、深圳前海微眾銀行、深證通、騰訊、華為、中科院等金融機構、科技企業、學術機構等組成的非營利性組織;(參考 https://www.fisco.com.cn/views/member.html)
Coco 的管理方是微軟;
EEA 是由芝加哥交易所、因特爾、ING、摩根大通和微軟等三十幾家創始成員組成的;
Corda 的管理方 R3 是以銀行為主的組織,至少已經吸收了 42 家金融巨頭,包括富國銀行、美國銀行、花旗銀行、德意志銀行、加拿大皇家銀行等,我國的平安、招行等也是其成員,不過 R3 麻煩不斷,也有些重量級成員已經退出。
(二)社群
現今科技發展比較流行開源,五大聯盟鏈也都是開源的,開源意味著要搞好社群建設,通過社群推廣和改進設計,凝聚更多智慧。

Hyperledger Fabric 已經打造了國際化的社群,除了在 GitHub 上比較活躍外,大量的線下 Meetup、技術推廣活動也比較多,加上 IBM 的有力推動,使其有了大量的活躍使用者;
FISCO BCOS 社群建設初現規模,已有了千級成員、百級機構參與,除了 GitHub 外,還有官方微信群。FISCO BCOS 在不斷迭代原始碼和文件的基礎上,陸續推出了線上線下多種形式的系列運營活動,包括技術培訓、高校開課、線上線下講座沙龍、包括近期舉辦的金鍊盟中國區塊鏈大賽,影響力逐漸擴散。作為國內開源專案,相信未來發展上會有一定的“天時地利人和”;
Coco 社群不是很活躍;
Quorum 在 GitHub 上已經有了 551 個話題,有一定活躍度;
Corda 也不是很活躍。
(三)商業應用
商業應用是大家打造區塊鏈平臺的目的,也是一個聯盟鏈最重要的人氣所在。

Hyperledger Fabric 得益於 IBM 的大力推廣,加上技術框架比較成熟、推出較早,目前已有較多商業應用,據 IBM 披露有 400 多個落地專案,其中不乏馬士基、沃爾瑪、聯想、郵儲銀行這類大型客戶,也有統計稱,所有聯盟鏈專案中 Hyperledger Fabric 已佔據半壁江山;
FISCO BCOS 從金融出發,攜本土優勢,落地專案也有數十個,包括微眾銀行的機構間對賬平臺、網易的競猜遊戲,四方精創的供應鏈金融、城商行旅遊金融聯盟的旅遊金融、仲裁鏈、安妮股份的版權存證平臺、樂尋坊的人才活動平臺、鏈動時代的不動產登記系統等;
Coco 目前在專案方面乏善可陳,除了其白皮書中提到的 Mojix 將其供應鏈 Dapp 轉移到 Coco 平臺上之外,沒有更多公開的專案資訊;
Quorum 上,比較有影響的應該算是 2017 年 10 月摩根大通開發的 IIN(Interbank Information Network)平臺,實現跨行資訊互動,摩根大通、加拿大皇家銀行、澳大利亞 ANZ 銀行、紐西蘭銀行等相繼加入該平臺;
Corda 也是同樣的境地,雷大雨小,耗費巨資,但是測試的多,落地的少。
從生態角度看,Hyperledger Fabric 啟動的比較早,目前領先一步,但是 FISCO BCOS 奮起直追,已經初見規模,Coco、Quorum、Corda 還需要做很大努力。

三、效率

區塊鏈目前最差強人意的指標莫過於效率,雖然現在也有些人開始反思也許不應當苛求區塊鏈的效率,但是商業應用總是迴避不了這個問題。效率方面,本文從共識協議、出塊速度、TPS 和儲存消耗這四點加以比對。

(一)共識協議
聯盟鏈為了提升交易速度,往往是先從共識協議“下手”。POW 和 POS 都無法滿足商業應用的需要,“挖礦”對聯盟鏈來講也是沒必要的,因此,各家都採用了替代的共識方案。

Hyperledger Fabric 在 0.6 版中應用了 PBFT,而在 1.0 版中放棄了 PBFT,轉而採用效率更高的 Kafka,支援單點和叢集兩種方式,由 Kafka 直接給交易排序和出塊。
FISCO BCOS 支援平行計算的 PBFT 和標準 RAFT 兩種方式,前者是將通常的 PBFT 中議長節點和投票節點分步驗證的方式優化為併發驗證,從而進一步提高共識效率;
Coco 支援 Paxos 和 Caesar 兩種協議。由於 Coco 節點是建立在基於硬體的 TEEs(可信執行環境)上,因此就假定了節點充分可信,所以在 Paxos 中,leader 節點處理過的事務,follwer 節點簡單跟隨即可,這體現了其對公鏈假定的改變;Caesar 支援靈活的容錯模型,可以與 Paxos 共同使用以防範 leader 節點由於 TEEs 遭到破壞產生的安全威脅,該協議支援在 follwer 節點發現 leader 節點不可靠時將其驅逐,從而保證全網的安全;
Quorum 支援 Raft 和 Istanbul BFT 兩種協議。後者是由來自臺灣的 AMIS 帳聯網公司在 2017 年研發的,可以大幅提升現有的以太坊架構的訊息交換效率;
Corda 比較特殊,它借鑑“礦工”角色設計了公證人模組來提供交易公證(也即簽名)服務,整個網路不依賴於任何特定的共識演算法。但公證人是一個叢集概念,一般使用 BFT 或 Raft 在公證人間達成一致,因此,公證人是存在效率問題,可能成為效率瓶頸;
與傳統分散式系統的共識設計相比,Hyperledger Fabric 並沒有什麼改進,其共識方式與中心化共識的分散式資料庫一致;FISCO BCOS 支援 PBFT 共識演算法,具備拜占庭容錯功能,也提供 RAFT 共識演算法,適用於在節點可信度比較樂觀的場景;Coco 是通過 TEEs 提高節點可信性,以降低共識協議的複雜度;Quorum 也沒做多少調整,尤其是在引入 Istanbul BFT 之前;Corda 應該說是在傳統設計中引入了“礦工”理念。

(二)出塊速度
由於替換了共識機制,因此相比使用 POW 的比特幣、以太坊,聯盟鏈出塊速度要提高很多。Hyperledger Fabric、FISCO BCOS、Coco 都是秒級出塊;Quorum 則稱是毫秒級,預設設定是 50 毫秒,可以調整;Corda 沒有塊,所以也沒有出塊速度可以考量。

(三)TPS
TPS 相當於區塊鏈世界中的“網紅”,很多新出現的鏈都把 TPS 貼在“腦門”上。這五大聯盟鏈雖然 TPS 遠高於比特幣、以太坊,但還是比現有的分散式系統遜色:

Hyperledger Fabric 通常實測的 TPS 在 300-500 之間;
FISCO BCOS 實測單鏈可以達到 1000 以上。並且支援多鏈架構下的平行計算,可靈活擴充套件,理論上無上限。
Coco 官方資料是 1600;
Quorum 在 Istanbul BFT 協議下可以達到 400-800,Raft 下缺少資料;
Corda 由於其網路結構的原因,沒有全域性吞吐量可以衡量。
其實 TPS 方面如果沒有達到一個數量級以上的差異,是不用特殊關注的,因為在實際應用中,節點數量、網路環境、硬體配置、軟體設計等都會對 TPS 產生影響,而現有的聯盟鏈在吞吐量上已經可以滿足相當一部分商業場景的要求,畢竟 Visa 在 2016 年每秒實際處理的交易也只有 1,667 筆,儘管 Visanet 據稱有每秒處理 56,000 筆交易的能力。

(四)儲存消耗
區塊鏈可以說是以“浪費”儲存來換取信任的技術。雖然儲存裝置的價格越來越低廉,但這不代表“浪費”就沒毛病,儲存的快速膨脹一定會帶來效率、成本、可用性等諸多問題,甚至會要求改變設計架構,尤其是在大家都想追求“殺手級應用”的時候。

Hyperledger Fabric 方面,螞蟻金服倒是給出了一個詳細的計算公式,Fabric 資料容量估算(GB) = 每種業務每天平均交易筆數 x (Fabric 每筆交易基本開銷 + 每筆交易平均業務資料大小 KB x 2 ) x 業務 Channel 數量 x(365 x 年數 x(Peer 節點數量 x 2~1 之間 + Orderer 節點數量)+ Kafka Retention 天數 x Kafka Replica 數量) / (1024 x 1024),其計算示例中,在業務筆數每天 10 萬、4 節點、2 通道、單筆交易容量 1K 的情況(其他因素不詳細列出了)下,年儲存消耗 4619G;
FISCO BCOS 支援歷史資料快速追蹤,對接資料庫,實現分散式儲存,能夠支援海量服務的儲存需求,提高儲存訪問速率,節省儲存消耗。
Coco 由於設計上需要整合區塊鏈協議做底層,因此其消耗就取決於整合的區塊鏈協議,比如集成了 Hyperledger Fabric,那加上 Coco 自身的消耗,其儲存消耗量至少應該是比肩 Fabric 的;
Quorum 也沒有針對儲存的特殊優化,至少應當按照大於以太坊消耗來估算;
Corda 倒是不同於其他聯盟鏈,因為它基本上就是傳統的分散式資料庫,而且沒有任何節點儲存全域性資料,每個節點都只儲存跟自己有關的資料,所以,其儲存消耗應該與傳統分散式系統設計類似,沒有過多的冗餘消耗。
綜上,從效率方面看,在 Hyperledger Fabric 之後推出或開源的其他聯盟鏈,效率高於它也屬正常。FISCO BCOS、Quorum 本就是面向金融的設計,所以效率要求自然要高於一開始就希望做通用框架 Hyperledger Fabric;Coco 設計理念上就是希望做成“加速器”的,它的效率理應高於任何它可以整合的區塊鏈;而 Corda 的設計模式決定了很難全面評價其效率,只能去單獨觀察每個例項。

四、擴充套件性

聯盟鏈的使用者都希望自己能發展成生態圈,比如海爾的供應鏈、中化的原油進出口貿易平臺、馬士基的全球交易平臺等,因此,擴充套件性是聯盟鏈設計必須要考慮的問題。這方面本文關注了節點數量擴充套件、共識擴充套件、單多鏈模式、加密演算法擴充套件、第三方認證證書支援這五點。

(一)節點數量擴充套件
Hyperledger Fabric 在節點數量擴充套件方面是弱項,已落地專案多是個位數節點,但是可以支援較多的客戶端,算是一種彌補,不過節點數少其實意味著參與方的獨立性是會有所下降的;
FISCO BCOS 的分組模式支援根據節點數量進行水平擴容,因此理論上節點數量是不受限制的;
Coco 在這方面有些“投機取巧”,可支援的節點數量取決於其整合的區塊鏈協議,如果整合的是公鏈協議,在理論上也不受限制;
Quorum 是基於以太坊的,因此理論上也沒有限制;
Corda 同樣也沒有節點數限制。
雖然除了 Hyperledger Fabric,其他聯盟鏈似乎都沒有節點數量問題,但是節點數量其實還受共識協議的影響,BFT 類共識協議在節點數量超過一定水平時會出現吞吐量下降,設計時應當考慮這點。

(二)共識協議擴充套件
共識協議的擴充套件能力對聯盟鏈的穩定性有很大影響,能否根據節點數量、網路平衡情況、吞吐量進行調整決定了其網路的擴充套件能力。

Hyperledger Fabric 雖然很早在設計上就稱其共識模組可插拔,但是目前實際應用上看是不具備插拔能力的,每個版本僅支援一種共識模式;
FISCO BCOS 支援共識協議的外掛式實現,允許切換共識機制;
Coco、Quorum 目前也具備了這種能力;
Corda 實現的應該說不是共識協議的直接插拔,而是公證人模組的可插拔,可以通過切換公證人模組來選擇公證人的共識模式。
(三)單多鏈模式
多鏈模式目前被很多新出現的鏈用於效能擴充套件,不過多鏈模式有利有弊,提升效能的同時也增加了設計複雜度。

Hyperledger Fabric 的通道機制其實可以算是早期的多鏈設計,但是通道在 Hyperledger Fabric 中並不是出於提升效率的目的設計的,而是為了滿足業務多樣性要求,以降低業務複雜度,因此,通道機制目前在效能擴充套件方面沒有顯著貢獻;
FISCO BCOS 是明確的平行計算多鏈設計,設計上要求開發者儘可能保持多鏈的同構特徵以減少衝突,多鏈設計被直接應用在系統擴充套件方面;
Coco 的模式仍然取決於其整合的區塊鏈協議;
Quorum 是單鏈模式的,底層的效能擴充套件要跟隨以太坊的技術路線,可能要依賴以太坊的分片等技術進行擴充套件;
Corda 設計上是多網路模式,沒有單多鏈的概念,但是可以建立兩個網路節點的雙向連線,配置雙方信任的公正和認證機構進行網路融合,融合算是其擴充套件的一種方式。
(四)加密演算法擴充套件
對於國內的應用,加密演算法的擴充套件也即國密替換是一個強烈需求,尤其是在金融領域。

Hyperledger Fabric 不支援國密替換,目前已有的應用凡實現國密的基本上是自行替換或者依賴第三方服務;
FISCO BCOS 是支援國密的;
Coco 未對加密演算法的選擇有明確說明,因為這對 Coco 而言屬於底層,取決於其整合區塊鏈協議,但目前它所整合的協議中還沒有支援國密的;
Quorum、Corda 都沒有對國密的支援方案。
(五)第三方認證證書支援
這一點對國內的應用也很重要。

Hyperledger Fabric 目前不支援第三方 CA;
FISCO BCOS 支援第三方證書,支援證書的撤銷,支援多 CA;
Coco 由於私鑰都保管在本地業務系統且允許自己生成,網路上只存公鑰集,因此技術上看應該可以支援第三方 CA;
Quorum、Corda 都未見有此類支援。
綜上,Hyperledger Fabric 在擴充套件性上有一定的限制; FISCO BCOS 的可擴充套件性是很有優勢的,尤其是面向國內應用時;Coco 擴充套件性取決於其整合的協議;Quorum 的擴充套件性與以太坊關係密切;Corda 除了在加密演算法和第三方認證證書方面外,擴充套件的自由度有可能是最高的。

五、節點管理與許可權管理

除了共識之外,聯盟鏈與公鏈的顯著區別當屬在節點和許可權上的設計了。本文從節點型別、作用、成員准入控制、角色和許可權管理這幾個方面比較下各聯盟鏈之間的差異。

(一)節點型別
Hyperledger Fabric 網路中的節點主要分為排序節點、背書節點和記賬節點三類,實際應用中還可以加入只有同步賬本能力的二級節點;
FISCO BCOS 中包含核心節點、全節點、輕節點;
Coco 是一個可信驗證節點(VN)分散式網路,也即,它只有一類節點就是 VN;
Quorum 中的節點是基於的以太坊 Golang 版本實現的,因此節點之間是對等的,沒有節點型別的區分,節點之間可以有白名單管理;
Corda 也不區分節點型別。
(二)節點作用
Hyperledger Fabric 網路中背書節點負責提供簽名服務,經背書節點簽名且滿足簽名策略的交易提案會提交給排序節點進行交易排序和出塊,再由記賬節點完成賬本更新;
FISCO BCOS 中核心節點負責共識和記賬,共識節點參與記賬共識, 觀察節點同步賬本;
Coco、Quorum、Corda 中節點都是對等的。
(三)准入控制
Hyperledger Fabric 中有專門的 CA 模組提供使用者資訊註冊、數字證書發行、延期和吊銷等服務,成員管理採用 MSP 方式,同一個組織內的成員通過共用同一個 MSP 標識進行識別;
FISCO BCOS 中,成員加入網路採用管理員認證的方式,提供合法有效的成員資訊與 CA 證書,由管理員稽核通過後,加入網路;
Coco 網路中的角色分為成員和參與者兩種,成員是網路的集體管理者,擁有投票權,投票決定其他機構的加入或刪除;
Quorum 網路中節點通過授權才能加入網路,授權是集中式的,通過 Java 控制檯操作;
Corda 中節點也是需要授權加入的,節點選擇加入一個或多個網路地圖,網路地圖相當於網路成員及其地址列表,節點只能與所在地圖中的成員進行交易。
(四)角色
Hyperledger Fabric 中雖然成員沒有明確的角色劃分,但是基於其運維或對應的節點的差異會自然形成不同的角色;
FISCO BCOS 網路中的角色包含超級管理員、鏈或許可權管理員、運維、交易、監管等;
Coco 網路中的角色分為成員和參與者兩種,但不是必須同時具有兩類參加者,也可以只有成員型別;
Quorum 網路中沒有角色的區分;
Corda 網路中的角色分為公證人和參與者兩種,公證人提供公證服務,參與者進行交易。
(五)許可權管理
Hyperledger Fabric 中許可權主要通過策略進行管理,策略實際上是成員通過節點進行某種操作,比如提交交易提案等,所需要滿足的簽名數量要求。
FISCO BCOS 許可權管理採用系統合約的方式,並可以通過自定義合約的方式進行許可權管理功能的擴充套件,許可權管理模型為 ARPI(賬戶——角色——許可權——介面)模式,多個賬戶可以對應同一個角色,角色有明確的許可權列表,每個許可權對應一個介面,介面指向智慧合約,許可權列表按照系統合約方式維護。業務中的許可權管理則採用交易許可權鏈的方式,一個交易相當於一組許可權鏈,包含多個 Filter,交易處理是逐個 Filter 進行許可權判斷,一個交易完成相當於一組 Filter 稽核都通過。
Coco 網路有成員負責治理,參與者是沒有投票權的,不能參加網路管理。成員和參與者都可以擁有 VN。成員對網路的管理通過共同維護一個可程式設計的網路章程來進行,章程內容至少包括成員列表、VN 列表、程式碼清單、TEE 清單和投票策略。
Quorum、Corda 沒有明顯的許可權管理內容。
綜合比較,FISCO BCOS 的設計比較周全,也有一定的複雜性,但這也意味著它能夠支援更復雜的場景; Hyperledger Fabric 、Coco 帶有一定中心化因素;相較之下,Quorum、Corda 更接近公鏈思路。帶有中心化因素本就是聯盟鏈對其應用的商業環境的體現,這也無可厚非。

六、智慧合約

為了提升效率,支援更加友好的設計,各聯盟鏈在智慧合約上也出現了不同的發展思路。

Hyperledger Fabric 中的智慧合約稱為“鏈碼”。鏈碼分為系統鏈碼和普通鏈碼,前者包括生命週期管理、配置管理等,屬於系統控制層面的鏈碼;普通鏈碼則是用於實現業務邏輯的鏈碼,智慧合約開發通常指的就是這部分鏈碼。鏈碼的業務模型為“MCV-B”,即,在傳統的 MVC(模型、控制器、檢視)模式中嵌入 B(區塊鏈),強調鏈碼是業務邏輯的加強。鏈碼的生命週期包括打包、安裝、例項化、升級、停止和啟動,執行在 Docker 中,由背書節點進行呼叫,目前主要支援的是 Go 語言。Hyperledger Fabric 雖然提供了跨通道機制,允許跨通道呼叫鏈碼,但是跨通道呼叫只支援讀而不支援寫。
FISCO BCOS 中除了通常用於業務邏輯的智慧合約外,將系統管理也智慧合約化了,統稱為系統合約,包含系統代理、節點管理、機構證書、許可權管理、全網配置五類。上述合約原則上由區塊鏈管理員在網路啟動時部署,網路執行期間的變更則需要在去全網所有節點許可的情況下由管理員操作。FISCO BCOS 主要支援 EVM 引擎的智慧合約。
Coco 由於其節點執行在可信執行環境中,因此,與其他聯盟鏈不同的是智慧合約只需單個節點執行,不必多次驗證。更與眾不同的是,因為可以單點只執行一次,所以 Coco 的智慧合約支援不確定交易。此外,允許智慧合約直接連線外部可信資料來源。
Quorum 是基於以太坊智慧合約的,智慧合約本身沒有特別之處,合約執行結果方面,節點只對公開交易和節點涉及的私有交易進行驗證,而不必驗證所有交易。
Corda 的智慧合約設計思路也比較獨特,首先,它主張智慧合約的業務資料和業務邏輯要能關聯到明確的法律依據上,這相當於要智慧合約跟業務憑證之間具有強聯絡;其次,Corda 主張純函式式設計,力推金融合約的標準化,提供小型類庫,以減少對低層次邏輯的重新開發;再次,單純看智慧合約的話,Corda 的智慧合約是“碎片化”的小段程式,而且只能做為起流轉控制作用的“驗證程式”,做不到一般智慧合約那種價值轉移功能,在 Corda 中,“交易”、“智慧合約”和“流式架構”加起來才能與其他平臺的智慧合約相當。
總結一下,Hyperledger Fabric 的鏈碼設計給了智慧合約一個新的設計框架,這方面它是開創性的;FISCO BCOS 則將智慧合約應用擴充套件到了系統管理方面;Coco 採取了改變公鏈設計假定的思路,不僅不對智慧合約進行重複驗證,還支援不確定交易;Quorum 的智慧合約基本沿襲公鏈思路;Corda 的思路也比較另類,但是智慧合約本身卻更弱化了。

智慧合約是隨著以太坊火起來的,成了區塊鏈的標誌性技術,但其實目前的智慧合約還遠不夠“智慧”,這個名字容易引起誤解。以太坊創始人 Vitalik 最近在推特上發文稱對使用智慧合約這個術語表示“十分遺憾”,應該使用更專業或更無聊的名字,比如,“持續的指令碼”之類的東西,想來也有此意。

七、部署與運維友好性

聯盟鏈常被稱為是個“坑”,這個“坑”主要是在部署和運維方面。

(一)部署
Hyperledger Fabric 雖然已經是個成熟框架了,有良好的社群環境,市面上還有若干不錯的教材,但是部署方面依然讓很多新人不知就裡,筆者所在的微信群裡大部分時間都在交流部署問題而非設計問題;
FISCO BCOS 提供一鍵安裝 /step-by-step/docker 等搭鏈方式,同時還未企業生產部署提供物料包的打包工具,簡化部署複雜度;
Coco 的部署特點是增加了一次對其他區塊鏈協議的整合,要先有底層區塊鏈協議,才能部署 Coco,這其實要設計人員對 Coco 和其整合的區塊鏈協議都有一定了解才好,學習成本較大,此外,Coco 需要部署 TEE 硬體裝置來支援可信執行環境構建,這是其他聯盟鏈通常不需要的,TEE 因此也成為一個安全隱患;
Quorum 需要在以太坊之上部署,依賴以太坊,與 Coco 相同,設計人員最好也要了解以太坊;
Corda 的部署目前缺乏例項來做比較。
(二)運維
Fabric 目前沒有提供多少支援工具,多數需要設計者自己開發;
FISCO BCOS 提供了方便運維的合約命名服務,提供區塊鏈瀏覽器和監控,並且有上帝模式用於處理節點崩潰問題,運維友好度有一定改善;
Coco 目前未見提供多少運維工具;
Quorum 有一些第三方支援工具;
Corda 與其他聯盟鏈相比,運維方面最大的特色莫過於支援受限形式的資料庫回滾。
聯盟鏈的部署和運維都有一定的學習曲線,其複雜度遠高於公鏈,一個新手部署一條以太坊要不了多少時間,但是運轉起一個聯盟鏈,還是需要打聽不少“小夥伴”的。

八、隱私保護

聯盟鏈有一個讓大家糾結的問題是,明明要上鍊一起共建生態、共享資訊,卻紛紛要求隱私保護,要上鍊又不能隨意公開,不僅希望身份保密,還希望交易資訊保密,這與公鏈資訊公開、身份保密的設計理念有很大不同,但這是合理要求,尤其是在金融領域。本文從可見範圍、加密措施兩方面對各鏈加以比較。

(一)可見範圍
Hyperledger Fabric 的通道可以用來隔離資料,只有在同一通道內的節點才可以共享同一套賬本資訊,而通過組織設計,基於 MSP 標識可以在同一通道內進一步控制資料可見範圍,1.2 版中加入了私有資料模式,允許指定的節點間共享資訊,這比組織更加靈活;
FISCO BCOS 設計了 AMOP 協議,以提供機構間的點對點通訊,通訊資訊屬於鏈下資訊,不在全網共享,鏈上部分在引入中央對手方提供信用背書的情況下,資料也僅在交易方和中央對手方之間共享,多鏈方式也可用於資料隔離,必要時通過跨連互通;
Coco 支援兩個或多個交易者的機密交易,通過 TEE 控制可見性,但要求整合的區塊鏈協議最好也提供一定支援;
Quorum 區分公開資料和私有資料,私有資料只允許限定的交易方可見;
Corda 資料僅在交易方之間可見,節點之間提供一個交易依賴關係圖,資料根據需要傳送,而不在全域性廣播,任何參與方都無法見到包含全部資料的全域性賬本。
(二)加密措施
Hyperledger Fabric 1.1 開始支援賬本資料加密,1.2 版引入私有資料後,設計上允許只給 Kafka 提供交易 Hash 用於排序而不向 Kafka 提供交易資訊,以防排序節點洩露資料;
FISCO BCOS 允許採用高強度的加密資料信封進行保護,未參與交易的機構只能接收到密文,此外,建議對敏感資料採用脫敏上鍊、Hash 上鍊等方式進行保密處理;支援零知識證明,環簽名,群簽名,同態加密等隱私保護方法。
Coco 允許應用程式先進行資料加密再提交事務,公網資料採用加密傳播的方式,以對不受信任的 host 保密;
Quorum 有獨立的 Constellation 模組,對私有事務的交易資料進行加密保護,還提供了獨立的零知識證明(ZSL)模組以防止驗證使用者身份時發生資訊洩露;
Corda 也使用 enclave 進行資料保護,並考慮使用安全硬體。
在隱私保護上,各鏈都下了很大力氣,這方面與其一較短長,不如考慮互相借鑑。

九、選型建議

通過以上八個方面,本文粗略比較了五大聯盟鏈的設計與差異,如果非要從技術角度給各家打個分、排個名,實在有些“霸王硬上弓”之嫌,各家原本思路和焦點就不同,都有自己的“小目標”,非要不管人家自己的想法去論個短長,有些不太“科學”,也不是應用的合理“姿勢”。各聯盟鏈畢竟都是為了解決實際問題、為了落地區塊鏈專案而設計的,所以,本文最後從大家都會關心的技術選型角度做個總結。

整體而言,Hyperledger Fabric 的綜合實力依然最強,推出時間早、框架完整且比較成熟,有國際化應用和國際化社群加持,案例和技術支援對於仍屬早期發展階段的區塊鏈而言非常重要,Hyperledger Fabric 在這方面可以說優勢極大。但是,它也有些不能迴避的問題,比如基礎研發進展緩慢,研發主體不明確,一些應用者關心的關鍵問題遲遲不見解決。隨著百度、阿里、騰訊、京東等一眾國內大廠的強勢加入,Hyperledger Fabric 的優勢地位也會受到越來越多的挑戰,對此,它急需合適的應對措施。

FISCO BCOS 應該說是本土化設計的代表,其在底層研究上的投入、關鍵技術上的改進、對國內需要的適應性調整、對社群建設和運維的重視,都有可圈點之處,平臺在各行業的通用性也在加強,隨著開源工作的推進和案例的不斷增加,其本土化優勢會逐步顯現。在國家政策的鼓勵下,國內大廠如今紛紛高調殺入聯盟鏈市場,如果這些大廠真的“傾情”加入,那與 Hyperledger Fabric 相較,其開發主體、資金投入的穩定性要更有優勢,而且,大廠們基本自帶生態和流量,案例的增長、生態的發展也是可以預期的,是很多專案可以借力之處。

Coco、Quorum、Corda 都存在支援能力不足、缺乏有效案例的問題,雖然微軟目前在 Coco 以及其他基於 Azure 的區塊鏈平臺和應用上投入了一定力量,但是對國內應用者而言,仍顯不足。

因此,從技術選型角度來講,應用者,尤其是新入局的應用者,最好還是在 Hyperledger Fabric 這種影響廣泛的成熟框架或者 FISCO BCOS 這種有實力且能提供較強本土支援的平臺上做選擇,而在開發過程中借鑑下 Coco、Quorum、Corda 中的優秀設計理念。

區塊鏈仍屬於技術的早期階段,這個階段必然要求應用者具備較強的學習能力,多做基礎研究,敢於對所選擇的技術平臺進行改良,積極與平臺提供商合作進行技術探索,區塊鏈還沒到像主流作業系統那樣可以“坐享其成”的階段,仍然需要所有參與者秉持“開源”思想,不辭辛苦、熱情奉獻、共同進步。