區塊鏈 Blockchain – 比較 FISCO BCOS 與 Hyperledger Fabric

/ 0 評 / 6

"Stop Trying Reinvent the Wheel"(不要重覆造輪子) 這句說話相信從事軟件開發的朋友們一定相當熟悉,在軟件開發中,有時為了實現一個概念,未必要重頭開發,而可以直接使用現有的一些框架(Framework)或開源庫(Library),快速構建,實現需要完成的效果。

同樣地,要實現區塊鏈的應用(聯盟鏈或私有鏈),亦不需要自行由底層重新編寫區塊鏈,可以直接使用開源的框架,例如 Hyperledger Fabric、FISCO BCOS,如果出於業務或安全上的考量,更可以考慮直接移植現有較成熟的以太坊的代碼,基於這些代碼再進行修改成適合自身的區塊鏈系統,而 FISCO BCOS 起初就是基於以太坊再進行深度重構開發。

而且目前應用區塊鏈技術最多、較成熟的都是在金融行業上的應用,由於金融行業對於交易速度、數據安全等方面的要求較高,所以一些解決行業特點的區塊鏈框架也應運而生。

Hyperledger Fabric

Hyperledger Fabric (以下簡稱"Fabric")是一個企業區塊鏈通用框架,主要為採用模塊化架構的區塊鏈應用及解決方案提供開發基礎,追求模塊化(Modular)、擴展化(Scalable)、安全化(Secure)。Fabric 可以令共識機制(Consensus)、會員服務(Membership Services)等"組件"可被即插即用(Plug-and-Play)。而在 Fabric 中的智能合約則可以透過"Chaincode"實現。而對開發者的區塊鏈的方面知識要求不高,大部份的工作都已經由SDK負責完成。

詳細介紹可參閱我早前的文章:區塊鏈 Blockchain – Hyperledger Fabric

FISCO BCOS

FISCO BCOS 官方 Github

根據官方介紹,FISCO BCOS 起源於2016年中,中國國內的金融區塊鏈合作聯盟(簡稱金鏈盟)當中由深圳金融科技協會、騰訊、華為、深圳前海微眾銀行、京東金融、深證通等二十多間金融機構和科技企業共同發起成立,成立後著手研發為金融行業深度定制的開源區塊鏈框架 。

FISCO BCOS 是基於以太坊進行深度重構開發的聯盟鏈框架,並且將公鏈以太坊的共識機制改為 PBFT/RAFT,並提供系統合約實現節點管理,而且 FISCO BCOS 將以太坊的 Ether 去除,達至無代幣 Token 的區塊鏈,在生成區塊時不會發行和獎勵代幣,所有資產都是通過智能合約實現,而智能合約和交易,都是基於以太坊。而且為了解決性能和安全問題,FISCO BCOS 對 Global Trie 進行了改造,使用多鏈並行技術解決熱點帳號問題,並且提供一種名為 AMOP 的 P2P專用通信協議。

接下來簡述一下 FISCO BCOS(以下簡稱"BCOS")中幾個特性:

1. 多鏈並行

BCOS 支持多鏈和跨鏈技術,而且可以並行計算,這樣一來可以除了能把不同業務之間的數據相互隔離,有需要就透過跨鏈技術通訊,大大提高整個系統的性能。

多鏈:即一個節點可以運行多條鏈,可以理解為每條鏈都有獨立的賬本,不同鏈之間相互獨立,並行執行,互不影響。

跨鏈:即可在多條鏈之間相互通信,但不同業務之間產生聯繫,產生價值。

2. AMOP 鏈上信使協議

為了解決金融機構的內外部網絡環境構結複雜,從而導致機構之間直接通知的難度增大,速度慢的情況。BCOS 提供了一種專用的 P2P專用通信協議 AMOP 鏈上信使協議 (Advanced Messenger On-chain Protocol),主要是用以提高在鏈內跨機構節點之間的通信效率,並在鏈上和鏈下提供交換接口及容錯機制,提供點對點的快速直接通信,繼而可以實現更多複雜的應用場景。

可以看出 BCOS 希望透過 AMOP 協議,突破鏈內的機構之間因網絡環境和系統架構不同的難題,讓機構彼此之間可以直接溝通,而不需要每次的交易協商都上鏈,而是在雙方直接協商得出結果後,才發起交易,寫到鏈上確認。這樣一來可將重要且需要鏈內所有機構共同記錄的交易才放在鏈上,減輕壓力,提高效率,並且兼容原有業務。

