Hyperledger Fabric和FISCO BCOS技術對比
1 起源
Hyperledger Fabric 是分散式賬本解決方案的平臺,該平臺以模組化架構為基礎,提供高度的機密性,靈活性和可擴充套件性。它旨在支援不同元件的可插拔實現,並適應整個經濟生態系統中存在的複雜性。Fabric 最早由 IBM 設計和開發,2015 年將其原始碼奉獻給了 Linux 基金會的Hyperledger 專案。Fabric最初即被定義為跨行業應用,更注重的是構建基於區塊鏈技術的通用框架。
FISCO BCOS 誕生於 2017 年,由金鍊盟推出,是標準的國產底層。金鍊盟是由深圳市金融科技協會、深圳前海微眾銀行、深證通等二十餘家金融機構和科技企業於 2016 年 5 月 31 日共同發起成立的非營利性組織。FISCO BCOS 最初的定位是設計為自主可控的、適用於金融行業的開源區塊鏈底層平臺,在設計監管介面時,FSICO BCOS更適合中國企業。隨著平臺的發展,也逐漸支援了更多金融領域以外的場景。FISCO BCOS 繼承自以太坊公鏈。 雖然在場景和使用上已經和公鏈完全不同,但從技術上來講,繼承了以太坊的虛擬機器,也就是繼承了以太坊龐大的生態。
Hyperledger Fabric | FISCO BCOS |
---|---|
繼承IBM分散式體系設計 | 繼承以太坊公鏈的技術 |
適合不同領域的通用框架 | 通用框架、更適合應用於金融領域 |
2 共識機制
Hyperledger Fabric 保證了區塊鏈中的分散式和不可篡改性的特點,省略了去中心化的共識機制(不支援拜占庭容錯)。 Fabric 架構中將參與節點分成了三種角色,即排序節點、背書節點和提交節點。對於每一筆交易,共識狀態的過程是由客戶端、背書節點、提交節點共同參與完成的;排序節點只負責交易順序的共識,而不負責狀態共識,在交易狀態共識和排序可以分別採用不同的策略。排序節點中的共識方式是 Kafka 或者 Raft,由於Kafka部署運維較為棘手,Fabric2.0後不再支援Kafka。目前正在開發Hotstuff去中心化的共識演算法的外掛,未來將支援拜占庭容錯。
FISCO BCOS作為一個分散式賬本,可以保證資料的不可篡改同時也可以使用了去中心化的共識機制拜占庭容錯,保證了 1/3 的容錯率。將鏈的參與方分成了共識節點、只讀節點和遊離節點,共識節點即是擁有記賬權利的參與方,只讀節點是擁有查閱所有資料的參與方。遊離節點是完成網路准入但沒有加入群組的節點,不參與共識和同步。
Hyperledger Fabric | FISCO BCOS |
---|---|
暫時不支援去中心化共識 | 支援去中心化共識 |
通過不同的角色實現共識,排序採用raft共識 | pbft/raft/rpbft |
背書節點、排序節點、提交節點三者共同參與共識 | 共識節點、只讀節點、遊離節點 |
3 資料隔離
Hyperledger Fabric區塊鏈網路的子鏈是按照“1個通道+ 1個賬本+ N個成員 ”的基本組成。通道是兩個或多個特定網路成員之間的通訊的私有“子網”,用於進行需要資料保密的交易。Fabric中建立一個通道相當於建立了一個子鏈,支援多鏈訊息傳遞。但是Fabric的“多鏈”並不完善,因為它不支援跨鏈路由、跨鏈事務,只能跨鏈讀取,更像是在一個單鏈上做的邏輯分割。實際開發中,通道通常被用於區分不同的業務,或者在複雜、冗長的業務流中區分不同的階段,跨鏈機制的建立,只能通過同一個節點加入不同的通道來實現。V1.2版本後提出了私有資料的概念,它允許在通道上定義的組織子集能夠背書、提交或查詢私有資料,而無需建立單獨的通道。為授權節點單獨建立隱私資料庫,隱私資料不會被暴露到排序節點上。
FISCO BCOS引入多群組架構,支援區塊鏈節點啟動多個群組,群組間交易處理、資料儲存、區塊共識相互隔離,保障區塊鏈系統隱私性的同時,降低了系統的運維複雜度。群組間資料隔離,每個群組獨立執行不同的共識演算法。多群組架構中群組間共享網路,通過網路准入和賬本白名單實現各賬本間網路訊息隔離。每個群組均執行一個獨立的賬本。
Hyperledger Fabric | FISCO BCOS |
---|---|
通道隔離 | 群組隔離 |
支援多通道,單通道私有資料隔離 | 支援多群組,群組內資料隔離 |
4 智慧合約
Fabric的合約通過ChainCode的方式以Docker的方式進行線下部署,通過交易進行啟用。ChainCode合約的部署相對較重,Fabric2.0版本後docker映象將會使用Alpine Linux,相比之前版本更加輕量。支援多種語言,開發者不需要學習新的語言,V2.0後鏈碼可以執行到非Docker自定義環境。
FISCO BCOS支援EVM和預編譯合約。藉助於Ethereum 智慧合約的完善的生態系統,在其基礎之上做了定製化,有豐富的合約編寫和測試工具。當前支援EVM的語言主要是Solidity,具有圖靈完備特性。為了解決Solidity執行效率低,BCOS提供了一個EthCall連線Solidity和C++的程式設計介面,複雜的業務可以使用C++編寫以提高效率。Solidity和EVM目前的功能還無法充分滿足各種複雜業務場景的需求,這也是其缺點之一。
Hyperledger Fabric | FISCO BCOS |
---|---|
Docker環境 | EVM環境 |
Go、Java、Nodejs | Solidity智慧合約語言 |
5 許可權管控
Hyperledger Fabric 中策略是基礎設施的管理機制。Fabric策略表示成員如何同意或者拒絕網路、通道或者智慧合約的變更。包括系統通道配置、使用者通道配置、許可權控制列表,智慧合約背書策略,使用者可以在啟動前由排序服務建立者建立初始規則和聯盟成員,確定網路的治理方式,也可以在任何時間及時修改治理策略。
FISCO BCOS V2.5版本後新增基於角色的許可權控制,分為治理方、運維方、監管方和業務方,對各個角色進行權責分離,角色互斥。防止角色既當“裁判員”又當“運動員”的情況。治理方負責區塊鏈治理;運維方負責區塊鏈運維,該角色由委員新增;業務方可以呼叫該合約的寫介面;監管方能夠獲取鏈執行中許可權變更記錄以及需要審計的資料。許可權控制的最小粒度為表,基於外部賬戶進行控制。
Hyperledger Fabric | FISCO BCOS |
---|---|
基於策略的許可權控制 | 基於角色的許可權控制,許可權控制最終體現在賬戶對錶的操作 |
6 儲存
Hyperledger Fabric的區塊儲存採用檔案方式儲存。可以方便對區塊進行查詢的追溯。Fabric的世界狀態儲存支援LevelDB和CouchDB儲存,世界狀態儲存時不支援歷史狀態的儲存,CouchDB儲存支援豐富的條件查詢和統計。
FISCO BCOS的區塊儲存採用MPT(默克爾字首樹)的方式儲存。對於世界狀態採用了兩種儲存模式:storage state和MPT state。MPT state支援RocksDB和External儲存,MPT儲存在儲存歷史狀態的同時,最大化減少儲存資料。Storage State 支援RocksDB、MySQL、External,使用storage state儲存時,犧牲了部分的可追溯性,但帶來了效能上的提升,同時能支援SQL語句的查詢和統計。因為世界狀態始終是可以通過交易進行還原,所以可以犧牲部分可追溯性而換取效能的提升和狀態查詢。
Hyperledger Fabric | FISCO BCOS |
---|---|
檔案方式儲存區塊 | MPT儲存區塊 |
LevelDB、CouchDB儲存狀態 | MySQL、RocksDB儲存狀態 |
7 效能
Hyperledger Fabric在節點數量擴充套件方面是弱項,已落地專案多是個位數節點,但是可以支援較多的客戶端。第三方測評在32核CPU,10節點的情況下,TPS在3400左右。由於環境節點數不同,測試結果僅供參考。
FISCO BCOS採用pbft共識時間複雜度是O(n*n),當超過20個節點以後效率不高。V2.3.0版本提出了rPBFT共識演算法,可以在安全性和效率之間動態調整引數,減少節點規模對共識演算法的影響,理論上節點數量是不受限制的。中國信通院可信區塊鏈測評,BCOS單鏈TPS超2萬。
Hyperledger Fabric | FISCO BCOS |
---|---|
支援少數節點 | 理論上節點不受限制 |
TPS3400(參考) | TPS20000(參考) |
8 跨鏈方案
Hyperledger Fabric的跨鏈方案,目前國內螞蟻區塊鏈、騰訊雲區塊鏈等廠商都在研究支援,這些廠商都開發了基於雲鏈結合的BaaS系統。跨鏈更多指的是Fabric框架之間的同構跨鏈,例如阿里雲BaaS上對互操作性做了全面支援。使用者可以將阿里雲BaaS上的Fabric組織和外部的Fabric組織連線成一個業務通道,共同治理業務網路,完成智慧合約的執行和共識。
FISCO BCOS的跨鏈方案是採用WeCross跨鏈路由,WeCross由微眾銀行自主研發並完全開源的分散式商業區塊鏈跨鏈協作平臺。採用雜湊時間鎖和兩階段事務提交方案,基於默克爾證明機制實現資料互信,通過開發不同聯盟鏈的STUB外掛,將不同聯盟鏈資料抽象成統一的資源,實現非侵入式跨鏈。目前支援FISCO BCOS和Hyperledger Fabric之間的異構跨鏈。
Hyperledger Fabric | FISCO BCOS |
---|---|
主流BaaS廠商支援 | WeCross跨鏈方案(開源) |
存在同構跨鏈方案 | 支援同構、異構跨鏈 |
9 部署支撐
Hyperledger Fabric作為底層框架,並沒有提供過多了中間元件來支撐應用層的開發,例如官方提供了Hyperledger Explorer區塊鏈瀏覽器用來查詢統計區塊資訊,BaaS平臺可以提供基於區塊鏈的搜尋查詢、交易提交、資料分析等一系列操作服務,用來幫助開發者更快地驗證自己的概念和模型,便於建立、部署、執行和監控區塊鏈。
微眾銀行也在其基礎上開源了中介軟體平臺WeBASE,以此作為連線底層和應用層的橋樑。而在WeBASE的再上一層,微眾銀行為其加入了實體身份標識與可信資料交換WeIdentity、訊息協作WeEvent等應用解決方案,並完全對外開源。這些協議讓開發者直接在地基上蓋房子,做DAPP,原理與BaaS很相似,降低開發門檻。此外BaaS平臺也在逐步支援BCOS框架,例如騰訊雲區塊鏈服務平臺(TBaaS)v3.1.0 服務平臺整合多引擎包含了FISCO BCOS引擎。
Hyperledger Fabric | FISCO BCOS |
---|---|
Hyperledger Explorer區塊鏈瀏覽器 | WeBASE、WeEvent、WeIdentity、WeCross等解決方案 |
通過Baas平臺支撐運維 | Baa平臺也再逐步支援 |
10 國密支援
Hyperledger Fabric官方目前還不支援國密演算法,同濟和第三方有支援國密的Patch和方案。主流存在修改Go語言庫和修改Fabric底層框架兩種國密支援方案。包括Fabric框架、SDK、Fabric-CA等需要全套國密支援,另外為了國內Fabric專案和社群的發展,根據最新Hyperledger Fabric中國工作組的計劃,未來會開發支援可插拔國密演算法的Fabric版本。
FISCO BCOS作為國產聯盟鏈底層平臺,支援國密。國密版FISCO BCOS將交易簽名驗籤、p2p網路連線、節點連線、資料落盤加密等底層模組的密碼學演算法均替換為國密演算法。SDK同樣支援國密演算法。支援國密SM1、SM2、SM3、SM4等全部標準,構建了全套監管解決方案,
Hyperledger Fabric | FISCO BCOS |
---|---|
中國工作組計劃支援國密,存在第三方支援方案 | 支援國密 |
11 開源協議
Hyperledger Fabric採用Apache-2.0開源協議,Apache Licence是對商業應用友好的許可。使用者也可以在需要的時候修改程式碼來滿足需要並作為開源或商業產品釋出/銷售。
FISCO BCOS採用GPL3.0開源協議,GPL協議的主要內容是隻要在一個軟體中使用(類庫引用,修改後的程式碼或者衍生程式碼)GPL 協議的產品,則該軟體產品必須也採用GPL協議,既必須也是開源和免費。由於GPL嚴格要求使用了GPL類庫的軟體產品必須使用GPL協議,對於使用GPL協議的開原始碼,商業軟體或者對程式碼有保密要求的部門就不適合整合/採用作為類庫和二次開發的基礎。商用不夠友好,
Hyperledger Fabric | FISCO BCOS |
---|---|
Apache-2.0 | GPL3.0 |
12 總結
Hyperledger Fabric作為先行者,已經在聯盟鏈方面具有了世界範圍的領先優勢,其架構比較成熟,也有數百個各類案例,其中包括馬士基、沃爾瑪等國際知名企業,國內招商銀行、民生銀行、中信銀行、京東金融、阿里雲Bass、騰訊TBass都是基於此開發的。
FISCO BCOS作為實力與Hyperledger Fabric並肩的國內專案,它是公認的國產聯盟鏈底層開發平臺的扛鼎之作。國家資訊中心牽頭的BSN(Block-chain-based Service Network)也支援FISCO BCOS框架,雖然是底層開發平臺,但微眾銀行也在其基礎上開源了多種配套工具和中介軟體等,在Github上有30多個程式碼倉庫,為FISCO BCOS的廣泛應用提供了有力支撐。2019年已公開區塊鏈發明專利217件,位列全球第五;從而發展成為國內最大的開源聯盟鏈社群。
相關文章
- Hyperledger Fabric(Hyperledger Fabric模型)模型
- 重磅釋出 | FISCO BCOS v3.0核心特性與技術實現
- Hyperledger Fabric 核心概念
- Meetup回顧 | FISCO BCOS v3.0 2022年技術路線圖解析圖解
- 【Hyperledger Fabric】Fabric 2.2 手動安裝
- Hyperledger Fabric on SAP Cloud PlatformCloudPlatform
- 金鍊盟基於BCOS平臺,重磅推出金融升級版—FISCO BCOS
- fabric sdk : org.hyperledger.fabric.sdk.exception.ProposalExceptionException
- Hyperledger Fabric 2.0 Alpha釋出了!
- 2.02 hyperledger fabric入門
- 2.04 hyperledger fabric共識排序排序
- 容器技術和虛擬機器技術的對比虛擬機
- FISCO BCOS | 搭建第一個區塊鏈網路區塊鏈
- 公告 | FISCO BCOS v3.3.0釋出,新增塊內分片技術,單鏈效能突破10萬TPS
- HyperLedger Fabric和區塊鏈是什麼關係?區塊鏈
- Hyperledger Fabric組織的動態新增和刪除
- Hyperledger Fabric節點的動態新增和刪除
- 1-Hyperledger Fabric概念詳解
- Hyperledger Fabric部署的坑(更新中)
- 2.03 hyperledger fabric系統架構架構
- 2.05 hyperledger fabric賬本儲存
- 2.06 hyperledger fabric智慧合約
- Hyperledger Fabric命令詳解之 up
- Hyperledger fabric 鏈碼篇GO(四)Go
- Hyperledger Fabric部署與測試(Ubuntu)Ubuntu
- FISCO BCOS | 開發第一個區塊鏈應用區塊鏈
- Hyperledger Fabric 使用 CouchDB 和複雜智慧合約開發
- 重磅釋出《2021 FISCO BCOS產業應用白皮書》產業
- Spring Boot 整合 Fisco Bcos(部署、呼叫區塊鏈合約)Spring Boot區塊鏈
- FISCO BCOS | 構建第一個區塊鏈應用程式區塊鏈
- Oracle、NoSQL和NewSQL 資料庫技術對比OracleSQL資料庫
- 技術原理:Python中range和xrange對比Python
- HyperLedger/Fabric SDK使用Docker容器映象快Docker
- 在Ubuntu上部署Hyperledger Fabric環境Ubuntu
- Hyperledger Fabric 2.x 環境搭建
- Hyperledger Fabric系統鏈碼介紹
- Hyperledger Fabric開發(二):建立網路
- HyperLedger Fabric 1.0的Transaction處理流程