FISCO BCOS是國內企業主導研發、對外開源、安全可控的企業級金融聯盟鏈底層平台。由金融區塊鏈合作聯盟(深圳)(簡稱:金鍊盟)成立的開源工作組協作打造,工作組成員包括博彥科技、華為、深證通、神州信息、四方精創、騰訊、微眾銀行、亦筆科技和越秀金科等金鍊盟成員機構。
FISCO BCOS已於2017年正式對外開源。截止到2020年5月,匯聚了超1000家企業及機構、逾萬名社區成員參與共建共治,發展成為最大最活躍的國產開源聯盟鏈生態圈。
應用項目覆蓋文化版權、司法服務、政務服務、物聯網、金融、智慧社區等領域。如今,基於FISCO BCOS方便的全面的開發工具,已經成為一個更開放的開源生態。
FISCO BCOS設計思路
FISCO BCOS以聯盟鏈的實際需求為出發點,兼顧性能、安全、可運維性、易用性、可擴展性,支持多種SDK,並提供了可視化的中間件工具,大幅縮短建鏈、開發、部署應用的時間。此外,FISCO BCOS通過信通院可信區塊鏈評測功能、性能兩項評測,單鏈TPS可達兩萬。
FISCO BCOS在2.0中,提出“一體兩翼多引擎”架構,實現系統吞吐能力的橫向擴展,大幅提升性能,在安全性、可運維性、易用性、可擴展性上具備行業領先優勢。
一體指代群組架構,支持快速組建聯盟和建鏈,讓企業建鏈像建聊天群一樣便利。根據業務場景和業務關係,企業可選擇不同群組,形成多個不同賬本的數據共享和共識,從而快速豐富業務場景、擴大業務規模,且大幅簡化鏈的部署和運維成本。
兩翼指的是支持並行計算模型和分佈式存儲,二者為群組架構帶來更好的擴展性。前者改變了區塊中按交易順序串行執行的做法,基於DAG(有向無環圖)並行執行交易,大幅提升性能;後者支持企業(節點)將數據存儲在遠端分佈式系統中,克服了本地化數據存儲的諸多限制。
多引擎是一系列功能特性的總括,比如預編譯合約能夠突破EVM的性能瓶頸,實現高性能合約;控制台可以讓用戶快速掌握區塊鏈使用技巧等。
FISCO BCOS的核心部分
FISCO BCOS的核心模塊包括以下部分:
共識機制:可插拔的共識機制,支持PBFT、Raft和rPBFT共識算法,交易確認時延低、吞吐量高,並具有最終一致性。其中PBFT和rPBFT可解決拜占庭問題,安全性更高。
存儲:世界狀態的存儲從原來的MPT存儲結構轉為分佈式存儲,避免了世界狀態急劇膨脹導致性能下降的問題;引入可插拔的存儲引擎,支持LevelDB、RocksDB、MySQL等多種後端存儲,支持數據簡便快速擴容的同時,將計算與數據隔離,降低了節點故障對節點數據的影響。
網絡:支持網絡壓縮功能,並基於負載均衡的思想實現了良好的分佈式網絡分發機制,最大化降低帶寬開銷。
性能提升策略
為提升系統性能,FISCO BCOS從提升交易執行效率和並發兩個方面優化了交易執行,使得交易處理性能達到萬級以上。
基於C++的Precompiled合約:區塊鏈底層內置C++語言編寫的Precompiled合約,執行效率更高。
交易並行執行:基於DAG算法根據交易間互斥關係構建區塊內交易執行流,最大化並行執行區塊內的交易。
交易生命週期的異步並行處理:共識、同步、落盤等各個環節的異步化以及並行處理。
FISCO BCOS安全解決方案
考慮到聯盟鏈的高安全性需求,除了節點之間、節點與客戶端之間通信採用TLS安全協議外,FISCO BCOS還實現了一整套安全解決方案:
網絡准入機制:限制節點加入、退出聯盟鏈,可將指定群組的作惡節點從群組中刪除,保障了系統安全性。
黑白名單機制:每個群組僅可接收相應群組的消息,保證群組間網絡通信的隔離性;CA黑名單機制可及時與作惡節點斷開網絡連接,保障了系統安全。
權限管理機制:基於分佈式存儲權限控制機制,靈活、細粒度地控制外部賬戶部署合約和創建、插入、刪除和更新用戶表的權限。
支持國密算法:支持國密加密、簽名算法和國密通信協議。
落盤加密方案:支持加密節點落盤數據,保障鏈上數據的機密性。
密鑰管理方案:在落盤加密方案的基礎上,採用KeyManager服務管理節點密鑰,安全性更強。
同態加密、群環簽名:鏈上提供了同態加密、群環簽名接口,用於滿足更多的業務需求。
FISCO BCOS的開發部署和運維
開發部署工具
FISCO BCOS引入開發部署工具、交互式控制台、區塊鏈瀏覽器等工具來提升系統的易用性,大幅縮短建鏈、部署應用的時間。
包含:
基於JavaSDK的交互式的命令行工具console
區塊鏈瀏覽器
為了便於不同語言開發者快速開發應用,FISCO BCOS同時支持JavaSDK、Node.jsSDK、PythonSDK和GoSDK
運維工具
聯盟鏈系統中,區塊鏈的運維至關重要,FISCO BCOS提供了一整套運維部署工具,並引入了合約命名服務、數據歸檔和遷移、合約生命週期管理等工具來提昇運維效率。
運維部署工具:部署、管理和監控多機構多群組聯盟鏈的便捷工具,支持擴容節點、擴容新群組等多種操作。
合約命名服務:建立合約地址到合約名和合約版本的映射關係,方便調用者通過記憶簡單的合約名來實現對鏈上合約的調用。
數據歸檔、遷移和導出功能:提供數據導出組件,支持鏈上數據歸檔、遷移和導出,增加了鏈上數據的可維護性,降低了運維複雜度。
合約生命週期管理:鏈上提供合約生命週期管理功能,便於鏈管理員對鏈上合約進行管理。
社區開源開發工具
依托龐大的開源生態,社區內眾夥伴秉承“來自開發者,用於開發者”的共建理念,在FISCO BCOS底層平台之上,自主研發多個趁手開發工具並回饋給社區,從不同業務層面需求上降低區塊鏈應用開發難度和成本。以下為部分列舉:
區塊鏈中間件平台WeBASE:面向多種對象,如開發者、運營者,並根據不同的場景,包括開發、調試、部署、審計等,打造豐富的功能組件和實用工具,提供友好的、可視化的操作環境。
分佈式身份解決方案WeIdentity:基於區塊鏈的分佈式多中心的技術解決方案,提供分佈式實體身份標識及管理、可信數據交換協議等一系列的基礎層與應用接口,可實現實體對象(人或物)數據的安全授權與交換。
分佈式事件驅動架構WeEvent:實現了可信、可靠、高效的跨機構、跨平台事件通知機制。在不改變已有商業系統的開發語言、接入協議的情況下,實現跨機構、跨平台的事件通知與處理。
跨鏈協作方案WeCross:支持跨鏈事務交易,滿足跨鏈交易的原子性,對跨鏈進行治理,可支持多方協作管理,避免單點風險。
場景式隱私保護解決方案WeDPR:針對隱匿支付、匿名投票、匿名競拍和選擇性披露等應用方案,提供即時可用場景式隱私保護高效解決方案,助力各行業合法合規地探索數據相關業務。
區塊鏈數據治理組件解決方案:穩定、高效、安全的區塊鏈數據治理組件解決方案,分別從底層數據存儲層、智能合約數據解析層和應用層三個方面,提供了區塊鏈數據挖掘、裁剪、擴容、可信存儲、抽取、分析、審計、對賬、監管等數據治理方面的關鍵能力。具體組建包含WeBankBlockchain-Data數據治理通用組件:Data-Stash數據倉庫組件、Data-Export數據導出組件、Data-Reconcile數據對賬組件。
區塊鏈多方協作治理組件解決方案:可無縫適配FISCO BCOS的區塊鏈治理組件解決方案。首批開源的四個組件分別從私鑰丟失重置、合約權限細粒度管控、私鑰和證書的全生命週期管控等方面著手,提供了可部署的智能合約代碼、易於使用的SDK和可參考的落地實踐Demo等交付物。單獨的治理組建名稱為WeBankBlockchain-Governance多方治理協作組件:Governance-Account賬戶治理組件、Governance-Authority權限治理組件、Governance-Key私鑰管理組件、Governance-Cert證書管理組件。
區塊鏈應用開發組件解決方案:一套開放、輕量的開發組件集,覆蓋智能合約的開發、調試、應用開發等環節,包含了Solidity智能合約開發工具庫、智能合約Gradle編譯插件、應用開發腳手架。具體包含WeBankBlockchain-SmartDev區塊鏈應用開發工具:SmartDev-Contract智能合約庫組件、SmartDev-SCGP合約編譯插件、SmartDev-Scaffold應用開發腳手架。
ChainIDE:提供智能合約雲端開發工具,幫助開發者節約邊際成本,加速推送區塊鏈應用落地。
FISCO BCOS區塊鏈工具箱:與WeBase/Remix/VSCode/ChainIDE等IDE協同工作,提升開發體驗與開發效率。
AnsibleforFISCO BCOS自動化生成企業級部署文件:本項目由為區塊鏈開源項目FISCO-BCOS提供了自動化生成企業級配置文件的ansibleplaybook,可以在30秒內(除下載時間)生成配置,極大簡化了部署難度,避免了手工配置容易發生的錯誤。
其他工具還包含Truora可信預言機服務、Liquid智能合約編程語言軟件、WeEvent基於區塊鏈的分佈式事件驅動架構等。