账户治理组件:区块链多方协作治理的“安全基石”

微众银行区块链

共 5832字,需浏览 12分钟

 ·

2021-03-29 21:16

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

2021年1月,微众银行区块链在多年技术研究和应用实践的基础上,重磅发布了面向区块链的多方协作治理框架》白皮书,即MCGF(Multilateral Collaborative Governance Framework)。作为区块链治理的参考架构,MCGF全面覆盖区块链治理的设计规范、参与角色、核心系统架构、功能流程及应用场景等领域。

区块链多方协作治理组件(WeBankBlockchain-Governance)MCGF框架的实做基础和原子性构件,可复用、可定制,由私钥管理组件(Governance-Key)、账户治理组件(Governance-Account)、权限治理组件(Governance-Authority)、证书管理组件(Governance-Cert)等子组件构成。它们嵌入和运行在整个MCGF大框架的各部分,宛如高速行驶的汽车上的车轮、齿轮、传动组、传感器,协同助力构建治理框架和提升开发效率。

我们将通过系列文章,抽丝剥茧地解析每一个子组件的关键特性和使用方式。本篇文章是区块链多方协作治理组件系列文章的第一篇,将介绍账户治理组件(Governance-Account),欢迎大家积极体验并将使用诉求或优化建议反馈给我们。


  缘起:失去了私钥等于失去了一切

在现有的区块链网络中,私钥被设计为控制的中心,每个区块链的参与者首先需要创建一个私钥,通过该私钥生成公钥,再进一步生成外部账户。随后,参与者使用私钥对交易进行签名并上链。私钥在区块链中是控制和操作链上资产、数据以及智能合约的钥匙。因此,私钥至关重要,一旦被盗或丢失,便失去了资产的所有权,后果不堪设想,也就有了“失去私钥等于失去一切”的说法。

被盗以后,盗窃者可以任意控制该外部账户下的所有合约,原有的用户资产或关键合约数据可能被恶意操作。


丢失以后,原有的用户会失去对该外部账户下所有合约的控制,无法发送任何的交易指令。


在联盟链的运维实践中,部分参与者通过中心化机构来统一负责密钥的管理和下发,并由平台或其他可信第三方托管。但这种方式存在较大安全隐患:一旦平台方管理不善,私钥完全泄露,后果不堪设想,另外,中心化管理的方式还面临着平台方或第三方的道德风险、操作风险和网络安全等诸多风险。


  认识账户治理组件(Governance-Account)

为了避免区块链因私钥泄露或丢失而造成不可估量的损失,帮助用户提供私钥重置的补救能力,同时践行分布式商业的理念,账户治理组件(Governance-Account)应运而生,旨在成为区块链多方协作治理的“安全基石”。基于智能合约所提供的图灵完备的计算能力,账户治理组件提供自洽的账户治理能力,包含区块链用户账户注册、私钥重置、冻结、解冻等账户全生命周期管理。


账户治理组件将原有的以私钥为中心的账户控制体系,改为以内部随机账户为中心的双层映射的账户体系。

双层账户体系是将原有的基于私钥计算得出的公钥地址视为第一层账户,以内部随机账户作为第二层账户,两层账户形成映射并存储在区块链网络上。

其中,内部随机账户是以公钥地址为参数部署智能合约所获得的。内部所有交易基于内部随机账户展开。在发送交易时,私钥仅仅作为公钥地址账户的权限校验。

内部随机账户主要包括:内部账户地址、内部账户状态、私钥重置模式和关联账户列表等。

为了便于分布式协作,账户治理组件通过引入治理者的角色,来管理重置用户私钥。变更后的账户治理过程如下:

  • 用户生成新的私钥,并基于新的私钥生成对应的公钥账户地址。

  • 用户将新的账户地址交给治理者(治理者或关联账户),由治理者发起私钥重置提案,并按照预订的规则进行决策。

  • 治理者开始投票,可以选择赞成,也可以反对。在投票指定的有效时间内,赞成的票数超过阈值,视为投票通过;否则,投票未通过。

  • 当投票通过后,治理合约将自动将新的账户地址和内部账户地址形成映射,并更新双层账户映射表,完成私钥重置。



值得一提的是,在账户治理组件中,一旦用户发现私钥泄露,可以自助发起重置普通账户所关联映射的私钥。而当发现私钥丢失后,则可以通过向治理者发起重置申请来更换私钥,而且,在更换私钥后,可以实现普通账户的地址不变和同一用户ID的账户地址不变,保障区块链业务的平滑运行。


  关键特性

