(轉載)基於聯盟鏈區塊鏈的九個方面對比

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

由於對未來價值的“共識”,很多廠商推出了自己的聯盟鏈框架或平臺,本文選擇了 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 中的優秀設計理念。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章