FISCO-BCOS / FISCO-BCOS/java-sdk-demo
3.6.0版本balance权限治理禁止c2c transfer的功能测试方案
- 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.