Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Mojicode opened this issue Nov 16, 2023 · 0 comments
Open

Comments

@Mojicode
Copy link
Contributor

相关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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant