微眾銀行區(qū)塊鏈開源首批多方協(xié)作治理組件,開啟治理實踐新起點
區(qū)塊鏈歷經(jīng)10余年的發(fā)展,基礎(chǔ)技術(shù)框架逐漸完善,鏈上承載的業(yè)務越來越豐富,參與方越來越多。多方協(xié)作能否順暢進行、業(yè)務摩擦能否得到有效解決、既往治理策略和實踐能否滿足日后高速發(fā)展的需求……行業(yè)關(guān)注的重點逐步聚焦到這些更具挑戰(zhàn)性的難題上。
2021年1月,微眾銀行區(qū)塊鏈在多年技術(shù)研究和應用實踐的基礎(chǔ)上,重磅發(fā)布了《面向區(qū)塊鏈的多方協(xié)作治理框架》白皮書,即MCGF(Multilateral Collaborative Governance Framework)。
作為區(qū)塊鏈治理的參考架構(gòu),MCGF全面覆蓋區(qū)塊鏈治理的設(shè)計規(guī)范、參與角色、核心系統(tǒng)架構(gòu)、功能流程及應用場景等領(lǐng)域。
其開放式的框架可適配多種異構(gòu)區(qū)塊鏈底層網(wǎng)絡,并結(jié)合管理和技術(shù)策略,統(tǒng)籌鏈上治理和鏈下治理。在系統(tǒng)層面,MCGF通過各類工具、組件和服務等方式支撐治理。最后,MCGF為各參與方設(shè)計可視化、交互式、多終端的感知和操作方式,提供優(yōu)良的用戶體驗。
區(qū)塊鏈本身追求多方協(xié)作,其體系和技術(shù)的發(fā)展落地都離不開社區(qū)的支持。我們秉持一貫的開源、開放的理念,誠邀各行業(yè)伙伴攜手共建區(qū)塊鏈治理體系,共同探索區(qū)塊鏈治理之道。
我們將逐步把MCGF的內(nèi)容一一開源,以饗社區(qū)。本次開源列表包含一套開箱即可用的區(qū)塊鏈治理通用組件(WeBankBlockchain-Governance)。這些組件是MCGF框架的實做基礎(chǔ)和原子性構(gòu)件,可復用、可定制。
它們嵌入和運行在整個MCGF大框架的各部分,宛如高速行駛的汽車上的車輪、齒輪、傳動組、傳感器,協(xié)同助力構(gòu)建治理框架和提升開發(fā)效率。歡迎社區(qū)一起建設(shè)和發(fā)展更多、更優(yōu)的高可用組件。
??區(qū)塊鏈治理通用組件解決了什么問題?
在基于分布式協(xié)作的聯(lián)盟鏈中,各參與方以一種松散耦合、且彼此并不完全信任的形式參與協(xié)作。
聯(lián)盟鏈中,設(shè)計了多種機制來幫助參與者之間建立信任且達成共識,私鑰、證書、賬戶和權(quán)限管理都是其中關(guān)鍵的支撐技術(shù)。
但上述技術(shù)較為復雜,在應用效果看,還需要更多的可復用、易落地的工具或組件。
私鑰概念復雜,其算法類型、存儲文件、生成方式眾多,難以理解和掌握,有沒有簡單、好用的工具來提升使用的體驗? 區(qū)塊鏈節(jié)點上的密鑰是明文存儲在硬盤上的,存在很大的操作風險,有沒有安全存儲的解決方案? 現(xiàn)有的區(qū)塊鏈網(wǎng)絡是以私鑰為控制中心進行設(shè)計的,萬一泄露或丟失了私鑰該怎么辦? 如何在同一區(qū)塊鏈網(wǎng)絡群組,針對不同的業(yè)務,以更細的粒度來控制智能合約的訪問權(quán)限? 如何解決區(qū)塊鏈應用角色設(shè)置不當導致的系統(tǒng)性風險? 現(xiàn)有的證書管理工具,尤其是國密相關(guān)的證書管理工具,相對不完善,有沒有好用的工具推薦? 證書管理不僅僅涉及證書的生成,還包括了證書托管、簽發(fā)、重置,尤其是在證書有效期設(shè)置被要求不斷縮短的大趨勢下,更需要頻繁地重置,有沒有完整的、一站式的解決方案? ……
分析、歸納以上問題,不難看出私鑰、賬戶、權(quán)限和證書管理和使用等方面均存在較高門檻:開發(fā)者需要在不同場景重復且繁瑣地解決同一個問題,用戶在使用過程中容易出現(xiàn)困惑和不順手,甚至可能因為治理方案不完善給系統(tǒng)帶來安全隱患和風險。
為了解決上述問題,我們開發(fā)了區(qū)塊鏈治理通用組件,旨在提供輕量解耦、開箱即用、簡潔易用、一站式的區(qū)塊鏈治理能力。
??區(qū)塊鏈治理通用組件包含哪些子組件?
本次開源的區(qū)塊鏈治理通用組件由私鑰管理組件(Governance-Key)、賬戶治理組件(Governance-Account)、權(quán)限治理組件(Governance-Authority)、證書管理組件(Governance-Cert)等組件構(gòu)成。
各治理組件提供了詳細的使用文檔。其中,賬戶治理組件和權(quán)限治理組件還提供了合約代碼、Java語言的SDK、合約集成Demo和Java版SDK的使用Demo,以便于使用者基于自身業(yè)務的實際場景進行自由、靈活地使用和集成。
私鑰管理組件Governance-Key
私鑰管理組件提供了私鑰的生成、保存、托管、使用的能力,覆蓋私鑰使用全生命周期。
該組件支持多種標準協(xié)議,在私鑰生成方面,支持隨機數(shù)生成、助記詞生成和派生生成等方式;就保存而言,支持門限分片還原,也支持按pkcs12(p12)、keystore、pem等格式導出;就托管而言,適配多種信任模型,可滿足企業(yè)級用戶的多樣化需求;就使用而言,支持私鑰簽名、公鑰加密等。
私鑰管理組件還全面提供了國密支持。

賬戶治理組件Governance-Account
在現(xiàn)有的區(qū)塊鏈設(shè)計中,一旦私鑰丟失,就無法對應身份進行再操作。于是,賬戶治理組件秉持以“賬戶為核心”的理念,提出雙層賬戶體系,解決私鑰和賬戶強綁定的痛點,從而實現(xiàn)賬戶私鑰更換能力,意味著即使私鑰丟失,賬戶也能找回。
在賬戶治理組件中,賬戶不再采用公鑰地址,而是采用公鑰賬戶加內(nèi)部隨機賬戶的雙層賬戶體系。

賬戶治理組件提供了多種區(qū)塊鏈賬戶治理規(guī)則、賬戶生命周期管理等整體解決方案,包括創(chuàng)建治理賬戶、選擇多種治理規(guī)則,授權(quán)治理權(quán)限,創(chuàng)建賬戶、凍結(jié)賬戶、解凍賬戶、更換私鑰、銷戶等賬戶生命周期的各類賬戶管理功能。
權(quán)限治理組件Governance-Authority
隨著基于智能合約的區(qū)塊鏈應用開發(fā)案例的涌現(xiàn),各應用開發(fā)場景對智能合約權(quán)限的控制和分組的需求也越來越迫切。權(quán)限治理組件提供基于智能合約的區(qū)塊鏈賬戶、合約函數(shù)等粒度的權(quán)限控制。
權(quán)限治理組件支持攔截對合約函數(shù)的非法調(diào)用,還支持權(quán)限分組——通過配置函數(shù)與組的關(guān)聯(lián),可輕松實現(xiàn)分組的權(quán)限控制。只需在業(yè)務代碼中引入權(quán)限合約地址,并在需要進行權(quán)限控制的函數(shù)中,訪問權(quán)限合約的判斷接口,就可以實現(xiàn)權(quán)限控制。
治理者只需操作權(quán)限治理合約,不需要調(diào)整業(yè)務合約,權(quán)限的修改即可實時生效。權(quán)限控制支持按需配置黑名單模式、白名單模式。
此外,權(quán)限治理組件還支持多種權(quán)限治理規(guī)則,例如一票通過、閾值投票等。

證書管理組件Governance-Cert
證書管理組件提供了X509標準的多級證書的簽發(fā)、驗證、重置、撤銷、導出及托管的能力,覆蓋證書的全生命周期,并支持多種簽名算法,如SHA256WITHRSA、SHA256WITHECDSA、SM3WITHSM2等簽名算法,并提供國密支持。
組件包括了cert-toolkit和cert-mgr兩個模塊,cert-toolkit提供證書生成等基礎(chǔ)能力,可作為獨立工具包使用,cert-mgr基于cert-toolkit工具包,提供了證書的托管能力,并統(tǒng)一規(guī)范了簽發(fā)的流程。

??使用場景
私鑰管理場景
私鑰在區(qū)塊鏈的設(shè)計體系中是不可或缺的。但是私鑰本身難于理解,難于使用,更難于保管,管理成本巨大,嚴重削弱了區(qū)塊鏈的使用體驗。
現(xiàn)有區(qū)塊鏈的實際場景中對私鑰管理的有效工具依舊缺位。私鑰管理普遍存在難度大、學習成本高、用戶體驗差等問題。
私鑰管理組件提供了一系列豐富而獨立的私鑰管理手段,用戶可根據(jù)自己的需求選擇合適的方案。
私鑰生成:用戶可以使用助記詞方式生成。一方面,助記詞由單詞構(gòu)成,相對容易記憶,減少了記憶和表達的難度。另一方面,如果為不同的場景使用獨立的私鑰,會增加記憶的成本和丟失的風險,此時可采用私鑰派生功能,用戶只需保管根私鑰即可,在不同的場景下根私鑰會派生不同的子私鑰。
私鑰托管:得到私鑰后,可選擇經(jīng)口令加密后導出為keystore或者pkcs12等格式,也可以交由企業(yè)級機構(gòu)托管;還可以選擇分片為若干個子片,分給不同的設(shè)備來存儲。
私鑰使用:用戶得到私鑰后,可使用該私鑰簽發(fā)交易、使用公鑰加密私鑰解密等。
賬戶治理場景
私鑰本身存在易于丟失、易泄露的問題。因私鑰丟失造成的經(jīng)濟損失屢見不鮮。由于巨大的經(jīng)濟利益驅(qū)使,對于私鑰的安全攻擊和盜竊案例也層出不窮。如何重置用戶私鑰,保護用戶的資產(chǎn)安全是區(qū)塊鏈推廣的底線。
賬戶治理組件旨在提供基于智能合約的自洽的賬戶治理機制,實現(xiàn)私鑰變更而身份不變的效果。賬戶治理組件既支持聯(lián)盟鏈治理委員會的元治理,也支持基于聯(lián)盟鏈具體業(yè)務應用的治理場景。
聯(lián)盟鏈治理委員會賬戶治理:在傳統(tǒng)的中心化解決方案中,存在著一家獨大的風險。在聯(lián)盟鏈中,通常會采用多中心的治理委員會來規(guī)避單點風險。聯(lián)盟鏈治理委員會成員可依托治理合約,來行使管理職能,對各項事務進行投票和表決。
但是,與委員會成員所關(guān)聯(lián)的私鑰仍然存在泄露或丟失的風險。賬戶治理組件可應用于聯(lián)盟鏈治理委員會賬戶治理中,聯(lián)盟鏈治理委員會成員的賬戶也依托賬戶治理組件進行管理。
區(qū)塊鏈存證業(yè)務賬戶治理:用戶可用當前私鑰在賬戶治理組件中開戶,以生成內(nèi)部身份。業(yè)務系統(tǒng)可依賴該內(nèi)部身份,例如在存證業(yè)務合約中,數(shù)據(jù)的記錄與該內(nèi)部身份相綁定的。
當需要修改私鑰時,可通過關(guān)聯(lián)賬戶或治理委員會以投票形式修改私鑰,用新的私鑰申請綁定舊的身份,這樣用新的私鑰便可繼續(xù)操作舊的身份,同時舊的私鑰則作廢。
權(quán)限治理場景
在應用開發(fā)中,若缺乏一套安全機制,必然會產(chǎn)生很嚴重的后果。一方面,區(qū)塊鏈應用需要細化到合約函數(shù)粒度級別的安全訪問控制;另一方面,針對不同用戶進行權(quán)限分組,防范交易越權(quán)等漏洞,避免被黑客攻擊,也是區(qū)塊鏈應用安全的剛需。
賬戶分組:可以將賬戶地址分組,并設(shè)置該組的權(quán)限,實現(xiàn)組的復用。 黑白名單模式:支持黑白名單兩種權(quán)限模式,管理員或治理委員會可以設(shè)置一個函數(shù)僅由一個組的成員來訪問,或者僅允許該組以外的賬戶訪問。 跨合約:允許跨合約配置權(quán)限,例如可設(shè)置一組成員同時被多個合約中的函數(shù)禁止。 輕量接入:業(yè)務方合約不需要知道這些復雜的權(quán)限配置,只需要在自己的函數(shù)中調(diào)用權(quán)限合約的攔截接口,當用戶調(diào)用該函數(shù)的時候,業(yè)務方合約會自動將調(diào)用信息上下文交予權(quán)限系統(tǒng)進行判斷、攔截。
證書管理場景
在聯(lián)盟鏈的企業(yè)級身份認證管理中,證書是網(wǎng)絡安全的基石。證書操作和使用體驗的劣勢,會危及整個聯(lián)盟鏈網(wǎng)絡的參與者,影響彼此的信任和業(yè)務的安全。
例如FISCO BCOS網(wǎng)絡采用面向CA的準入機制,使用x509協(xié)議的證書格式,支持任意多級的證書結(jié)構(gòu),保障信息保密性、認證性、完整性及不可抵賴性。
證書管理組件提供了證書生命周期管理的解決方案,規(guī)范證書簽發(fā)流程,支持證書托管,支持多種簽名算法,方便個人或企業(yè)使用。以證書管理和工具包使用為例:
鏈上節(jié)點準入證書管理:鏈上節(jié)點證書的簽發(fā)統(tǒng)一由證書管理組件來完成,證書管理組件可以集成或者獨立部署,并由權(quán)威機構(gòu)來管理服務。
在鏈初始化時,部署者可調(diào)用接口完成根證書的生成。新增機構(gòu)或節(jié)點可以通過證書管理組件提供的查詢接口,來查詢根證書,并提交子證書請求。根證書管理者可從通過查詢請求列表,選擇簽發(fā)子證書。通過證書管理組件對于證書的管理,可以規(guī)范簽發(fā)流程,提升效率。
證書工具包使用:證書管理組件中cert-toolkit可作為獨立JAVA工具包在項目中引用,代替命令行完成證書的生成和簽發(fā)。企業(yè)或個人項目可集成證書管理組件作為證書簽發(fā)工具包。
??未來展望
區(qū)塊鏈要解決的核心問題和本身的突出優(yōu)勢都是“信任”,而信任的基礎(chǔ)源于科學的治理,因此,在區(qū)塊鏈的發(fā)展進程中,區(qū)塊鏈治理不可或缺,且越來越重要。
從趨勢上看,治理技術(shù)和方案需要隨著治理的發(fā)展與實踐不斷自我進化,從實現(xiàn)上看,區(qū)塊鏈治理體現(xiàn)為一系列的工具、規(guī)范、系統(tǒng)以及達成信任的方法論。
要實現(xiàn)完善的區(qū)塊鏈治理,目標依舊“路漫漫其修遠兮”。微眾銀行區(qū)塊鏈在區(qū)塊鏈治理方面積累了豐富的經(jīng)驗,本次率先開源的組件即是一個肉眼可見的開始。
我們期望通過聚焦治理過程中常見的痛點,先解決一些小問題,夯實治理體系的技術(shù)基點。后續(xù),我們會面向更多的治理場景、治理策略,持續(xù)提出更多的開源實現(xiàn),并力求拋磚引玉,和社區(qū)共建更加豐富完善的解決方案和配套系統(tǒng)。
我們誠邀更多的人提出寶貴意見和建議,一起共建可持續(xù)發(fā)展的社區(qū)生態(tài),共同促進區(qū)塊鏈治理的落地,推動區(qū)塊鏈治理不斷進步。
??開源地址
GitHub代碼庫地址
Governance-Key私鑰管理組件
Governance-Account賬戶治理組件
https://github.com/WeBankBlockchain/Governance-Account?
Governance-Authority權(quán)限治理組件
https://github.com/WeBankBlockchain/Governance-Authority?
Governance-Cert證書管理組件
https://github.com/WeBankBlockchain/Governance-Cert
gitee代碼庫地址
Governance-Key私鑰管理組件
https://gitee.com/WeBankBlockchain/Governance-Key?
Governance-Account賬戶治理組件
https://gitee.com/WeBankBlockchain/Governance-Account?
Governance-Authority權(quán)限治理組件
https://gitee.com/WeBankBlockchain/Governance-Authority?
Governance-Cert證書管理組件
https://gitee.com/WeBankBlockchain/Governance-Cert
文檔地址
Governance-Key私鑰管理組件
https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Key/index.html
Governance-Account賬戶治理組件
https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Acct/index.html
Governance-Authority權(quán)限治理組件
https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Auth/index.html
Governance-Cert證書管理組件
https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Cert/index.html
如項目對您有幫助,歡迎點亮我們的小星星(點擊項目右上方Star按鈕)。 歡迎提交代碼(Pull requests)。 提問和提交BUG。 如果發(fā)現(xiàn)代碼存在安全漏洞,可通過以下地址上報:
https://security.webank.com/

