3. 账号与权限管理
3.1. 创建合约账号
- 快速创建一个合约账号
./xchain-cli account new —account 1111111111111111 --fee 1000 -H 127.0.0.1:37101
- 按照json文件创建一个合约账号
./xchain-cli account new —desc account.json --fee 1000 -H 127.0.0.1:37101
account.json模版如下:
{
"module_name": "xkernel",
"method_name": "NewAccount",
"args" : {
"account_name": "1111111111111111",
"acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}"
}
}
3.2. 管理合约账号/合约方法ACL
重新设置一个账号/合约方法的ACL
走multisig命令
step1: 准备好ACL的json文件,该json文件中有新的ACL配置,文件名记为acl_new.json
step2: 针对acl_new.json生成原始交易
先查看合约账号余额是否充足:
./xchain-cli account balance XC1111111111111111@xuper
如果不足,可以把当前个人账户(data/keys/address)的资产转移一些给合约账户
./xchain-cli multisig gen --desc acl_new.json --from XC1111111111111111@xuper
step3: 使用旧有的acl权限模型对新生成的原始交易做签名(假设旧有的权限模型的成员包括bob和alice)
./xchain-cli multisig sign --keys data/account/bob --output bob.sign
./xchain-cli multisig sign --keys data/account/alice --output alice.sign
step4:将签名后的交易post出去
./xchain-cli multisig send --tx tx.out bob.sign,alice.sign bob.sign,alice.sign
查询一个账号的Acl
./xchain-cli acl query —account XC1111111111111111@xuper
- 查询一个合约方法的Acl
./xchain-cli acl query —contract contractName —method methodName
3.3. 常见问题
创建合约账户,重置合约账户/合约方法的ACL时,配置文件的案例:
- 创建合约账号,配置文件案例如下:
{
"module_name": "xkernel",
"method_name": "NewAccount",
"args" : {
"account_name": "1111111111111111",
"acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}"
}
}
- 重置合约账户的ACL,配置文件案例如下:
{
"module_name": "xkernel",
"method_name": "SetMethodAcl",
"args" : {
"account_name": "1111111111111111",
"acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}"
}
}
- 重置合约方法的ACL,配置文件案例如下:
{
"module_name": "xkernel",
"method_name": "SetAccountAcl",
"args" : {
"contract_name": "math",
"method_name": "transfer",
"acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}"
}
}