聯盟鏈是目前區(qū)塊鏈落地實踐的熱點,也是大家對“殺手級應用”期望最大的區(qū)塊鏈部署形態(tài)。聯盟鏈的誕生源于對區(qū)塊鏈技術的“反思”,是對比特幣、以太坊所體現的技術特點與企業(yè)客戶實際需要的融合與折衷,蘊含了大量區(qū)塊鏈工作者的智慧與辛勞。
由于對未來價值的“共識”,很多廠商推出了自己的聯盟鏈框架或平臺,本文選擇了 Hyperledger Fabric、FISCO BCOS、微軟的 Coco、企業(yè)以太坊聯盟(EEA)及 R3 的 Corda 這五個具有一定影響力的聯盟鏈,擬從設計理念、生態(tài)、效率、擴展性、節(jié)點管理與權限管理、智能合約、部署與運維友好性、隱私保護、公鏈結合或演化能力九個方面進行比對,以供各位開發(fā)者、愛好者參考。
其中,EEA 由于只出具規(guī)范而不涉及代碼,所以比對中采用了其官方承認的技術基礎——摩根大通的 Quorum 平臺;Corda 并不是區(qū)塊鏈,嚴格說與其他四者的比較屬于分布式賬本技術這個層級的比較,但是由于其承認設計上是受到區(qū)塊鏈技術啟發(fā),且對其他聯盟鏈也產生了一定的影響,因此,也列入了比較范圍。本文的信息主要來源于公開的技術白皮書、Github 中的開源信息,就不在文中一一注明了。
一、設計理念
設計理念其實決定了一個框架或者系統(tǒng)的最佳應用方式,是其設計的出發(fā)點,因此,研究每種區(qū)塊鏈時,都應當認真關注其如何“看待自己”,以免在應用上出現“硬套”的問題。設計理念上本文分成核心思路與市場定位兩部分進行比較。
(一)核心思路
核心思路體現的是其設計初衷,這個“初心”對其后續(xù)技術走向有一定的影響。
Hyperledger Fabric 是希望改變公鏈的單一通用網絡模式,通過建立多個可以互聯的區(qū)塊鏈網絡覆蓋各類不同的業(yè)務場景,實現設計的靈活性,滿足多樣化的要求,并實現網絡間的交互,這種思路體現在了其獨特的通道機制設計上。
FISCO BCOS 初衷是設計一個國內企業(yè)主導研發(fā)、自主可控、對外開源的滿足金融行業(yè)需求企業(yè)級區(qū)塊鏈底層平臺,并逐漸擴展至其他領域、適用于廣泛的分布式商業(yè)場景,所以進行了自底向上的完整設計,并考慮了較多國內的特殊需求。
Coco 基于保密聯盟環(huán)境的假定,重新評估了公鏈的設計,通過將其他區(qū)塊鏈協議集成為底層,快速高效地構建區(qū)塊鏈應用。在這種思路下 Coco 大膽放松了一些關鍵的設計限制,并且最終實現了一個對現有區(qū)塊鏈協議的加速機制,可集成的協議已經包括 Hyperledger Fabric、以太坊、Corda、Quorum 等。
EEA 是力求引導一種基于以太坊的標準區(qū)塊鏈設計,可根據成員需要定制,但不提供代碼(Quorum 提供部分開源代碼)。官方承認其技術基礎是摩根大通開發(fā)的 Quorum 平臺,該平臺的目標則是提供高速、高吞吐量交易的能力,以解決區(qū)塊鏈技術在金融等領域遭遇的挑戰(zhàn)。
Corda 希望提供一個具有唯一性、權威性、可以記錄企業(yè)間所有協議的全局邏輯賬本,核心是實現具有節(jié)點間最小信任機制的無中心數據庫,因此,Corda 主張充分考慮與現有業(yè)務系統(tǒng)的結合,而非將現有業(yè)務系統(tǒng)拆掉重來。Corda 的設計思路對 Hyperledger Fabric 有一定影響,也參與了對后者的建設。
(二)市場定位
市場定位反映了對自身應用方向的價值主張。五個聯盟鏈都是面向企業(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è)的,并且明確提出至少一定時間內不會考慮其他行業(yè)。
從設計理念的角度來講,選用 Hyperledger Fabric 時,應當善用其通道機制,通過通道機制降低業(yè)務或者環(huán)境的復雜度,但是要注意其跨通道能力的一些技術限制;FISCO BCOS 則應關注其對國內市場特殊需求的適應性設計,這些設計會帶來很多部署上的優(yōu)勢;Coco 和 EEA(Quorum)設計理念上都屬于基于現有協議的優(yōu)化加速機制,只是前者“博愛”,兼容的協議更多,后者“專一”,只針對以太坊;選用 Corda 則要先明確,它不是區(qū)塊鏈,不要帶著區(qū)塊鏈的價值假定去應用。
二、生態(tài)
大家常說建聯盟鏈就是建生態(tài),所以本文就比較下要幫著別人建生態(tài)的聯盟鏈,其自身的生態(tài)建的如何。生態(tài)考察主要包括管理方、社區(qū)和商業(yè)應用這三個方面。
(一)管理方
從管理方看,各家都是“實力派”。
Hyperledger Fabric 的管理方是 Linux 基金會,基金會管理下的 Hyperledger 其實是一個項目系列,包括 Cello、Swatooth、Burrow、Iroha 等;
FISCO BCOS 管理方是金鏈盟,金鏈盟是由深圳市金融科技協會、深圳前海微眾銀行、深證通、騰訊、華為、中科院等金融機構、科技企業(yè)、學術機構等組成的非營利性組織;(參考 https://www.fisco.com.cn/views/member.html)
Coco 的管理方是微軟;
EEA 是由芝加哥交易所、因特爾、ING、摩根大通和微軟等三十幾家創(chuàng)始成員組成的;
Corda 的管理方 R3 是以銀行為主的組織,至少已經吸收了 42 家金融巨頭,包括富國銀行、美國銀行、花旗銀行、德意志銀行、加拿大皇家銀行等,我國的平安、招行等也是其成員,不過 R3 麻煩不斷,也有些重量級成員已經退出。
(二)社區(qū)
現今科技發(fā)展比較流行開源,五大聯盟鏈也都是開源的,開源意味著要搞好社區(qū)建設,通過社區(qū)推廣和改進設計,凝聚更多智慧。
Hyperledger Fabric 已經打造了國際化的社區(qū),除了在 GitHub 上比較活躍外,大量的線下 Meetup、技術推廣活動也比較多,加上 IBM 的有力推動,使其有了大量的活躍用戶;
FISCO BCOS 社區(qū)建設初現規(guī)模,已有了千級成員、百級機構參與,除了 GitHub 外,還有官方微信群。FISCO BCOS 在不斷迭代源碼和文檔的基礎上,陸續(xù)推出了線上線下多種形式的系列運營活動,包括技術培訓、高校開課、線上線下講座沙龍、包括近期舉辦的金鏈盟中國區(qū)塊鏈大賽,影響力逐漸擴散。作為國內開源項目,相信未來發(fā)展上會有一定的“天時地利人和”;
Coco 社區(qū)不是很活躍;
Quorum 在 GitHub 上已經有了 551 個話題,有一定活躍度;
Corda 也不是很活躍。
(三)商業(yè)應用
商業(yè)應用是大家打造區(qū)塊鏈平臺的目的,也是一個聯盟鏈最重要的人氣所在。
Hyperledger Fabric 得益于 IBM 的大力推廣,加上技術框架比較成熟、推出較早,目前已有較多商業(yè)應用,據 IBM 披露有 400 多個落地項目,其中不乏馬士基、沃爾瑪、聯想、郵儲銀行這類大型客戶,也有統(tǒng)計稱,所有聯盟鏈項目中 Hyperledger Fabric 已占據半壁江山;
FISCO BCOS 從金融出發(fā),攜本土優(yōu)勢,落地項目也有數十個,包括微眾銀行的機構間對賬平臺、網易的競猜游戲,四方精創(chuàng)的供應鏈金融、城商行旅游金融聯盟的旅游金融、仲裁鏈、安妮股份的版權存證平臺、樂尋坊的人才活動平臺、鏈動時代的不動產登記系統(tǒng)等;
Coco 目前在項目方面乏善可陳,除了其白皮書中提到的 Mojix 將其供應鏈 Dapp 轉移到 Coco 平臺上之外,沒有更多公開的項目信息;
Quorum 上,比較有影響的應該算是 2017 年 10 月摩根大通開發(fā)的 IIN(Interbank Information Network)平臺,實現跨行信息交互,摩根大通、加拿大皇家銀行、澳大利亞 ANZ 銀行、新西蘭銀行等相繼加入該平臺;
Corda 也是同樣的境地,雷大雨小,耗費巨資,但是測試的多,落地的少。
從生態(tài)角度看,Hyperledger Fabric啟動的比較早,目前領先一步,但是 FISCO BCOS 奮起直追,已經初見規(guī)模,Coco、Quorum、Corda 還需要做很大努力。
三、效率
區(qū)塊鏈目前最差強人意的指標莫過于效率,雖然現在也有些人開始反思也許不應當苛求區(qū)塊鏈的效率,但是商業(yè)應用總是回避不了這個問題。效率方面,本文從共識協議、出塊速度、TPS 和存儲消耗這四點加以比對。
(一)共識協議
聯盟鏈為了提升交易速度,往往是先從共識協議“下手”。POW 和 POS 都無法滿足商業(yè)應用的需要,“挖礦”對聯盟鏈來講也是沒必要的,因此,各家都采用了替代的共識方案。
Hyperledger Fabric 在 0.6 版中應用了 PBFT,而在 1.0 版中放棄了 PBFT,轉而采用效率更高的 Kafka,支持單點和集群兩種方式,由 Kafka 直接給交易排序和出塊。
FISCO BCOS 支持并行計算的 PBFT 和標準 RAFT 兩種方式,前者是將通常的 PBFT 中議長節(jié)點和投票節(jié)點分步驗證的方式優(yōu)化為并發(fā)驗證,從而進一步提高共識效率;
Coco 支持 Paxos 和 Caesar 兩種協議。由于 Coco 節(jié)點是建立在基于硬件的 TEEs(可信執(zhí)行環(huán)境)上,因此就假定了節(jié)點充分可信,所以在 Paxos 中,leader 節(jié)點處理過的事務,follwer 節(jié)點簡單跟隨即可,這體現了其對公鏈假定的改變;Caesar 支持靈活的容錯模型,可以與 Paxos 共同使用以防范 leader 節(jié)點由于 TEEs 遭到破壞產生的安全威脅,該協議支持在 follwer 節(jié)點發(fā)現 leader 節(jié)點不可靠時將其驅逐,從而保證全網的安全;
Quorum 支持 Raft 和 Istanbul BFT 兩種協議。后者是由來自***的 AMIS 帳聯網公司在 2017 年研發(fā)的,可以大幅提升現有的以太坊架構的訊息交換效率;
Corda 比較特殊,它借鑒“礦工”角色設計了公證人模塊來提供交易公證(也即簽名)服務,整個網絡不依賴于任何特定的共識算法。但公證人是一個集群概念,一般使用 BFT 或 Raft 在公證人間達成一致,因此,公證人是存在效率問題,可能成為效率瓶頸;
與傳統(tǒng)分布式系統(tǒng)的共識設計相比,Hyperledger Fabric 并沒有什么改進,其共識方式與中心化共識的分布式數據庫一致;FISCO BCOS 支持 PBFT 共識算法,具備拜占庭容錯功能,也提供 RAFT 共識算法,適用于在節(jié)點可信度比較樂觀的場景;Coco 是通過 TEEs 提高節(jié)點可信性,以降低共識協議的復雜度;Quorum 也沒做多少調整,尤其是在引入 Istanbul BFT 之前;Corda 應該說是在傳統(tǒng)設計中引入了“礦工”理念。
(二)出塊速度
由于替換了共識機制,因此相比使用 POW 的比特幣、以太坊,聯盟鏈出塊速度要提高很多。Hyperledger Fabric、FISCO BCOS、Coco 都是秒級出塊;Quorum 則稱是毫秒級,默認設定是 50 毫秒,可以調整;Corda 沒有塊,所以也沒有出塊速度可以考量。
(三)TPS
TPS 相當于區(qū)塊鏈世界中的“網紅”,很多新出現的鏈都把 TPS 貼在“腦門”上。這五大聯盟鏈雖然 TPS 遠高于比特幣、以太坊,但還是比現有的分布式系統(tǒng)遜色:
Hyperledger Fabric 通常實測的 TPS 在 300-500 之間;
FISCO BCOS 實測單鏈可以達到 1000 以上。并且支持多鏈架構下的并行計算,可靈活擴展,理論上無上限。
Coco 官方數據是 1600;
Quorum 在 Istanbul BFT 協議下可以達到 400-800,Raft 下缺少數據;
Corda 由于其網絡結構的原因,沒有全局吞吐量可以衡量。
其實 TPS 方面如果沒有達到一個數量級以上的差異,是不用特殊關注的,因為在實際應用中,節(jié)點數量、網絡環(huán)境、硬件配置、軟件設計等都會對 TPS 產生影響,而現有的聯盟鏈在吞吐量上已經可以滿足相當一部分商業(yè)場景的要求,畢竟 Visa 在 2016 年每秒實際處理的交易也只有 1,667 筆,盡管 Visanet 據稱有每秒處理 56,000 筆交易的能力。
(四)存儲消耗
區(qū)塊鏈可以說是以“浪費”存儲來換取信任的技術。雖然存儲設備的價格越來越低廉,但這不代表“浪費”就沒毛病,存儲的快速膨脹一定會帶來效率、成本、可用性等諸多問題,甚至會要求改變設計架構,尤其是在大家都想追求“殺手級應用”的時候。
Hyperledger Fabric 方面,螞蟻金服倒是給出了一個詳細的計算公式,Fabric 數據容量估算(GB) = 每種業(yè)務每天平均交易筆數 x (Fabric 每筆交易基本開銷 + 每筆交易平均業(yè)務數據大小 KB x 2 ) x 業(yè)務 Channel 數量 x(365 x 年數 x(Peer 節(jié)點數量 x 2~1 之間 + Orderer 節(jié)點數量)+ Kafka Retention 天數 x Kafka Replica 數量) / (1024 x 1024),其計算示例中,在業(yè)務筆數每天 10 萬、4 節(jié)點、2 通道、單筆交易容量 1K 的情況(其他因素不詳細列出了)下,年存儲消耗 4619G;
FISCO BCOS 支持歷史數據快速追蹤,對接數據庫,實現分布式存儲,能夠支持海量服務的存儲需求,提高存儲訪問速率,節(jié)省存儲消耗。
Coco 由于設計上需要集成區(qū)塊鏈協議做底層,因此其消耗就取決于集成的區(qū)塊鏈協議,比如集成了 Hyperledger Fabric,那加上 Coco 自身的消耗,其存儲消耗量至少應該是比肩 Fabric 的;
Quorum 也沒有針對存儲的特殊優(yōu)化,至少應當按照大于以太坊消耗來估算;
Corda 倒是不同于其他聯盟鏈,因為它基本上就是傳統(tǒng)的分布式數據庫,而且沒有任何節(jié)點保存全局數據,每個節(jié)點都只保存跟自己有關的數據,所以,其存儲消耗應該與傳統(tǒng)分布式系統(tǒng)設計類似,沒有過多的冗余消耗。
綜上,從效率方面看,在 Hyperledger Fabric 之后推出或開源的其他聯盟鏈,效率高于它也屬正常。FISCO BCOS、Quorum 本就是面向金融的設計,所以效率要求自然要高于一開始就希望做通用框架 Hyperledger Fabric;Coco 設計理念上就是希望做成“加速器”的,它的效率理應高于任何它可以集成的區(qū)塊鏈;而 Corda 的設計模式決定了很難全面評價其效率,只能去單獨觀察每個實例。
四、擴展性
聯盟鏈的用戶都希望自己能發(fā)展成生態(tài)圈,比如海爾的供應鏈、中化的原油進出口貿易平臺、馬士基的全球交易平臺等,因此,擴展性是聯盟鏈設計必須要考慮的問題。這方面本文關注了節(jié)點數量擴展、共識擴展、單多鏈模式、加密算法擴展、第三方認證證書支持這五點。
(一)節(jié)點數量擴展
Hyperledger Fabric 在節(jié)點數量擴展方面是弱項,已落地項目多是個位數節(jié)點,但是可以支持較多的客戶端,算是一種彌補,不過節(jié)點數少其實意味著參與方的獨立性是會有所下降的;
FISCO BCOS 的分組模式支持根據節(jié)點數量進行水平擴容,因此理論上節(jié)點數量是不受限制的;
Coco 在這方面有些“投機取巧”,可支持的節(jié)點數量取決于其集成的區(qū)塊鏈協議,如果集成的是公鏈協議,在理論上也不受限制;
Quorum 是基于以太坊的,因此理論上也沒有限制;
Corda 同樣也沒有節(jié)點數限制。
雖然除了 Hyperledger Fabric,其他聯盟鏈似乎都沒有節(jié)點數量問題,但是節(jié)點數量其實還受共識協議的影響,BFT 類共識協議在節(jié)點數量超過一定水平時會出現吞吐量下降,設計時應當考慮這點。
(二)共識協議擴展
共識協議的擴展能力對聯盟鏈的穩(wěn)定性有很大影響,能否根據節(jié)點數量、網絡平衡情況、吞吐量進行調整決定了其網絡的擴展能力。
Hyperledger Fabric 雖然很早在設計上就稱其共識模塊可插拔,但是目前實際應用上看是不具備插拔能力的,每個版本僅支持一種共識模式;
FISCO BCOS 支持共識協議的插件式實現,允許切換共識機制;
Coco、Quorum 目前也具備了這種能力;
Corda 實現的應該說不是共識協議的直接插拔,而是公證人模塊的可插拔,可以通過切換公證人模塊來選擇公證人的共識模式。
(三)單多鏈模式
多鏈模式目前被很多新出現的鏈用于性能擴展,不過多鏈模式有利有弊,提升性能的同時也增加了設計復雜度。
Hyperledger Fabric 的通道機制其實可以算是早期的多鏈設計,但是通道在 Hyperledger Fabric 中并不是出于提升效率的目的設計的,而是為了滿足業(yè)務多樣性要求,以降低業(yè)務復雜度,因此,通道機制目前在性能擴展方面沒有顯著貢獻;
FISCO BCOS 是明確的并行計算多鏈設計,設計上要求開發(fā)者盡可能保持多鏈的同構特征以減少沖突,多鏈設計被直接應用在系統(tǒng)擴展方面;
Coco 的模式仍然取決于其集成的區(qū)塊鏈協議;
Quorum 是單鏈模式的,底層的性能擴展要跟隨以太坊的技術路線,可能要依賴以太坊的分片等技術進行擴展;
Corda 設計上是多網絡模式,沒有單多鏈的概念,但是可以建立兩個網絡節(jié)點的雙向連接,配置雙方信任的公正和認證機構進行網絡融合,融合算是其擴展的一種方式。
(四)加密算法擴展
對于國內的應用,加密算法的擴展也即國密替換是一個強烈需求,尤其是在金融領域。
Hyperledger Fabric 不支持國密替換,目前已有的應用凡實現國密的基本上是自行替換或者依賴第三方服務;
FISCO BCOS 是支持國密的;
Coco 未對加密算法的選擇有明確說明,因為這對 Coco 而言屬于底層,取決于其集成區(qū)塊鏈協議,但目前它所集成的協議中還沒有支持國密的;
Quorum、Corda 都沒有對國密的支持方案。
(五)第三方認證證書支持
這一點對國內的應用也很重要。
Hyperledger Fabric 目前不支持第三方 CA;
FISCO BCOS 支持第三方證書,支持證書的撤銷,支持多CA;
Coco 由于私鑰都保管在本地業(yè)務系統(tǒng)且允許自己生成,網絡上只存公鑰集,因此技術上看應該可以支持第三方 CA;
Quorum、Corda 都未見有此類支持。
綜上,Hyperledger Fabric 在擴展性上有一定的限制; FISCO BCOS 的可擴展性是很有優(yōu)勢的,尤其是面向國內應用時;Coco 擴展性取決于其集成的協議;Quorum 的擴展性與以太坊關系密切;Corda 除了在加密算法和第三方認證證書方面外,擴展的自由度有可能是最高的。
五、節(jié)點管理與權限管理
除了共識之外,聯盟鏈與公鏈的顯著區(qū)別當屬在節(jié)點和權限上的設計了。本文從節(jié)點類型、作用、成員準入控制、角色和權限管理這幾個方面比較下各聯盟鏈之間的差異。
(一)節(jié)點類型
Hyperledger Fabric 網絡中的節(jié)點主要分為排序節(jié)點、背書節(jié)點和記賬節(jié)點三類,實際應用中還可以加入只有同步賬本能力的二級節(jié)點;
FISCO BCOS 中包含核心節(jié)點、全節(jié)點、輕節(jié)點;
Coco 是一個可信驗證節(jié)點(VN)分布式網絡,也即,它只有一類節(jié)點就是 VN;
Quorum 中的節(jié)點是基于的以太坊 Golang 版本實現的,因此節(jié)點之間是對等的,沒有節(jié)點類型的區(qū)分,節(jié)點之間可以有白名單管理;
Corda 也不區(qū)分節(jié)點類型。
(二)節(jié)點作用
Hyperledger Fabric 網絡中背書節(jié)點負責提供簽名服務,經背書節(jié)點簽名且滿足簽名策略的交易提案會提交給排序節(jié)點進行交易排序和出塊,再由記賬節(jié)點完成賬本更新;
FISCO BCOS 中核心節(jié)點負責共識和記賬,共識節(jié)點參與記賬共識, 觀察節(jié)點同步賬本;
Coco、Quorum、Corda 中節(jié)點都是對等的。
(三)準入控制
Hyperledger Fabric 中有專門的 CA 模塊提供用戶信息注冊、數字證書發(fā)行、延期和吊銷等服務,成員管理采用 MSP 方式,同一個組織內的成員通過共用同一個 MSP 標識進行識別;
FISCO BCOS 中,成員加入網絡采用管理員認證的方式,提供合法有效的成員信息與CA證書,由管理員審核通過后,加入網絡;
Coco 網絡中的角色分為成員和參與者兩種,成員是網絡的集體管理者,擁有投票權,投票決定其他機構的加入或刪除;
Quorum 網絡中節(jié)點通過授權才能加入網絡,授權是集中式的,通過 Java 控制臺操作;
Corda 中節(jié)點也是需要授權加入的,節(jié)點選擇加入一個或多個網絡地圖,網絡地圖相當于網絡成員及其地址列表,節(jié)點只能與所在地圖中的成員進行交易。
(四)角色
Hyperledger Fabric 中雖然成員沒有明確的角色劃分,但是基于其運維或對應的節(jié)點的差異會自然形成不同的角色;
FISCO BCOS 網絡中的角色包含超級管理員、鏈或權限管理員、運維、交易、監(jiān)管等;
Coco 網絡中的角色分為成員和參與者兩種,但不是必須同時具有兩類參加者,也可以只有成員類型;
Quorum 網絡中沒有角色的區(qū)分;
Corda 網絡中的角色分為公證人和參與者兩種,公證人提供公證服務,參與者進行交易。
(五)權限管理
Hyperledger Fabric 中權限主要通過策略進行管理,策略實際上是成員通過節(jié)點進行某種操作,比如提交交易提案等,所需要滿足的簽名數量要求。
FISCO BCOS 權限管理采用系統(tǒng)合約的方式,并可以通過自定義合約的方式進行權限管理功能的擴展,權限管理模型為 ARPI(賬戶——角色——權限——接口)模式,多個賬戶可以對應同一個角色,角色有明確的權限列表,每個權限對應一個接口,接口指向智能合約,權限列表按照系統(tǒng)合約方式維護。業(yè)務中的權限管理則采用交易權限鏈的方式,一個交易相當于一組權限鏈,包含多個 Filter,交易處理是逐個 Filter 進行權限判斷,一個交易完成相當于一組 Filter 審核都通過。
Coco 網絡有成員負責治理,參與者是沒有投票權的,不能參加網絡管理。成員和參與者都可以擁有 VN。成員對網絡的管理通過共同維護一個可編程的網絡章程來進行,章程內容至少包括成員列表、VN 列表、代碼清單、TEE 清單和投票策略。
Quorum、Corda 沒有明顯的權限管理內容。
綜合比較,FISCO BCOS 的設計比較周全,也有一定的復雜性,但這也意味著它能夠支持更復雜的場景; Hyperledger Fabric 、Coco 帶有一定中心化因素;相較之下,Quorum、Corda 更接近公鏈思路。帶有中心化因素本就是聯盟鏈對其應用的商業(yè)環(huán)境的體現,這也無可厚非。
六、智能合約
為了提升效率,支持更加友好的設計,各聯盟鏈在智能合約上也出現了不同的發(fā)展思路。
Hyperledger Fabric 中的智能合約稱為“鏈碼”。鏈碼分為系統(tǒng)鏈碼和普通鏈碼,前者包括生命周期管理、配置管理等,屬于系統(tǒng)控制層面的鏈碼;普通鏈碼則是用于實現業(yè)務邏輯的鏈碼,智能合約開發(fā)通常指的就是這部分鏈碼。鏈碼的業(yè)務模型為“MCV-B”,即,在傳統(tǒng)的 MVC(模型、控制器、視圖)模式中嵌入 B(區(qū)塊鏈),強調鏈碼是業(yè)務邏輯的加強。鏈碼的生命周期包括打包、安裝、實例化、升級、停止和啟動,運行在 Docker 中,由背書節(jié)點進行調用,目前主要支持的是 Go 語言。Hyperledger Fabric 雖然提供了跨通道機制,允許跨通道調用鏈碼,但是跨通道調用只支持讀而不支持寫。
FISCO BCOS 中除了通常用于業(yè)務邏輯的智能合約外,將系統(tǒng)管理也智能合約化了,統(tǒng)稱為系統(tǒng)合約,包含系統(tǒng)代理、節(jié)點管理、機構證書、權限管理、全網配置五類。上述合約原則上由區(qū)塊鏈管理員在網絡啟動時部署,網絡運行期間的變更則需要在去全網所有節(jié)點許可的情況下由管理員操作。FISCO BCOS 主要支持 EVM 引擎的智能合約。
Coco 由于其節(jié)點運行在可信執(zhí)行環(huán)境中,因此,與其他聯盟鏈不同的是智能合約只需單個節(jié)點運行,不必多次驗證。更與眾不同的是,因為可以單點只運行一次,所以 Coco 的智能合約支持不確定交易。此外,允許智能合約直接連接外部可信數據源。
Quorum 是基于以太坊智能合約的,智能合約本身沒有特別之處,合約運行結果方面,節(jié)點只對公開交易和節(jié)點涉及的私有交易進行驗證,而不必驗證所有交易。
Corda 的智能合約設計思路也比較獨特,首先,它主張智能合約的業(yè)務數據和業(yè)務邏輯要能關聯到明確的法律依據上,這相當于要智能合約跟業(yè)務憑證之間具有強聯系;其次,Corda 主張純函數式設計,力推金融合約的標準化,提供小型類庫,以減少對低層次邏輯的重新開發(fā);再次,單純看智能合約的話,Corda 的智能合約是“碎片化”的小段程序,而且只能做為起流轉控制作用的“驗證程序”,做不到一般智能合約那種價值轉移功能,在 Corda 中,“交易”、“智能合約”和“流式架構”加起來才能與其他平臺的智能合約相當。
總結一下,Hyperledger Fabric 的鏈碼設計給了智能合約一個新的設計框架,這方面它是開創(chuàng)性的;FISCO BCOS 則將智能合約應用擴展到了系統(tǒng)管理方面;Coco 采取了改變公鏈設計假定的思路,不僅不對智能合約進行重復驗證,還支持不確定交易;Quorum 的智能合約基本沿襲公鏈思路;Corda 的思路也比較另類,但是智能合約本身卻更弱化了。
智能合約是隨著以太坊火起來的,成了區(qū)塊鏈的標志性技術,但其實目前的智能合約還遠不夠“智能”,這個名字容易引起誤解。以太坊創(chuàng)始人 Vitalik 最近在推特上發(fā)文稱對使用智能合約這個術語表示“十分遺憾”,應該使用更專業(yè)或更無聊的名字,比如,“持續(xù)的腳本”之類的東西,想來也有此意。
七、部署與運維友好性
聯盟鏈常被稱為是個“坑”,這個“坑”主要是在部署和運維方面。
(一)部署
Hyperledger Fabric 雖然已經是個成熟框架了,有良好的社區(qū)環(huán)境,市面上還有若干不錯的教材,但是部署方面依然讓很多新人不知就里,筆者所在的微信群里大部分時間都在交流部署問題而非設計問題;
FISCO BCOS提供一鍵安裝/step-by-step/docker等搭鏈方式,同時還未企業(yè)生產部署提供物料包的打包工具,簡化部署復雜度;
Coco 的部署特點是增加了一次對其他區(qū)塊鏈協議的集成,要先有底層區(qū)塊鏈協議,才能部署 Coco,這其實要設計人員對 Coco 和其集成的區(qū)塊鏈協議都有一定了解才好,學習成本較大,此外,Coco 需要部署 TEE 硬件設備來支持可信執(zhí)行環(huán)境構建,這是其他聯盟鏈通常不需要的,TEE 因此也成為一個安全隱患;
Quorum 需要在以太坊之上部署,依賴以太坊,與 Coco 相同,設計人員最好也要了解以太坊;
Corda 的部署目前缺乏實例來做比較。
(二)運維
Fabric 目前沒有提供多少支持工具,多數需要設計者自己開發(fā);
FISCO BCOS 提供了方便運維的合約命名服務,提供區(qū)塊鏈瀏覽器和監(jiān)控,并且有上帝模式用于處理節(jié)點崩潰問題,運維友好度有一定改善;
Coco 目前未見提供多少運維工具;
Quorum 有一些第三方支持工具;
Corda 與其他聯盟鏈相比,運維方面最大的特色莫過于支持受限形式的數據庫回滾。
聯盟鏈的部署和運維都有一定的學習曲線,其復雜度遠高于公鏈,一個新手部署一條以太坊要不了多少時間,但是運轉起一個聯盟鏈,還是需要打聽不少“小伙伴”的。
八、隱私保護
聯盟鏈有一個讓大家糾結的問題是,明明要上鏈一起共建生態(tài)、共享信息,卻紛紛要求隱私保護,要上鏈又不能隨意公開,不僅希望身份保密,還希望交易信息保密,這與公鏈信息公開、身份保密的設計理念有很大不同,但這是合理要求,尤其是在金融領域。本文從可見范圍、加密措施兩方面對各鏈加以比較。
(一)可見范圍
Hyperledger Fabric 的通道可以用來隔離數據,只有在同一通道內的節(jié)點才可以共享同一套賬本信息,而通過組織設計,基于 MSP 標識可以在同一通道內進一步控制數據可見范圍,1.2 版中加入了私有數據模式,允許指定的節(jié)點間共享信息,這比組織更加靈活;
FISCO BCOS 設計了 AMOP 協議,以提供機構間的點對點通信,通信信息屬于鏈下信息,不在全網共享,鏈上部分在引入中央對手方提供信用背書的情況下,數據也僅在交易方和中央對手方之間共享,多鏈方式也可用于數據隔離,必要時通過跨連互通;
Coco 支持兩個或多個交易者的機密交易,通過 TEE 控制可見性,但要求集成的區(qū)塊鏈協議最好也提供一定支持;
Quorum 區(qū)分公開數據和私有數據,私有數據只允許限定的交易方可見;
Corda 數據僅在交易方之間可見,節(jié)點之間提供一個交易依賴關系圖,數據根據需要發(fā)送,而不在全局廣播,任何參與方都無法見到包含全部數據的全局賬本。
(二)加密措施
Hyperledger Fabric 1.1 開始支持賬本數據加密,1.2 版引入私有數據后,設計上允許只給 Kafka 提供交易 Hash 用于排序而不向 Kafka 提供交易信息,以防排序節(jié)點泄露數據;
FISCO BCOS 允許采用高強度的加密數據信封進行保護,未參與交易的機構只能接收到密文,此外,建議對敏感數據采用脫敏上鏈、Hash 上鏈等方式進行保密處理;支持零知識證明,環(huán)簽名,群簽名,同態(tài)加密等隱私保護方法。
Coco 允許應用程序先進行數據加密再提交事務,公網數據采用加密傳播的方式,以對不受信任的 host 保密;
Quorum 有獨立的 Constellation 模塊,對私有事務的交易數據進行加密保護,還提供了獨立的零知識證明(ZSL)模塊以防止驗證用戶身份時發(fā)生信息泄露;
Corda 也使用 enclave 進行數據保護,并考慮使用安全硬件。
在隱私保護上,各鏈都下了很大力氣,這方面與其一較短長,不如考慮互相借鑒。
九、選型建議
通過以上八個方面,本文粗略比較了五大聯盟鏈的設計與差異,如果非要從技術角度給各家打個分、排個名,實在有些“霸王硬上弓”之嫌,各家原本思路和焦點就不同,都有自己的“小目標”,非要不管人家自己的想法去論個短長,有些不太“科學”,也不是應用的合理“姿勢”。各聯盟鏈畢竟都是為了解決實際問題、為了落地區(qū)塊鏈項目而設計的,所以,本文最后從大家都會關心的技術選型角度做個總結。
整體而言,Hyperledger Fabric 的綜合實力依然最強,推出時間早、框架完整且比較成熟,有國際化應用和國際化社區(qū)加持,案例和技術支持對于仍屬早期發(fā)展階段的區(qū)塊鏈而言非常重要,Hyperledger Fabric 在這方面可以說優(yōu)勢極大。但是,它也有些不能回避的問題,比如基礎研發(fā)進展緩慢,研發(fā)主體不明確,一些應用者關心的關鍵問題遲遲不見解決。隨著百度、阿里、騰訊、京東等一眾國內大廠的強勢加入,Hyperledger Fabric 的優(yōu)勢地位也會受到越來越多的挑戰(zhàn),對此,它急需合適的應對措施。
FISCO BCOS 應該說是本土化設計的代表,其在底層研究上的投入、關鍵技術上的改進、對國內需要的適應性調整、對社區(qū)建設和運維的重視,都有可圈點之處,平臺在各行業(yè)的通用性也在加強,隨著開源工作的推進和案例的不斷增加,其本土化優(yōu)勢會逐步顯現。在國家政策的鼓勵下,國內大廠如今紛紛高調殺入聯盟鏈市場,如果這些大廠真的“傾情”加入,那與 Hyperledger Fabric 相較,其開發(fā)主體、資金投入的穩(wěn)定性要更有優(yōu)勢,而且,大廠們基本自帶生態(tài)和流量,案例的增長、生態(tài)的發(fā)展也是可以預期的,是很多項目可以借力之處。
Coco、Quorum、Corda 都存在支持能力不足、缺乏有效案例的問題,雖然微軟目前在 Coco 以及其他基于 Azure 的區(qū)塊鏈平臺和應用上投入了一定力量,但是對國內應用者而言,仍顯不足。
因此,從技術選型角度來講,應用者,尤其是新入局的應用者,最好還是在 Hyperledger Fabric 這種影響廣泛的成熟框架或者 FISCO BCOS 這種有實力且能提供較強本土支持的平臺上做選擇,而在開發(fā)過程中借鑒下 Coco、Quorum、Corda 中的優(yōu)秀設計理念。
區(qū)塊鏈仍屬于技術的早期階段,這個階段必然要求應用者具備較強的學習能力,多做基礎研究,敢于對所選擇的技術平臺進行改良,積極與平臺提供商合作進行技術探索,區(qū)塊鏈還沒到像主流操作系統(tǒng)那樣可以“坐享其成”的階段,仍然需要所有參與者秉持“開源”思想,不辭辛苦、熱情奉獻、共同進步。
評論
查看更多