FISCO-BCOS / FISCO-BCOS/java-sdk-demo

3.6.0版本balance权限治理禁止c2c transfer的功能测试方案

Open
#188 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
17
Forks
27
PR merge metrics
No merged PRs in 30d

Description

# 相关PR:

#187

# 功能描述
3.6.0版本节点新增feature_balance_policy1,此feature是基于feature_balance,表现为:
1. 普通用户在链上有余额(gas),且只能通过链上治理委员会成员或者通过治理合约注册的charger进行gas充值;
2. 普通用户之间无法相互执行transfer,普通用户的gas只是为了合约调用的消耗。

基于此feature,新增了Economic.sol权限治理合约,用于实现以下几个功能:
1. 合约注册为治理合约;
2. 合约部署者作为合约管理员,可授权某些普通账户为charger;
3. charger可以为普通账户增删查gas。

合约关键函数描述:
1. function enable() onlyGovernor public {}
注册本合约为治理合约
2. function disable() onlyGovernor public {}
注销本合约为治理合约
3. function grantCharger(address chargerAccount) onlyOwner public returns(bool success){}
授权普通账户为charger
4. function revokeCharger(address chargerAccount) onlyOwner public returns(bool success){}
取消账户的charger权限
5. function charge(address userAccount, uint256 gasValue) onlyCharger public {}
charger给普通账户充值接口
6. function deduct(address userAccount, uint256 gasValue) onlyCharger public {}
charger给普通账户扣减接口

# 测试方案

## 1. 部署合约

使用账户A部署Economic.sol合约,账户A成为合约的owner,具有给普通账户授权为charger和取消普通账户charger权限的权限。

## 2. 注册为权限治理合约

合约在链上部署完之后,需要治理委员会成员调用合约enable函数将本合约注册为治理合约,之后也可以调用disable函数注销本合约为治理合约;

若使用其他非治理委员会成员调用enable函数,则执行出错。

## 3. 给普通账户授予charger权限

使用账户A,即合约owner,通过调用函数grantCharger给普通账户B授予charger权限。也可以多次调用本函数给其他普通账户授权。

若使用非账户A进行grantCharger函数调用,会执行出错。

## 4. 给普通账户增删查gas

账户B调用charge、deduct、getBalance对其他普通账户进行增删查gas。
此时使用其他未授予charger权限的账户对普通账户进行增删查操作会执行出错。

# 执行测试

搭建测试链,开启对应feature,使用下面命令执行测试脚本,进行测试,注意修改committee账户路径。
```
java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.contractTest.EconomicTest group0 /path/to/committee/account/0xc08f74bc27bc7b46bbe5f945d55be6f1f0048108.pem
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.