开源进展 | WeBASE lab-rc2 发布,支持Liquid合约与权限管理

微众银行区块链

共 5353字,需浏览 11分钟

 ·

2022-05-24 23:04

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的功能介绍吧!

  支持Liquid合约

本次更新中,WeBASE新增了对Liquid合约的编译、部署、调用等功能。

Liquid 是微众区块链推出的全新一代智能合约编程语言(点击了解详情)。它以 Rust 语言为载体,以涵盖安全(Security)、性能(Performance)、体验(Experience)及定制能力(Customization)四个方面的“SPEC”智能合约编程语言设计规范为基础,通过贴合区块链应用特色的创新语言设计,助力实现智能合约开发过程更友好,运行更高效,功能更强大,降低开发者接入区块链应用的门槛。

Liquid技术文档地址

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权限治理设计

如上图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提案列表

更多关于权限治理的设计与使用方法参考以下文档:

FISCO BCOS v3.0权限治理使用指南:

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页面

在BFS中可以使用ls/cd/mkdir三种命令,其中ls和cd命令属于查询命令,mkdir属于执行命令,这三种指令的使用习惯与Linux的文件系统操作类似。
  • ls:获取指定目录的文件列表,包括目录与文件
  • cd:切换当前目录为指定目录
  • mkdir:在当前目录下创建目录,仅限于"apps"和”tables"目录下创建

BFS详细介绍可参考FISCO BCOS v3.0技术文档《 区块链合约文件系统》章节:

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既有的1.x版本(适用FISCO BCOS 2.x版本)也会持续更新迭代,永久维护。使用WeBASE时,大家可以通过以下任一方式查看当前使用的版本信息,以更好地完成部署工作:
  • 查看WeBASE页面中的版本信息
  • 查看部署WeBASE时输出的版本信息
  • 查看WeBASE源码或安装包中的release_note.txt

如需咨询技术问题,欢迎本公众号对话框回复【小助手】进技术交流群。

WeBASE 代码仓库:
https://github.com/WeBankBlockchain/WeBASE/tree/lab
WeBASE 代码仓库国内镜像:
https://gitee.com/WeBank/WeBASE/tree/lab
WeBASE 技术文档:
https://webasedoc.readthedocs.io/zh_CN/lab
WeBASE 技术文档国内镜像:

https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/doc/lab-rc1/index.html

首次体验WeBASE,可参考一键部署文档:

https://webasedoc.readthedocs.io/zh_CN/lab/docs/WeBASE/install.html

向我们报告问题,欢迎提交issue:
https://github.com/WeBankBlockchain/WeBASE/issues







浏览 51
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报