區(qū)塊鏈聯(lián)盟鏈應(yīng)用群組架構(gòu)FISCO BCOS 2.0介紹
FISCO BCOS 2.0 新增了很多特性,統(tǒng)稱為“一體兩翼多引擎”,借以表述技術(shù)進(jìn)步產(chǎn)生燃動(dòng)力,助推聯(lián)盟鏈應(yīng)用落地。
我們認(rèn)為,F(xiàn)ISCO BCOS 2.0并不是FISCO BCOS 1.0的簡(jiǎn)單升級(jí),它在擴(kuò)展性、易用性、隱私隔離等方面開(kāi)辟了不少新思路。比如,一體指代的群組架構(gòu),使得企業(yè)間建立多方協(xié)作的商業(yè)關(guān)系像拉群聊天一樣靈活輕松,有助于企業(yè)快速地豐富業(yè)務(wù)場(chǎng)景和擴(kuò)大業(yè)務(wù)規(guī)模,而系統(tǒng)的運(yùn)維復(fù)雜度和管理成本也線性下降。
FISCO BCOS 2.0的新特性
一體兩翼多引擎全貌:
群組架構(gòu)
群組架構(gòu)是FISCO BCOS 2.0眾多新特性中的主線,創(chuàng)造靈感來(lái)源于人人都熟悉的群聊模式——群的建立非常靈活,幾個(gè)人就可以快速拉個(gè)主題群進(jìn)行交流。同一個(gè)人可以參與到自己感興趣的多個(gè)群里,并行地收發(fā)信息?,F(xiàn)有的群也可以繼續(xù)增加成員。
· 采用群組架構(gòu)的網(wǎng)絡(luò)中,根據(jù)業(yè)務(wù)場(chǎng)景的不同,可存在多個(gè)不同的賬本,區(qū)塊鏈節(jié)點(diǎn)可以根據(jù)業(yè)務(wù)關(guān)系選擇群組加入,參與到對(duì)應(yīng)賬本的數(shù)據(jù)共享和共識(shí)過(guò)程中。該架構(gòu)的特點(diǎn)是:
· 各群組獨(dú)立執(zhí)行共識(shí)流程,由群組內(nèi)參與者決定如何進(jìn)行共識(shí),一個(gè)群組內(nèi)的共識(shí)不受其他群組影響,各群組擁有獨(dú)立的賬本,維護(hù)自己的交易事務(wù)和數(shù)據(jù),使得各群組之間解除耦合獨(dú)立運(yùn)作,可以達(dá)成更好的隱私隔離;
機(jī)構(gòu)的節(jié)點(diǎn)只需部署一次,通過(guò)群組設(shè)置即可參與到不同的多方協(xié)作業(yè)務(wù)中,或?qū)⒁粋€(gè)業(yè)務(wù)按用戶、時(shí)間等維度分到各群組,群組架構(gòu)可快速地平行擴(kuò)展,在擴(kuò)大了業(yè)務(wù)規(guī)模同時(shí),極大簡(jiǎn)化了運(yùn)維復(fù)雜度,降低管理成本。
支持分布式存儲(chǔ)
FISCO BCOS 2.0新增了對(duì)分布式數(shù)據(jù)存儲(chǔ)的支持,節(jié)點(diǎn)可將數(shù)據(jù)存儲(chǔ)在遠(yuǎn)端分布式系統(tǒng)中,克服了本地化數(shù)據(jù)存儲(chǔ)的諸多限制。該方案有以下優(yōu)點(diǎn):
· 支持多種存儲(chǔ)引擎,選用高可用的分布式存儲(chǔ)系統(tǒng),可以支持?jǐn)?shù)據(jù)簡(jiǎn)便快速地?cái)U(kuò)容;
· 將計(jì)算和數(shù)據(jù)隔離,節(jié)點(diǎn)故障不會(huì)導(dǎo)致數(shù)據(jù)異常;
· 數(shù)據(jù)在遠(yuǎn)端存儲(chǔ),數(shù)據(jù)可以在更安全的隔離區(qū)存儲(chǔ),這在很多場(chǎng)景中非常有意義;
· 分布式存儲(chǔ)不僅支持Key-Value形式,還支持SQL方式,使得業(yè)務(wù)開(kāi)發(fā)更為簡(jiǎn)便;
· 世界狀態(tài)的存儲(chǔ)從原來(lái)的MPT存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)為分布式存儲(chǔ),避免了世界狀態(tài)急劇膨脹導(dǎo)致性能下降的問(wèn)題;
· 優(yōu)化了數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu),更節(jié)約存儲(chǔ)空間。
并行計(jì)算模型
過(guò)去將交易打包成一個(gè)區(qū)塊,在一個(gè)區(qū)塊中交易順序串行執(zhí)行的做法,在FISCO BCOS 2.0中,會(huì)通過(guò)一套并行交易處理模型實(shí)現(xiàn)自定義交易互斥變量。 區(qū)塊執(zhí)行過(guò)程中,系統(tǒng)將會(huì)根據(jù)交易互斥變量自動(dòng)構(gòu)建交易依賴關(guān)系圖——DAG,基于DAG并行執(zhí)行交易,最好情況下性能可提升數(shù)倍(取決于CPU核數(shù))。
預(yù)編譯合約
FISCO BCOS 2.0提供預(yù)編譯合約框架,支持采用C++編寫(xiě)合約,其優(yōu)勢(shì)是合約調(diào)用響應(yīng)更快,運(yùn)行速度更高,消耗資源更少,更易于并行計(jì)算,極大提升整個(gè)系統(tǒng)的效率。FISCO BCOS內(nèi)置了多個(gè)系統(tǒng)級(jí)的合約,提供準(zhǔn)入控制、權(quán)限管理、系統(tǒng)配置、CRUD式的數(shù)據(jù)存取等功能,這些功能天然集成在底層平臺(tái)里,無(wú)需手動(dòng)部署。
FISCO BCOS提供標(biāo)準(zhǔn)化接口和示例,幫助用戶進(jìn)行二次開(kāi)發(fā),便于用戶編寫(xiě)高性能的業(yè)務(wù)合約,并方便地部署到FISCO BCOS里運(yùn)行。預(yù)編譯合約框架兼容EVM引擎,形成了“雙引擎”架構(gòu),熟悉EVM引擎的用戶可以選擇將Solidity合約和預(yù)編譯合約結(jié)合,在滿足業(yè)務(wù)邏輯的同時(shí)獲得巨大的效率提升。
CRUD合約
FISCO BCOS 2.0新增符合CRUD接口的合約接口規(guī)范,簡(jiǎn)化了將主流的面向SQL設(shè)計(jì)的商業(yè)應(yīng)用遷移到區(qū)塊鏈上的成本。其好處顯而易見(jiàn):
· 與傳統(tǒng)業(yè)務(wù)開(kāi)發(fā)模式類似,降低了合約開(kāi)發(fā)學(xué)習(xí)成本;
· 合約只需關(guān)心核心邏輯,存儲(chǔ)與計(jì)算分離,方便合約升級(jí);
· CRUD底層邏輯基于預(yù)編譯合約實(shí)現(xiàn),數(shù)據(jù)存儲(chǔ)采用分布式存儲(chǔ),效率更高。
控制臺(tái)
FISCO BCOS 2.0新增控制臺(tái),作為FISCO BCOS 2.0的交互式客戶端工具。
控制臺(tái)安裝簡(jiǎn)單便捷,簡(jiǎn)單配置后即可和鏈節(jié)點(diǎn)進(jìn)行通信,擁有豐富的命令和良好的交互體驗(yàn),用戶可以通過(guò)控制臺(tái)查詢區(qū)塊鏈狀態(tài)、讀取和修改配置、管理區(qū)塊鏈節(jié)點(diǎn)、部署并調(diào)用合約??刂婆_(tái)給用戶管理、開(kāi)發(fā)、運(yùn)維區(qū)塊鏈帶來(lái)了巨大的便利,降低了操作繁瑣性和使用門(mén)檻。
虛擬機(jī)
FISCO BCOS 2.0引入了最新的以太坊虛擬機(jī)版本,支持Solidity 0.5版本。同時(shí),引入了EVMC擴(kuò)展框架,支持?jǐn)U展不同虛擬機(jī)引擎。底層內(nèi)部集成支持interpreter虛擬機(jī),未來(lái)可擴(kuò)展支持WASM/JIT等虛擬機(jī)。
其他特性
除上述所列之外,F(xiàn)ISCO BCOS 2.0持續(xù)在網(wǎng)絡(luò)傳輸模型、計(jì)算存儲(chǔ)流程等方面進(jìn)行優(yōu)化,對(duì)性能提升提供巨大幫助。在架構(gòu)方面,從存儲(chǔ)、網(wǎng)絡(luò)、計(jì)算三個(gè)角度,圍繞高可用性和高易用性進(jìn)行持續(xù)升級(jí),并基于模塊化、分層、可插拔等設(shè)計(jì)原則,持續(xù)對(duì)核心模塊進(jìn)行重塑升級(jí),保證系統(tǒng)健壯性。