3. 群簽名和環簽名

在安全加密方面,BCOS 實現了群簽名和環簽名鏈上驗證的功能:

群簽名 - 群簽名鏈上驗證簽名時,機構內的成員僅可以獲取簽名者所屬的群組(某個公司或部門),但無法得知簽名者的身份,這可以保障了成員的匿名性和簽名的不可篡改性,但是,監管方面仍可以通過可信的第三方追踪簽名者的信息;

環簽名 - 有些使用場景會使用到環簽名,比如匿名投票。機構內的成員可以對投票信息進行環簽名,然後通過可信機構將簽名信息和投票結果寫到鏈上,而其他人如果要在鏈上鏈證簽名的時候,只可以獲取發佈投票到鏈上的機構,但無法得到投票者的身份信息,這樣一來保障了投票者的身份匿名,而且與群簽名不一樣的是,環簽名可以徹底隱藏簽名者的身份。任何人都不法追踪到簽名者的身份。

4. 權限模型 ARPI

BCOS 為了對聯盟鏈的準入許可、安全性、隱私等多方面的要求,強調了"權限"和"控制"的理念,並引入了CA證書以用之有效管理用戶和分配權限,提出ARPI(Account—Role—Permission—Interface)的權限控制模型,亦即帳號-角色-權限-接口。在這個模型中,賬號和角色的對應關係為N:1,即一個賬號(個人或組織)只能對應到一個角色,但一個角色可以包含零個到多個賬號。在實際操作中,同一角色可能有多個賬號,但每個賬號使用獨立且唯一的公私鑰對,發起交易時使用其私鑰進行簽名,接收方可通過公鑰驗簽知道交易具體是由哪個賬號發出,實現交易的可控及後續監管的追溯。角色與權限的對應關係為N:M,即一個角色擁有多個權限的集合,同時一個權限也能被多個角色所擁有。ARPI模型中權限粒度將細化到合約的接口級別,即一角色下的賬號如擁有某個權限,則能調用該權限下智能合約的一個或多個接口。

比較社區成熟度

Fabric 和 BCOS 兩個都為開源項目,眾所周知,活躍的社區生態對於開源項目來說是非常重要,能夠確保項目能夠可持續地健康成長。

對於 Fabric 而言,已是在區塊鏈領域內深耕多年,非常成熟的開源項目,而且具有一個國際化且活躍的開源社區,加上項目目前已有過千個成員和兩百多家企業,不論線上或線下的活動也經常開展。

截止撰寫本文(2019年5月),Hyperledger項目的企業已達至 258 個,包括金融、制造、科技等各行業,除了大量國際知名的企業外,當中甚至不乏大量中國企業,包括百度、小米、阿里巴巴、華為、H3C、華大基因、招商銀行等等。

Hyperledger 成員清單

而 BCOS 作為後起之後,目前亦已有過百家中國企業參與。首批成員包括:博彥科技、華為、深證通、神州數碼、四方精創、騰訊、微眾銀行、越秀金科。 根據官方2018年年度報告,金鏈盟的成員已覆蓋32座城市,在原有的銀行、基金、證券、保險、地方股權交易所、科技公司、行業協會的基礎上,加入多所高校及研究機構,合共117家機構,8個行業,成員全部均來自中國。

FISCO BCOS 成員清單

在社區生態方面,Fabric 比起 BCOS 的國際化程度較大。

跨鏈-通道和多鏈

在 Fabric 中一個重要的概念就是 通道 Channel,通道是 Orderers 所提供的服務,每個通道相當於一個業務載體,就始訂閱消息一樣,只要加入通道的節點彼此間都可以共享信息。這就相當於一種信息隔離的做法,而 Fabric 中每個通道都相當於一條鏈,如要跨鏈亦即是跨通道,不過,Fabric的跨鏈並不完善,因為不支持跨鏈路由、跨鏈事務,只能夠讀取,是一種純料邏輯上的隔離,用於區分不同的業務邏輯。

而 BCOS 從設計之初就是明確地確立多鏈的設計,同時在官方文檔中也建議按不同的業務邏輯拆開不同的鏈,與 Fabric 不同的是,BCOS 採用多鏈之後,它支持跨鏈路由、亦支付跨鏈事務讀寫,而這些跨鏈操作都是基於網絡址址完成,相比之下,在擴容和跨鏈上會較 Fabric 做得較好,一般而言,採用多鏈的效率會高於單鏈,而在實在測試中,BCOS 的交易吞吐量亦高於 Fabric。