账户治理组件(Governance-Account)被定位为区块链账户治理中间件,为用户提供一套灵活强大的解决方案,可以更规范、有效地管控联盟链的账户体系,有着标准化、可复用、可插拔、高效灵活和开箱即用的优势。


账户治理组件具有以下关键特性:

1、多样化的治理

首先,账户治理组件引入了治理者的角色。治理者有权添加或者删除管理员账户,且有权分配账户。同时,治理者行使账户的管理职能,支持对普通账户进行重置私钥、冻结、解冻、销户等操作。

其次,在账户治理组件中注册的普通用户可以自己管理并重置私钥,也可以向治理者申请发起对于相应密钥的重置操作,由治理者进行重置。

再则,账户治理组件支持用户通过社交好友关联来进行私钥重置。每个用户可设置关联一组社交好友的账户地址,一般是指社交好友们的普通账户地址。一旦用户需要重置私钥,可通过联系好友发起重置申请,经过多个社交好友同意后,可重置用户普通账户所绑定的私钥。

综上所述,账户治理组件真正实现了将私钥的完整控制权交还给用户的愿景。

2、灵活的治理模式

账户治理组件支持基于智能合约实现的治理策略,支持多种治理模式。

治理模式可分为管理员模式和治理委员会模式,其中,治理委员会模式又可分为多签制和权重投票制。多签制是指所有治理委员会成员一人一票;除此之外,为权重投票制。

治理委员会模式下的治理者通常是由参与链的多方共同选出的一个委员会,由多个机构共同进行管理和决策。

为了兼容传统中心化治理的需求,账户治理组件提供了管理员的账户治理模式,但是,这种方式存在着权限独大、不利制衡的缺陷。在分布式协作的商业模式下,推荐采用治理委员会模式。

在治理委员会模式下,用户可自助发起重置私钥的提案,提交给投票者。治理账户维护了一组投票帐号、每个账户对应的投票权重,以及投票通过的阈值。基于直接投票的方式,当某个操作的投票数量超过治理合约中预设的阈值时,智能合约才有权限执行该重置私钥的操作。

3、贯穿账户生命周期

通过双层账户体系,保证了即使用户的私钥被多次重置,依然不影响业务正常运行。

账户治理组件还引入了注册、冻结、解冻、销户等概念,使得在一个分布式协作的业务模式中,账户相关的操作形成了闭环和自洽的治理逻辑。当一个基于区块链的业务系统涉及到链上的账户体系时,可以通过继承账户合约,实现预留的接口函数。同时,借助账户治理组件的功能,快速、灵活地实现账户体系的生命周期的各类逻辑。

4、易于集成

账户治理组件易于集成。支持通过合约代码发布、合约代码继承和应用、Java SDK集成等多种方式来引入和使用,包含了以下核心组成:

  • 合约代码。当前版本提供了基于Solidity语言实现,完全适配FISCO BCOS。理论上可在任何支持EVM虚拟机的区块链系统上运行。
  • Java SDK。通过集成Java SDK以后,可以适配和调用账户治理的所有合约接口。此外,进一步对使用接口进行简化和封装,符合Java程序员的使用习惯。
  • 技术文档和代码示例。提供了完善的技术文档。还提供了基于存证和积分转账场景的两个代码示例demo,均包含了合约和SDK开发实例代码。

5、灵活插拔

无论是合约还是SDK,账户治理组件都具备可插拔,可扩展,对业务侵入性小,接入成本低的优点。

  • 支持国密。账户治理组件利用Solidity智能合约所提供的图灵完备的计算能力,提供自洽的账户治理能力,可同时支持国密与非国密,满足各类复杂的加密场景。
  • 可插拔设计。账户治理组件既可以被集成到区块链底层协议中,也可以作为组件被应用到业务系统层。
  • 易于扩展。账户治理组件的合约代码采取了插件化的设计,可以随时基于特定的业务需求来继承或重写其中的合约函数。



  技术详解

账户治理的应用架构主要分为接入层和合约层。

接入层:接入层提供了SDK的方式,封装了治理合约发布、普通用户管理、多签投票、权重投票、关联账户投票等Manager,同时内部集成了FISCO BCOS的Java SDK,实现与区块链智能合约的调用和交互。

合约层:合约设计采用分层的“高内聚、低耦合”的设计思路展开。治理账户包含了对治理者信息及投票信息的维护。普通账户包含了对关联账户、重置私钥策略、账户状态等管理。账户管理控制器包含了治理账户和普通账户大多数的业务操作接口。


上图中,粉色部分为一些基础的工具合约

  • WEBasicAuth:提供权限管理的基础功能,比如合约属主校验和属主转移
  • LibBoardVote:提供了投票功能库,支持投票功能。
  • WEBoardVoteGuard:依托LibBoardVote,抽象并对外提供了多个投票相关的接口。
  • BaseAccount:基础账户,维护账户状态和控制权限等

蓝色部分为账户及相关的实现合约

  • UserAccount:管理和存储了普通账户重置策略、关联投票账户及投票信息等。
  • WEGovernance:管理和提供了治理者相关的治理委员会成员、投票信息等。
  • AccountManager:维护了外部账户与普通用户账户的映射关系,并提供了相关的接口。


黄色部分为部署治理相关合约的接口合约,便于用户快速部署。


  应用场景

账户治理组件由于其通用化、标准化和组件化的设计,可以被应用到各类异构的场景中。我们以常见的积分场景和存证场景为例,来介绍账户治理组件的使用。

1、积分联盟

“积分联盟”是区块链业务中较为常见的场景之一。众多商家、分销商为了达成相互导流、积分流转等目标,可通过组件构建一个“积分联盟”的形式,实现用户账户体系打通、积分自由兑换。

对于普通用户而言,可以实实在在地获得商家的让利和权益。对于监管机构而言,机构之间的积分共享和透明协作,有助于保护消费者的权益,维护市场的稳定和健康发展。

除却如上优点,“积分联盟”的场景也存在着落地难的痛点。各机构之间虽然有着同样的目标与愿景,但是,不同机构之间出于利益、价值观的差异,难免会存在一定的分歧,最终阻碍“积分联盟”的有效落地。

账户治理组件则可以有效帮助参与机构之间建立规范化、标准化的治理体系,实现多方的共赢。


首先,各参与机构可以依托账户治理组件所提供的治理机制,快速构建自身的元治理体系规则,例如联盟的创世机构可以自动成为治理委员会的成员,后续通过链上的投票来增减治理委员会的成员。这种治理模式,避免了将积分账户体系交给单一中心化管理者后,所带来的诸如操作风险、道德风险以及信用风险等安全隐患。

其次,各参与机构可继承或依赖账户治理组件中的治理合约,实现积分业务相关的合约,账户生命周期管理的同时,提升开发效率,规范账户管理。

此外,目前也有一些积分平台通过充当中介的角色来实现权益互联互通,但由于积分平台掌控了流量入口,从而深度掌控了定价权与话语权,那么小微商家的利益与客户的权益往往就会被牺牲掉一部分。新型的基于公众联盟链的分布式零售方案,则可以帮助权益的提供方与权益的需求方快速建链合作,使得各参与方可以真正实现对等、透明地合作。

最后,监管机构可以随时接入,审计所有积分相关的信息,达成透明可穿透的监管目标,保障参与各方资金和权益的安全性。

2、司法存证场景

区块链公开透明、多方共识、不可篡改的特性,可以有效提升用户体验,缩短业务流程。但是,在实践过程中,区块链账户以私钥为中心的设计,若私钥丢失或泄露,可能引发历史存证信息身份关联失效、存证信息被恶意攻击或篡改等风险。

账户治理组件可帮助司法存证场景快速落地。通过以账户为中心取代以私钥为中心,账户治理组件可以涵盖多方账户的创建、验证、私钥重置、账户管理、账户查找等关键的司法存证场景,完成从数据上链、认证、取证、维权的闭环。

基于司法存证场景中的创作者、存证方、消费者和法院等不同角色,保证数据的真实性和完整性,同时兼容公开透明的监管要求,打造可信的技术生态。


“区块链+存证”解决了存证难、举证难的问题,账户治理组件旨在此基础上进一步解决账户控制的问题,最小化因私钥丢失或泄露的损失。

更多场景

随着分布式商业的不断发展,多方协作的理念不断深入人心,多方协作治理组件将会有越来越大的发展空间。自微众银行区块链多方协作治理组件开源以来,也获得了社区越来越多开发者的关注和支持。我们期待社区中能有更多的朋友与我们一起参与共建,持续提升联盟链的治理能力。

  即刻使用


上述优化及功能所涉及的最新代码和技术文档已同步更新,欢迎体验和 star 支持。如需咨询技术问题,欢迎关注本公众号,对话框回复【小助手】进技术交流群。


文档地址:

https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Acct/index.html

GitHub代码库地址:

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

gitee代码库地址:

https://gitee.com/WeBankBlockchain/Governance-Account
欢迎参与WeBankBlockchain的社区建设:
  • 如项目对您有帮助,欢迎点亮我们的小星星(点击项目右上方Star按钮)。
  • 欢迎提交代码(Pull requests)。
  • 提问和提交BUG。
  • 如果发现代码存在安全漏洞,可通过https://security.webank.com/上报。






浏览 40
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报