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