不論是公鏈、聯盟鏈,交易性能、跨鏈技術都是大家熱切關注的問題。Fabric 和 BCOS 各自都有一些技術去解決,但當然各自也有優缺點,Fabric 的通道實現較簡單,支持跨鏈讀取,但不支持跨鏈路由、跨鏈事務,另一方面,BCOS 設計之初已確立多鏈設計,雖然支持跨鏈操作,但設計上的複雜度相對而言較高。

智能合約更新

Fabric 和 BCOS 實現智能合約升級或部署新的智能合約時,方式有所不同。

Fabric 由於是使用 Docker,當實現智能合約升級或部署新的智能合約,所有鏈內的機構節點全部都要人手安裝部署一次,所以每次變動時,都需要人手確認,當然,對於聯盟鏈內的機構來說,為免業務出錯導致損失,這可說是一種保險方式,但相對而言,智能合約的靈活性就會較差。

BCOS 由於是基於以太坊二次開發的平台,同樣地是使用EVM沙箱機制來運行智能合約,當部署新的智能合約上鏈後,大家也可以直接使用,而不需要人手操作。而且,BCOS 的智能合約的語言也是 Solidity,在移植以太坊上已被驗證的智能合約,可說是相當方便,鑒於過去以太坊上對 Solidity 的效率,BCOS 也提供了一個橋接 Solidity 和 C++ 的接口,如對效率有很高要求的可以使用 C++ 編寫,提高效率。

總結

以上是 Fabric 和 BCOS 的一些特性、社區生態的基本介紹和對比。

簡單來說,如果鏈內的機構數量相對較穩定,合作模式較少變動,而如在線下達成共識容易,可以選擇成熟的 Fabric。如果鏈內的機構數量相對較多,合作模式變動較頻密,尤其業務是金融行業且使用環境在中國國內的時候,FISCO BCOS 是一個非常適合的選擇。

Fabric 目前已發展得相當成熟,國內外不少大型知識企業和機構都在使用,定位為國際化,具有領先的先發優勢。而FISCO BCOS 作為一個後起之秀,亦正急起直追,國內也有不少大型企業和機構加入使用,對 FISCO BCOS 作為一個自主研發國產的區塊鏈底層框架而言,定位相當清晰,除了做了很多符合中國國內需要的獨特設計外,它也支持國密(國產密碼學標準),這對在國內的金融行業來說非常重要,而要在 Fabric 中更改加解法算法至國密不是一件簡單的事。所以說 FISCO BCOS 是一個專為中國打造的區塊鏈框架也不為過,由於金融行業目前是區塊鏈技術應用最多的領域,在戰略上它的出現也是可以理解的。

但我個人比較在意的一點是,FISCO BCOS 雖然是基於以太坊深度開發,修改及增強了很多功能,但是在權限控制方面顯然是有點問題,在 FISCO BCOS 的權限上存在 鏈超級管理者(上帝帳號)的角色,它具有鏈上所有權限,例如可以給用戶分配角色,分配權限,分配操作權限,而系統合約的執行也是需要由上帝帳號執行。

對於區塊鏈設計的原意,去中心化來說,FISCO BCOS 更像是一個中心化的底層區塊鏈框架,有點偏離了區塊鏈的初衷。如我上面所述,並沒有絕對的優劣之分,只有最適合自身業務的要求而所選用的技術,在目前來說,在區塊鏈技術領域內,"不可能三角"依然存在,未必能達到面面皆優,為了提高性能和安全性,而放棄去中心,是一種選擇。

當然,區塊鏈技術的應用不止於金融領域的應用,為了加速各個行業區塊鏈技術的推廣,快加落地實際應用,使用現有框架當然是一種較優的做法。但是,在使用這些區塊鏈框架前,要對這個框架的底層起碼要心裡有數,知道其特性和一些特殊的設計,在為企業部署區塊鏈業務時才能得心應手。

Hyperledger Fabric 和 FISCO BCOS 各有其特性和優缺點,並沒有絕對的優劣之分,而是要按照自身業務的要求而選擇適用的框架。

參考文章:

FISCO BCOS 官方文檔

淺談聯盟鏈以及對 Hyperledger、 Corda、FISCO BCOS 的比較

起「底」聯盟鏈:FISCO BCOS 與 Fabric 之較

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *