微众银行区块链开源首批多方协作治理组件,开启治理实践新起点
2021-02-03 10:56 收藏(0) 阅读(2288) 评论(0)

区块链历经10余年的发展,基础技术框架逐渐完善,链上承载的业务越来越丰富,参与方越来越多。多方协作能否顺畅进行、业务摩擦能否得到有效解决、既往治理策略和实践能否满足日后高速发展的需求……行业关注的重点逐步聚焦到这些更具挑战性的难题上。

2021年1月,微众银行区块链在多年技术研究和应用实践的基础上,重磅发布了《面向区块链的多方协作治理框架》白皮书,即MCGF(Multilateral Collaborative Governance Framework)。

作为区块链治理的参考架构,MCGF全面覆盖区块链治理的设计规范、参与角色、核心系统架构、功能流程及应用场景等领域。

其开放式的框架可适配多种异构区块链底层网络,并结合管理和技术策略,统筹链上治理和链下治理。在系统层面,MCGF通过各类工具、组件和服务等方式支撑治理。最后,MCGF为各参与方设计可视化、交互式、多终端的感知和操作方式,提供优良的用户体验。

区块链本身追求多方协作,其体系和技术的发展落地都离不开社区的支持。我们秉持一贯的开源、开放的理念,诚邀各行业伙伴携手共建区块链治理体系,共同探索区块链治理之道。

我们将逐步把MCGF的内容一一开源,以飨社区。本次开源列表包含一套开箱即可用的区块链治理通用组件(WeBankBlockchain-Governance)。这些组件是MCGF框架的实做基础和原子性构件,可复用、可定制。

它们嵌入和运行在整个MCGF大框架的各部分,宛如高速行驶的汽车上的车轮、齿轮、传动组、传感器,协同助力构建治理框架和提升开发效率。欢迎社区一起建设和发展更多、更优的高可用组件。

  区块链治理通用组件解决了什么问题?

在基于分布式协作的联盟链中,各参与方以一种松散耦合、且彼此并不完全信任的形式参与协作。

联盟链中,设计了多种机制来帮助参与者之间建立信任且达成共识,私钥、证书、账户和权限管理都是其中关键的支撑技术。

但上述技术较为复杂,在应用效果看,还需要更多的可复用、易落地的工具或组件。

我们也常常会听到这样一些关于联盟链开发、使用和治理过程中的问题:

  • 私钥概念复杂,其算法类型、存储文件、生成方式众多,难以理解和掌握,有没有简单、好用的工具来提升使用的体验?

  • 区块链节点上的密钥是明文存储在硬盘上的,存在很大的操作风险,有没有安全存储的解决方案?

  • 现有的区块链网络是以私钥为控制中心进行设计的,万一泄露或丢失了私钥该怎么办?

  • 如何在同一区块链网络群组,针对不同的业务,以更细的粒度来控制智能合约的访问权限?

  • 如何解决区块链应用角色设置不当导致的系统性风险?

  • 现有的证书管理工具,尤其是国密相关的证书管理工具,相对不完善,有没有好用的工具推荐?

  • 证书管理不仅仅涉及证书的生成,还包括了证书托管、签发、重置,尤其是在证书有效期设置被要求不断缩短的大趋势下,更需要频繁地重置,有没有完整的、一站式的解决方案?

    ……

分析、归纳以上问题,不难看出私钥、账户、权限和证书管理和使用等方面均存在较高门槛:开发者需要在不同场景重复且繁琐地解决同一个问题,用户在使用过程中容易出现困惑和不顺手,甚至可能因为治理方案不完善给系统带来安全隐患和风险。

为了解决上述问题,我们开发了区块链治理通用组件,旨在提供轻量解耦、开箱即用、简洁易用、一站式的区块链治理能力。

  区块链治理通用组件包含哪些子组件?

本次开源的区块链治理通用组件由私钥管理组件(Governance-Key)、账户治理组件(Governance-Account)、权限治理组件(Governance-Authority)、证书管理组件(Governance-Cert)等组件构成。

各治理组件提供了详细的使用文档。其中,账户治理组件和权限治理组件还提供了合约代码、Java语言的SDK、合约集成Demo和Java版SDK的使用Demo,以便于使用者基于自身业务的实际场景进行自由、灵活地使用和集成。

私钥管理组件Governance-Key

私钥管理组件提供了私钥的生成、保存、托管、使用的能力,覆盖私钥使用全生命周期。

该组件支持多种标准协议,在私钥生成方面,支持随机数生成、助记词生成和派生生成等方式;就保存而言,支持门限分片还原,也支持按pkcs12(p12)、keystore、pem等格式导出;就托管而言,适配多种信任模型,可满足企业级用户的多样化需求;就使用而言,支持私钥签名、公钥加密等。

私钥管理组件还全面提供了国密支持。

账户治理组件Governance-Account

在现有的区块链设计中,一旦私钥丢失,就无法对应身份进行再操作。于是,账户治理组件秉持以“账户为核心”的理念,提出双层账户体系,解决私钥和账户强绑定的痛点,从而实现账户私钥更换能力,意味着即使私钥丢失,账户也能找回。

在账户治理组件中,账户不再采用公钥地址,而是采用公钥账户加内部随机账户的双层账户体系。

账户治理组件提供了多种区块链账户治理规则、账户生命周期管理等整体解决方案,包括创建治理账户、选择多种治理规则,授权治理权限,创建账户、冻结账户、解冻账户、更换私钥、销户等账户生命周期的各类账户管理功能。

权限治理组件Governance-Authority

随着基于智能合约的区块链应用开发案例的涌现,各应用开发场景对智能合约权限的控制和分组的需求也越来越迫切。权限治理组件提供基于智能合约的区块链账户、合约函数等粒度的权限控制。

权限治理组件支持拦截对合约函数的非法调用,还支持权限分组——通过配置函数与组的关联,可轻松实现分组的权限控制。只需在业务代码中引入权限合约地址,并在需要进行权限控制的函数中,访问权限合约的判断接口,就可以实现权限控制。

治理者只需操作权限治理合约,不需要调整业务合约,权限的修改即可实时生效。权限控制支持按需配置黑名单模式、白名单模式。

此外,权限治理组件还支持多种权限治理规则,例如一票通过、阈值投票等。

证书管理组件Governance-Cert

证书管理组件提供了X509标准的多级证书的签发、验证、重置、撤销、导出及托管的能力,覆盖证书的全生命周期,并支持多种签名算法,如SHA256WITHRSA、SHA256WITHECDSA、SM3WITHSM2等签名算法,并提供国密支持。

组件包括了cert-toolkit和cert-mgr两个模块,cert-toolkit提供证书生成等基础能力,可作为独立工具包使用,cert-mgr基于cert-toolkit工具包,提供了证书的托管能力,并统一规范了签发的流程。

  使用场景

私钥管理场景

私钥在区块链的设计体系中是不可或缺的。但是私钥本身难于理解,难于使用,更难于保管,管理成本巨大,严重削弱了区块链的使用体验。

现有区块链的实际场景中对私钥管理的有效工具依旧缺位。私钥管理普遍存在难度大、学习成本高、用户体验差等问题。

私钥管理组件提供了一系列丰富而独立的私钥管理手段,用户可根据自己的需求选择合适的方案。

私钥生成:用户可以使用助记词方式生成。一方面,助记词由单词构成,相对容易记忆,减少了记忆和表达的难度。另一方面,如果为不同的场景使用独立的私钥,会增加记忆的成本和丢失的风险,此时可采用私钥派生功能,用户只需保管根私钥即可,在不同的场景下根私钥会派生不同的子私钥。

私钥托管:得到私钥后,可选择经口令加密后导出为keystore或者pkcs12等格式,也可以交由企业级机构托管;还可以选择分片为若干个子片,分给不同的设备来存储。

私钥使用:用户得到私钥后,可使用该私钥签发交易、使用公钥加密私钥解密等。

账户治理场景

私钥本身存在易于丢失、易泄露的问题。因私钥丢失造成的经济损失屡见不鲜。由于巨大的经济利益驱使,对于私钥的安全攻击和盗窃案例也层出不穷。如何重置用户私钥,保护用户的资产安全是区块链推广的底线。

账户治理组件旨在提供基于智能合约的自洽的账户治理机制,实现私钥变更而身份不变的效果。账户治理组件既支持联盟链治理委员会的元治理,也支持基于联盟链具体业务应用的治理场景。

联盟链治理委员会账户治理:在传统的中心化解决方案中,存在着一家独大的风险。在联盟链中,通常会采用多中心的治理委员会来规避单点风险。联盟链治理委员会成员可依托治理合约,来行使管理职能,对各项事务进行投票和表决。

但是,与委员会成员所关联的私钥仍然存在泄露或丢失的风险。账户治理组件可应用于联盟链治理委员会账户治理中,联盟链治理委员会成员的账户也依托账户治理组件进行管理。

区块链存证业务账户治理:用户可用当前私钥在账户治理组件中开户,以生成内部身份。业务系统可依赖该内部身份,例如在存证业务合约中,数据的记录是与该内部身份相绑定的。

当需要修改私钥时,可通过关联账户或治理委员会以投票形式修改私钥,用新的私钥申请绑定旧的身份,这样用新的私钥便可继续操作旧的身份,同时旧的私钥则作废。

权限治理场景

在应用开发中,若缺乏一套安全机制,必然会产生很严重的后果。一方面,区块链应用需要细化到合约函数粒度级别的安全访问控制;另一方面,针对不同用户进行权限分组,防范交易越权等漏洞,避免被黑客攻击,也是区块链应用安全的刚需。

权限治理组件提供了业务权限治理工具,包含了不同账户的分组信息,还有不同组的权限。权限配置满足各类需求,使得开发者可以快速地为自己的智能合约应用集成权限控制功能。典型的功能如下:

  • 账户分组:可以将账户地址分组,并设置该组的权限,实现组的复用。

  • 黑白名单模式:支持黑白名单两种权限模式,管理员或治理委员会可以设置一个函数仅由一个组的成员来访问,或者仅允许该组以外的账户访问。

  • 跨合约:允许跨合约配置权限,例如可设置一组成员同时被多个合约中的函数禁止。

  • 轻量接入:业务方合约不需要知道这些复杂的权限配置,只需要在自己的函数中调用权限合约的拦截接口,当用户调用该函数的时候,业务方合约会自动将调用信息上下文交予权限系统进行判断、拦截。

证书管理场景

在联盟链的企业级身份认证管理中,证书是网络安全的基石。证书操作和使用体验的劣势,会危及整个联盟链网络的参与者,影响彼此的信任和业务的安全。

例如FISCO BCOS网络采用面向CA的准入机制,使用x509协议的证书格式,支持任意多级的证书结构,保障信息保密性、认证性、完整性及不可抵赖性。

证书管理组件提供了证书生命周期管理的解决方案,规范证书签发流程,支持证书托管,支持多种签名算法,方便个人或企业使用。以证书管理和工具包使用为例:

链上节点准入证书管理:链上节点证书的签发统一由证书管理组件来完成,证书管理组件可以集成或者独立部署,并由权威机构来管理服务。

在链初始化时,部署者可调用接口完成根证书的生成。新增机构或节点可以通过证书管理组件提供的查询接口,来查询根证书,并提交子证书请求。根证书管理者可从通过查询请求列表,选择签发子证书。通过证书管理组件对于证书的管理,可以规范签发流程,提升效率。

证书工具包使用:证书管理组件中cert-toolkit可作为独立JAVA工具包在项目中引用,代替命令行完成证书的生成和签发。企业或个人项目可集成证书管理组件作为证书签发工具包。

  未来展望

区块链要解决的核心问题和本身的突出优势都是“信任”,而信任的基础源于科学的治理,因此,在区块链的发展进程中,区块链治理不可或缺,且越来越重要。

从趋势上看,治理技术和方案需要随着治理的发展与实践不断自我进化,从实现上看,区块链治理体现为一系列的工具、规范、系统以及达成信任的方法论。

要实现完善的区块链治理,目标依旧“路漫漫其修远兮”。微众银行区块链在区块链治理方面积累了丰富的经验,本次率先开源的组件即是一个肉眼可见的开始。

我们期望通过聚焦治理过程中常见的痛点,先解决一些小问题,夯实治理体系的技术基点。后续,我们会面向更多的治理场景、治理策略,持续提出更多的开源实现,并力求抛砖引玉,和社区共建更加丰富完善的解决方案和配套系统。

我们诚邀更多的伙伴提出宝贵意见和建议,一起共建可持续发展的社区生态,共同促进区块链治理的落地,推动区块链治理不断进步。

  开源地址

GitHub代码库地址

Governance-Key私钥管理组件

https://github.com/WeBankBlockchain/Governance-Key 

Governance-Account账户治理组件

https://github.com/WeBankBlockchain/Governance-Account 

Governance-Authority权限治理组件

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权限治理组件

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权限治理组件

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

欢迎参与WeBankBlockchain的社区建设:

  • 如项目对您有帮助,欢迎点亮我们的小星星(点击项目右上方Star按钮)。

  • 欢迎提交代码(Pull requests)。

  • 提问和提交BUG。

  • 如果发现代码存在安全漏洞,可通过以下地址上报:

    https://security.webank.com/