开源进展 | WeBASE lab-rc2 发布,支持Liquid合约与权限管理
WeBASE (WeBank Blockchain Application Software Extension)是在区块链应用和FISCO BCOS底层之间搭建的一套通用组件,围绕交易、合约、密钥管理、数据、可视化管理来设计各个模块,屏蔽了区块链底层的复杂度,从而极大降低研发门槛,提速区块链应用开发效率。
自FISCO BCOS v3.0发布以来,WeBASE团队协同FISCO BCOS开源社区,紧锣密鼓开展适配工作,于今年2月底推出WeBASE lab版(点击了解详情),以便开发者高效部署和管理FISCO BCOS v3.0。WeBASE lab版提供了与FISCO BCOS v3.0相匹配的链上数据概览、合约IDE、交易管理、私钥管理等运维管理功能,并提供快速部署工具,用户可以一键部署FISCO BCOS v3.0,在可视化的Web管理台中管理智能合约,发起交易与链交互。
目前,在社区开发者的通力协作下,WeBASE lab-rc2版本正式发布,新增Liquid合约支持、权限管理等功能,适配FISCO BCOS v3.0 rc2版本,欢迎大家star并积极体验。
一起来看看WeBASE lab-rc2的功能介绍吧!
本次更新中,WeBASE新增了对Liquid合约的编译、部署、调用等功能。
Liquid 是微众区块链推出的全新一代智能合约编程语言(点击了解详情)。它以 Rust 语言为载体,以涵盖安全(Security)、性能(Performance)、体验(Experience)及定制能力(Customization)四个方面的“SPEC”智能合约编程语言设计规范为基础,通过贴合区块链应用特色的创新语言设计,助力实现智能合约开发过程更友好,运行更高效,功能更强大,降低开发者接入区块链应用的门槛。
https://liquid-doc.readthedocs.io/zh_CN/latest/
按以下步骤,即可在WeBASE中实现对Liquid合约的编译、部署、调用。
配置编译环境
编译合约前,需要先在WeBASE-Front所在主机中配置Liquid的编译环境。按照Liquid配置文档完成编译环境配置后,进入WeBASE合约IDE即可开始体验Liquid合约。
Liquid配置文档地址:
https://webasedoc.readthedocs.io/zh_CN/lab/docs/WeBASE-Front/liquid.html
图1:WeBASE合约IDE
进行编译前,合约IDE会自动选中一个节点前置用于编译Liquid合约,如上图1的右上角所示。如果选中的节点前置未配置Liquid环境,将无法编译,此时需要切换一个拥有Liquid环境的节点前置即可。
合约编译
WeBASE对Liquid合约采用异步编译的方式。点击编译合约后,WeBASE后台开始异步编译合约,并轮询后台合约是否编译完成;编译完成后,WeBASE合约IDE下方将出现合约ABI和合约BIN值,可以进行合约部署了。
合约部署、调用
WeBASE合约仓库的工具箱合约中新增了 “LiquidHelloWorld”合约模板,我们可以直接将该合约导入到WeBASE合约IDE中,进行编译部署,操作可参考图2、图3。
图2:合约仓库导入“LiquidHelloWorld”合约模板
图3:合约部署
Liquid合约的使用方法和Solidity大致相同,合约编译完成后都将获得合约的ABI和BIN值,可用于部署和调用操作。
与Solidity合约部署不同的是,Liquid合约部署时需要手动指定合约地址,且合约地址是以“/”斜杠开头且必须唯一,如上图3所示。例如,我们将部署地址设置为“/test1”进行部署,如果当前群组已经部署过地址为“/test1”的合约,那么部署将因地址冲突而失败。
Liquid提供了常用的Liquid合约案例,包含了HelloWorld合约,积分合约等案例,我们可以通过这些用例快速熟悉、掌握使用Liquid开发区块链应用的方法,合约案例可通过以下地址获取:
Liquid合约集gitee地址:
https://gitee.com/WeBankBlockchain/liquid/tree/main/examples/contract
Liquid合约集github地址:
https://github.com/WeBankBlockchain/liquid/tree/main/examples/contract
更强大的权限治理功能
FISCO BCOS v3.0在原有的“链治理委员会”和“合约管理员”的权限治理体系中,引入了“合约粒度”的权限治理。在最新的权限治理中,用户不仅可以管理“链”和“合约”维度的权限,还可以通过设置“白名单”和“黑名单”策略来管理具体合约中某个函数方法的调用权限。
图4:FISCO BCOS v3.0权限治理设计
治理委员:对链级别进行治理、属于链的顶层管理者。权限包括:治理委员选举、冻结、解冻等;对合约管理员进行管理等。
合约管理员:对合约方法访问权限进行分配管理。部署合约的用户默认为合约管理员。 普通用户:如果合约管理员未对合约设置权限类型,则默认所有用户都可调用合约接口;如果设为白名单,则用户在白名单当中才能访问;如果设为黑名单,则用户黑名单中就无法访问对应接口。
FISCO BCOS v3.0通过更细粒度的权限治理设计,让用户在区块链上更高效地完成更精准范围的权限控制,提高了联盟链中各机构的权限治理效率,降低协商成本。此次更新的WeBASE lab-rc2版本,实现了对FISCO BCOS v3.0权限治理功能更全面地支持。
启用并初始化权限治理功能
使用FISCO BCOS v3.0的权限治理功能,需要在搭建区块链节点时"开启权限管理",相应地,通过WeBASE进行一键部署搭链操作时,需要在配置文件中启用权限治理功能(fisco.auth=1)。
以WeBASE一键部署为例,我们启用权限治理并完成搭建后,在链的 nodes/ca/account 目录下将出现随机生成的链管理员.pem私钥文件。保存该私钥文件,通过如下图5所示的“导入管理员私钥”功能,将链的管理员私钥导入WeBASE中进行管理。完成初始委员私钥导入后,我们可以通过该私钥进行新增其他治理委员的操作。
图5:导入初始委员私钥
权限治理的提案与投票
在进行权限治理时,用户每发起一次权限修改的操作,该操作被视为一次投票,相同权限修改操作中的第一次投票会自动产生一个提案。如,链治理委员Alice将新用户Caron设置为新的链委员,则该操作会自动生成一个“提案”,此时另一个链治理委员Bob也设置Caron为新的链委员,则此时不会产生重复的提案,而是变成Bob对该提案投出了“同意”票。每个委员都可以发起提案或者对提案投“同意”或“反对”票。
总投票权重 / 总权重 >= 投票参与率 总同意权重票 / 总投票权重 >= 投票加权同意率
在WeBASE中进行权限治理
设置链上权限:WeBASE “系统管理-权限管理”页面中,用户可以通过可视化页面对链上的权限进行快速设置,目前包含新增/撤销委员投票(setWeight)、设置委员投票权重(setWeight)、设置阈值(setRate)三种操作,其中新增委员、撤销委员和修改委员投票权重都是属于setWeight设置权重类型的投票。
比如,我们设置阈值(投票加权通过率)和投票参与率都设为55,意味着参与投票的委员数要大于55%,且委员投票后的加权同意率大于55%,具体如下图6所示:
图6:WeBASE权限管理页面
修改链上权限:用户对权限的任意修改都会自动产生一个提案,该提案会在页面下方的提案列表中出现,我们可以在列表中查看提案的类型、通过状态、提案编号、提案发起者等信息,如图7所示。用户也可以进行“委员投票”,对提案进行同意或否定的投票操作,这里注意,“撤销提案”功能需要第一个发起投票的链委员才能撤销。
图7:WeBASE提案列表
更多关于权限治理的设计与使用方法参考以下文档:
https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/develop/committee_usage.html
FISCO BCOS v3.0权限治理体系设计:
https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/committee_design.html
全新的BFS功能
FISCO BCOS v3.0引入了全新的区块链合约文件系统 BFS(Blockchain File System)功能,将区块链中的合约资源使用树形文件目录形式进行组织划分管理,BFS旨在方便用户进行合约资源的管理,实现资源路径分区管理,不同分区不同职责的效果。如图8所示,BFS是一个逻辑结构,表现为多级的目录层。
图8:BFS设计
BFS中文件类型包含了 directory 目录类型和 contract 合约文件类型。
WeBASE中的BFS功能
在WeBASE的BFS操作页面中,默认的目录为“/”根目录,从下图9在WeBASE中的文件列表我们可以看到,根目录下包含了"sys", "apps", "tables", "usr" 四个目录文件,四个目录的功能如下表1所示:
表1:BFS根目录
以"apps"目录为例,所有用户部署的合约默认存储在apps目录下。例如,我们部署了一个Liquid合约,其合约地址在部署时指定为"test1",那么在”apps"目录下将创建一个type为directory的"test1"目录文件,里面包含了一个type为contract的"test1"的合约文件。
图9:WeBASE BFS页面
ls:获取指定目录的文件列表,包括目录与文件 cd:切换当前目录为指定目录 mkdir:在当前目录下创建目录,仅限于"apps"和”tables"目录下创建
https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/contract_directory.html#
优化和修复
优化:支持CNS功能、Event查看功能
优化:支持数据大屏与移动端展示功能
优化:增加交易回执中status状态码的中英文提示
修复:升级依赖包中springboot 1.x到2.x
上述优化及功能所涉及的最新代码和技术文档已同步更新至WeBASE代码仓库【lab】分支。
查看WeBASE页面中的版本信息 查看部署WeBASE时输出的版本信息 查看WeBASE源码或安装包中的release_note.txt
如需咨询技术问题,欢迎本公众号对话框回复【小助手】进技术交流群。
https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/doc/lab-rc1/index.html
https://webasedoc.readthedocs.io/zh_CN/lab/docs/WeBASE/install.html