-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Description
相关PR:
功能描述
3.6.0版本节点新增feature_balance_policy1,此feature是基于feature_balance,表现为:
- 普通用户在链上有余额(gas),且只能通过链上治理委员会成员或者通过治理合约注册的charger进行gas充值;
- 普通用户之间无法相互执行transfer,普通用户的gas只是为了合约调用的消耗。
基于此feature,新增了Economic.sol权限治理合约,用于实现以下几个功能:
- 合约注册为治理合约;
- 合约部署者作为合约管理员,可授权某些普通账户为charger;
- charger可以为普通账户增删查gas。
合约关键函数描述:
- function enable() onlyGovernor public {}
注册本合约为治理合约 - function disable() onlyGovernor public {}
注销本合约为治理合约 - function grantCharger(address chargerAccount) onlyOwner public returns(bool success){}
授权普通账户为charger - function revokeCharger(address chargerAccount) onlyOwner public returns(bool success){}
取消账户的charger权限 - function charge(address userAccount, uint256 gasValue) onlyCharger public {}
charger给普通账户充值接口 - 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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels