账户治理组件:区块链多方协作治理的“安全基石”
共 5832字,需浏览 12分钟
·
2021-03-29 21:16
为了便于分布式协作,账户治理组件通过引入治理者的角色,来管理重置用户私钥。变更后的账户治理过程如下:
用户生成新的私钥,并基于新的私钥生成对应的公钥账户地址。
用户将新的账户地址交给治理者(治理者或关联账户),由治理者发起私钥重置提案,并按照预订的规则进行决策。
治理者开始投票,可以选择赞成,也可以反对。在投票指定的有效时间内,赞成的票数超过阈值,视为投票通过;否则,投票未通过。
当投票通过后,治理合约将自动将新的账户地址和内部账户地址形成映射,并更新双层账户映射表,完成私钥重置。
账户治理组件易于集成。支持通过合约代码发布、合约代码继承和应用、Java SDK集成等多种方式来引入和使用,包含了以下核心组成:
合约代码。当前版本提供了基于Solidity语言实现,完全适配FISCO BCOS。理论上可在任何支持EVM虚拟机的区块链系统上运行。 Java SDK。通过集成Java SDK以后,可以适配和调用账户治理的所有合约接口。此外,进一步对使用接口进行简化和封装,符合Java程序员的使用习惯。 技术文档和代码示例。提供了完善的技术文档。还提供了基于存证和积分转账场景的两个代码示例demo,均包含了合约和SDK开发实例代码。
无论是合约还是SDK,账户治理组件都具备可插拔,可扩展,对业务侵入性小,接入成本低的优点。
支持国密。账户治理组件利用Solidity智能合约所提供的图灵完备的计算能力,提供自洽的账户治理能力,可同时支持国密与非国密,满足各类复杂的加密场景。 可插拔设计。账户治理组件既可以被集成到区块链底层协议中,也可以作为组件被应用到业务系统层。 易于扩展。账户治理组件的合约代码采取了插件化的设计,可以随时基于特定的业务需求来继承或重写其中的合约函数。
上图中,粉色部分为一些基础的工具合约:
WEBasicAuth:提供权限管理的基础功能,比如合约属主校验和属主转移 LibBoardVote:提供了投票功能库,支持投票功能。 WEBoardVoteGuard:依托LibBoardVote,抽象并对外提供了多个投票相关的接口。 BaseAccount:基础账户,维护账户状态和控制权限等
蓝色部分为账户及相关的实现合约:
UserAccount:管理和存储了普通账户重置策略、关联投票账户及投票信息等。 WEGovernance:管理和提供了治理者相关的治理委员会成员、投票信息等。 AccountManager:维护了外部账户与普通用户账户的映射关系,并提供了相关的接口。
即刻使用
上述优化及功能所涉及的最新代码和技术文档已同步更新,欢迎体验和 star 支持。如需咨询技术问题,欢迎关注本公众号,对话框回复【小助手】进技术交流群。
文档地址:
GitHub代码库地址:
https://github.com/WeBankBlockchain/Governance-Account
gitee代码库地址:
如项目对您有帮助,欢迎点亮我们的小星星(点击项目右上方Star按钮)。 欢迎提交代码(Pull requests)。 提问和提交BUG。 如果发现代码存在安全漏洞,可通过https://security.webank.com/上报。