聯(lián)盟鏈是目前區(qū)塊鏈落地實踐的熱點,也是大家對“殺手級應用”期望最大的區(qū)塊鏈部署形態(tài)。聯(lián)盟鏈的誕生源于對區(qū)塊鏈技術的“反思”,是對比特幣、以太坊所體現(xiàn)的技術特點與企業(yè)客戶實際需要的融合與折衷,蘊含了大量區(qū)塊鏈工作者的智慧與辛勞。由于對未來價值的“共識”,很多廠商推出了自己的聯(lián)盟鏈框架或平臺,本文選擇了 Hyperledger Fabric、FISCO BCOS、微軟的 Coco、企業(yè)以太坊聯(lián)盟(EEA)及 R3 的 Corda 這五個具有一定影響力的聯(lián)盟鏈,擬從設計理念、生態(tài)、效率、擴展性、節(jié)點管理與權限管理、智能合約、部署與運維友好性、隱私保護、公鏈結合或演化能力九個方面進行比對,以供各位開發(fā)者、愛好者參考。其中,EEA 由于只出具規(guī)范而不涉及代碼,所以比對中采用了其官方承認的技術基礎——摩根大通的 Quorum 平臺;Corda 并不是區(qū)塊鏈,嚴格說與其他四者的比較屬于分布式賬本技術這個層級的比較,但是由于其承認設計上是受到區(qū)塊鏈技術啟發(fā),且對其他聯(lián)盟鏈也產(chǎn)生了一定的影響,因此,也列入了比較范圍。本文的信息主要來源于公開的技術白皮書、Github 中的開源信息,就不在文中一一注明了。
一、設計理念
設計理念其實決定了一個框架或者系統(tǒng)的最佳應用方式,是其設計的出發(fā)點,因此,研究每種區(qū)塊鏈時,都應當認真關注其如何“看待自己”,以免在應用上出現(xiàn)“硬套”的問題。設計理念上本文分成核心思路與市場定位兩部分進行比較。
(一)核心思路
核心思路體現(xiàn)的是其設計初衷,這個“初心”對其后續(xù)技術走向有一定的影響。Hyperledger Fabric 是希望改變公鏈的單一通用網(wǎng)絡模式,通過建立多個可以互聯(lián)的區(qū)塊鏈網(wǎng)絡覆蓋各類不同的業(yè)務場景,實現(xiàn)設計的靈活性,滿足多樣化的要求,并實現(xiàn)網(wǎng)絡間的交互,這種思路體現(xiàn)在了其獨特的通道機制設計上。FISCO BCOS 初衷是設計一個國內(nèi)企業(yè)主導研發(fā)、自主可控、對外開源的滿足金融行業(yè)需求企業(yè)級區(qū)塊鏈底層平臺,并逐漸擴展至其他領域、適用于廣泛的分布式商業(yè)場景,所以進行了自底向上的完整設計,并考慮了較多國內(nèi)的特殊需求。Coco 基于保密聯(lián)盟環(huán)境的假定,重新評估了公鏈的設計,通過將其他區(qū)塊鏈協(xié)議集成為底層,快速高效地構建區(qū)塊鏈應用。在這種思路下 Coco 大膽放松了一些關鍵的設計限制,并且最終實現(xiàn)了一個對現(xiàn)有區(qū)塊鏈協(xié)議的加速機制,可集成的協(xié)議已經(jīng)包括 Hyperledger Fabric、以太坊、Corda、Quorum 等。EEA 是力求引導一種基于以太坊的標準區(qū)塊鏈設計,可根據(jù)成員需要定制,但不提供代碼(Quorum 提供部分開源代碼)。官方承認其技術基礎是摩根大通開發(fā)的 Quorum 平臺,該平臺的目標則是提供高速、高吞吐量交易的能力,以解決區(qū)塊鏈技術在金融等領域遭遇的挑戰(zhàn)。Corda 希望提供一個具有唯一性、權威性、可以記錄企業(yè)間所有協(xié)議的全局邏輯賬本,核心是實現(xiàn)具有節(jié)點間最小信任機制的無中心數(shù)據(jù)庫,因此,Corda 主張充分考慮與現(xiàn)有業(yè)務系統(tǒng)的結合,而非將現(xiàn)有業(yè)務系統(tǒng)拆掉重來。Corda 的設計思路對 Hyperledger Fabric 有一定影響,也參與了對后者的建設。
(二)市場定位市場定位反映了對自身應用方向的價值主張。五個聯(lián)盟鏈都是面向企業(yè)級應用的,但是具體的定位略有差異:Hyperledger Fabric 旨在打造不分行業(yè)的通用區(qū)塊鏈開源框架;FISCO BCOS 源自企業(yè)級區(qū)塊鏈平臺 BCOS,做為一個金融版本分支,保留通用性的同時,更關注于金融行業(yè),并且較多考慮了監(jiān)管機構的特殊性;Coco 希望提供更高效易用的區(qū)塊鏈技術,沒有特殊的行業(yè)定位;
EEA 比較有趣,它以將所有企業(yè)導向一個統(tǒng)一的路線圖(該路線圖以以太坊技術發(fā)展為基礎)為目標,但是由于目前的技術代表是摩根大通的 Quorum,所以,應用實例上對金融行業(yè)更有指導性;Corda 則是針對金融行業(yè)的,并且明確提出至少一定時間內(nèi)不會考慮其他行業(yè)。從設計理念的角度來講,選用 Hyperledger Fabric 時,應當善用其通道機制,通過通道機制降低業(yè)務或者環(huán)境的復雜度,但是要注意其跨通道能力的一些技術限制;FISCO BCOS 則應關注其對國內(nèi)市場特殊需求的適應性設計,這些設計會帶來很多部署上的優(yōu)勢;Coco 和 EEA(Quorum)設計理念上都屬于基于現(xiàn)有協(xié)議的優(yōu)化加速機制,只是前者“博愛”,兼容的協(xié)議更多,后者“專一”,只針對以太坊;選用 Corda 則要先明確,它不是區(qū)塊鏈,不要帶著區(qū)塊鏈的價值假定去應用。
二、生態(tài)
大家常說建聯(lián)盟鏈就是建生態(tài),所以本文就比較下要幫著別人建生態(tài)的聯(lián)盟鏈,其自身的生態(tài)建的如何。生態(tài)考察主要包括管理方、社區(qū)和商業(yè)應用這三個方面。
(一)管理方
從管理方看,各家都是“實力派”。Hyperledger Fabric 的管理方是 Linux 基金會,基金會管理下的 Hyperledger 其實是一個項目系列,包括 Cello、Swatooth、Burrow、Iroha 等;FISCO BCOS 管理方是金鏈盟,金鏈盟是由深圳市金融科技協(xié)會、深圳前海微眾銀行、深證通、騰訊、華為、中科院等金融機構、科技企業(yè)、學術機構等組成的非營利性組織;Coco 的管理方是微軟;
EEA 是由芝加哥交易所、因特爾、ING、摩根大通和微軟等三十幾家創(chuàng)始成員組成的;Corda 的管理方 R3 是以銀行為主的組織,至少已經(jīng)吸收了 42 家金融巨頭,包括富國銀行、美國銀行、花旗銀行、德意志銀行、加拿大皇家銀行等,我國的平安、招行等也是其成員,不過 R3 麻煩不斷,也有些重量級成員已經(jīng)退出。
(二)社區(qū)
現(xiàn)今科技發(fā)展比較流行開源,五大聯(lián)盟鏈也都是開源的,開源意味著要搞好社區(qū)建設,通過社區(qū)推廣和改進設計,凝聚更多智慧。Hyperledger Fabric 已經(jīng)打造了國際化的社區(qū),除了在 GitHub 上比較活躍外,大量的線下 Meetup、技術推廣活動也比較多,加上 IBM 的有力推動,使其有了大量的活躍用戶;FISCO BCOS 社區(qū)建設初現(xiàn)規(guī)模,已有了千級成員、百級機構參與,除了 GitHub 外,還有官方微信群。FISCO BCOS 在不斷迭代源碼和文檔的基礎上,陸續(xù)推出了線上線下多種形式的系列運營活動,包括技術培訓、高校開課、線上線下講座沙龍、包括近期舉辦的金鏈盟中國區(qū)塊鏈大賽,影響力逐漸擴散。作為國內(nèi)開源項目,相信未來發(fā)展上會有一定的“天時地利人和”;Coco 社區(qū)不是很活躍;Quorum 在 GitHub 上已經(jīng)有了 551 個話題,有一定活躍度;Corda 也不是很活躍。
(三)商業(yè)應用
商業(yè)應用是大家打造區(qū)塊鏈平臺的目的,也是一個聯(lián)盟鏈最重要的人氣所在。Hyperledger Fabric 得益于 IBM 的大力推廣,加上技術框架比較成熟、推出較早,目前已有較多商業(yè)應用,據(jù) IBM 披露有 400 多個落地項目,其中不乏馬士基、沃爾瑪、聯(lián)想、郵儲銀行這類大型客戶,也有統(tǒng)計稱,所有聯(lián)盟鏈項目中 Hyperledger Fabric 已占據(jù)半壁江山;FISCO BCOS 從金融出發(fā),攜本土優(yōu)勢,落地項目也有數(shù)十個,包括微眾銀行的機構間對賬平臺、網(wǎng)易的競猜游戲,四方精創(chuàng)的供應鏈金融、城商行旅游金融聯(lián)盟的旅游金融、仲裁鏈、安妮股份的版權存證平臺、樂尋坊的人才活動平臺、鏈動時代的不動產(chǎn)登記系統(tǒng)等;
Coco 目前在項目方面乏善可陳,除了其白皮書中提到的 Mojix 將其供應鏈 Dapp 轉(zhuǎn)移到 Coco 平臺上之外,沒有更多公開的項目信息;Quorum 上,比較有影響的應該算是 2017 年 10 月摩根大通開發(fā)的 IIN(Interbank Information Network)平臺,實現(xiàn)跨行信息交互,摩根大通、加拿大皇家銀行、澳大利亞 ANZ 銀行、新西蘭銀行等相繼加入該平臺;Corda 也是同樣的境地,雷大雨小,耗費巨資,但是測試的多,落地的少。從生態(tài)角度看,Hyperledger Fabric啟動的比較早,目前領先一步,但是 FISCO BCOS 奮起直追,已經(jīng)初見規(guī)模,Coco、Quorum、Corda 還需要做很大努力。
三、效率
區(qū)塊鏈目前最差強人意的指標莫過于效率,雖然現(xiàn)在也有些人開始反思也許不應當苛求區(qū)塊鏈的效率,但是商業(yè)應用總是回避不了這個問題。效率方面,本文從共識協(xié)議、出塊速度、TPS 和存儲消耗這四點加以比對。
(一)共識協(xié)議
聯(lián)盟鏈為了提升交易速度,往往是先從共識協(xié)議“下手”。POW 和 POS 都無法滿足商業(yè)應用的需要,“挖礦”對聯(lián)盟鏈來講也是沒必要的,因此,各家都采用了替代的共識方案。
Hyperledger Fabric 在 0.6 版中應用了 PBFT,而在 1.0 版中放棄了 PBFT,轉(zhuǎn)而采用效率更高的 Kafka,支持單點和集群兩種方式,由 Kafka 直接給交易排序和出塊。
FISCO BCOS 支持并行計算的 PBFT 和標準 RAFT 兩種方式,前者是將通常的 PBFT 中議長節(jié)點和投票節(jié)點分步驗證的方式優(yōu)化為并發(fā)驗證,從而進一步提高共識效率;
Coco 支持 Paxos 和 Caesar 兩種協(xié)議。由于 Coco 節(jié)點是建立在基于硬件的 TEEs(可信執(zhí)行環(huán)境)上,因此就假定了節(jié)點充分可信,所以在 Paxos 中,leader 節(jié)點處理過的事務,follwer 節(jié)點簡單跟隨即可,這體現(xiàn)了其對公鏈假定的改變;Caesar 支持靈活的容錯模型,可以與 Paxos 共同使用以防范 leader 節(jié)點由于 TEEs 遭到破壞產(chǎn)生的安全威脅,該協(xié)議支持在 follwer 節(jié)點發(fā)現(xiàn) leader 節(jié)點不可靠時將其驅(qū)逐,從而保證全網(wǎng)的安全;Quorum 支持 Raft 和 Istanbul BFT 兩種協(xié)議。后者是由來自臺灣的 AMIS 帳聯(lián)網(wǎng)公司在 2017 年研發(fā)的,可以大幅提升現(xiàn)有的以太坊架構的訊息交換效率;Corda 比較特殊,它借鑒“礦工”角色設計了公證人模塊來提供交易公證(也即簽名)服務,整個網(wǎng)絡不依賴于任何特定的共識算法。但公證人是一個集群概念,一般使用 BFT 或 Raft 在公證人間達成一致,因此,公證人是存在效率問題,可能成為效率瓶頸;與傳統(tǒng)分布式系統(tǒng)的共識設計相比,Hyperledger Fabric 并沒有什么改進,其共識方式與中心化共識的分布式數(shù)據(jù)庫一致;FISCO BCOS 支持 PBFT 共識算法,具備拜占庭容錯功能,也提供 RAFT 共識算法,適用于在節(jié)點可信度比較樂觀的場景;Coco 是通過 TEEs 提高節(jié)點可信性,以降低共識協(xié)議的復雜度;Quorum 也沒做多少調(diào)整,尤其是在引入 Istanbul BFT 之前;Corda 應該說是在傳統(tǒng)設計中引入了“礦工”理念。
(二)出塊速度
由于替換了共識機制,因此相比使用 POW 的比特幣、以太坊,聯(lián)盟鏈出塊速度要提高很多。Hyperledger Fabric、FISCO BCOS、Coco 都是秒級出塊;Quorum 則稱是毫秒級,默認設定是 50 毫秒,可以調(diào)整;Corda 沒有塊,所以也沒有出塊速度可以考量。
(三)TPS
TPS 相當于區(qū)塊鏈世界中的“網(wǎng)紅”,很多新出現(xiàn)的鏈都把 TPS 貼在“腦門”上。這五大聯(lián)盟鏈雖然 TPS 遠高于比特幣、以太坊,但還是比現(xiàn)有的分布式系統(tǒng)遜色:
Hyperledger Fabric 通常實測的 TPS 在 300-500 之間;FISCO BCOS 實測單鏈可以達到 1000 以上。并且支持多鏈架構下的并行計算,可靈活擴展,理論上無上限。Coco 官方數(shù)據(jù)是 1600;
Quorum 在 Istanbul BFT 協(xié)議下可以達到 400-800,Raft 下缺少數(shù)據(jù);Corda 由于其網(wǎng)絡結構的原因,沒有全局吞吐量可以衡量。其實 TPS 方面如果沒有達到一個數(shù)量級以上的差異,是不用特殊關注的,因為在實際應用中,節(jié)點數(shù)量、網(wǎng)絡環(huán)境、硬件配置、軟件設計等都會對 TPS 產(chǎn)生影響,而現(xiàn)有的聯(lián)盟鏈在吞吐量上已經(jīng)可以滿足相當一部分商業(yè)場景的要求,畢竟 Visa 在 2016 年每秒實際處理的交易也只有 1,667 筆,盡管 Visanet 據(jù)稱有每秒處理 56,000 筆交易的能力。
(四)存儲消耗
區(qū)塊鏈可以說是以“浪費”存儲來換取信任的技術。雖然存儲設備的價格越來越低廉,但這不代表“浪費”就沒毛病,存儲的快速膨脹一定會帶來效率、成本、可用性等諸多問題,甚至會要求改變設計架構,尤其是在大家都想追求“殺手級應用”的時候。Hyperledger Fabric 方面,螞蟻金服倒是給出了一個詳細的計算公式,F(xiàn)abric 數(shù)據(jù)容量估算(GB) = 每種業(yè)務每天平均交易筆數(shù) x (Fabric 每筆交易基本開銷 + 每筆交易平均業(yè)務數(shù)據(jù)大小 KB x 2 ) x 業(yè)務 Channel 數(shù)量 x(365 x 年數(shù) x(Peer 節(jié)點數(shù)量 x 2~1 之間 + Orderer 節(jié)點數(shù)量)+ Kafka Retention 天數(shù) x Kafka Replica 數(shù)量) / (1024 x 1024),其計算示例中,在業(yè)務筆數(shù)每天 10 萬、4 節(jié)點、2 通道、單筆交易容量 1K 的情況(其他因素不詳細列出了)下,年存儲消耗 4619G;
FISCO BCOS 支持歷史數(shù)據(jù)快速追蹤,對接數(shù)據(jù)庫,實現(xiàn)分布式存儲,能夠支持海量服務的存儲需求,提高存儲訪問速率,節(jié)省存儲消耗。Coco 由于設計上需要集成區(qū)塊鏈協(xié)議做底層,因此其消耗就取決于集成的區(qū)塊鏈協(xié)議,比如集成了 Hyperledger Fabric,那加上 Coco 自身的消耗,其存儲消耗量至少應該是比肩 Fabric 的;
Quorum 也沒有針對存儲的特殊優(yōu)化,至少應當按照大于以太坊消耗來估算;Corda 倒是不同于其他聯(lián)盟鏈,因為它基本上就是傳統(tǒng)的分布式數(shù)據(jù)庫,而且沒有任何節(jié)點保存全局數(shù)據(jù),每個節(jié)點都只保存跟自己有關的數(shù)據(jù),所以,其存儲消耗應該與傳統(tǒng)分布式系統(tǒng)設計類似,沒有過多的冗余消耗。
綜上,從效率方面看,在 Hyperledger Fabric 之后推出或開源的其他聯(lián)盟鏈,效率高于它也屬正常。FISCO BCOS、Quorum 本就是面向金融的設計,所以效率要求自然要高于一開始就希望做通用框架 Hyperledger Fabric;Coco 設計理念上就是希望做成“加速器”的,它的效率理應高于任何它可以集成的區(qū)塊鏈;而 Corda 的設計模式?jīng)Q定了很難全面評價其效率,只能去單獨觀察每個實例。