一、ACL配置
ACL即访问控制列表,超级链中ACL配置格式如下:
{
"pm": {
"rule": 1,
"acceptValue": 0.6
},
"aksWeight": {
"YFS2JNvTmgwLK14JNsyXQ5F6cYsY1i75V": 0.4,
"Y4tr4K8w2zmQUcstmaYwKe9Ec3QjX8U8y": 0.3,
"SwFBN77Nq34ibFKkPHrHza3ESRcf1azro": 0.3
}
}
ACL可以规定合约账号背后各地址的权重占比aksWeight
,只有当各地址的权重占比aksWeight
之和大于或等于设定阈值acceptValue
时操作才会有效地进行。
二、创建合约账号
- 创建配置文件
account.json
,内容如下:
{
"module_name":"xkernel",
"method_name":"NewAccount",
"args" : {
"account_name":"1572318884355000",
"acl": "{\"pm\":{\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"YFS2JNvTmgwLK14JNsyXQ5F6cYsY1i75V\": 0.4,\"Y4tr4K8w2zmQUcstmaYwKe9Ec3QjX8U8y\": 0.3,\"SwFBN77Nq34ibFKkPHrHza3ESRcf1azro\": 0.3}}"
}
}
其中account_name
为合约账号的名称,由16位数字组成。要注意acl配置中引号需要转义。
- 看一下创建账号需要的费用
./xchain-cli account new --desc account.json
- 创建账号
./xchain-cli account new --desc ./releate_file/account.json --fee 1000
- 将合约账号acl的地址写入到data/acl/addrs中,用于后续签名,内容如下:
XC1572318884355000@xuper/YFS2JNvTmgwLK14JNsyXQ5F6cYsY1i75V
XC1572318884355000@xuper/Y4tr4K8w2zmQUcstmaYwKe9Ec3QjX8U8y
XC1572318884355000@xuper/SwFBN77Nq34ibFKkPHrHza3ESRcf1azro
注:快捷创建合约账号的方式
./xchain-cli account new --account 1572319456949000 --fee 1000
此命令会创建一个名为 XC1572319456949000@xuper 的账号,但是因为没有配置ACL,所以ACL被默认设置为有权限的账号仅为当前节点。
三、操作合约账号
以下文件位置与文件名按自己本机实际情况操作
3.1 查询账号ACL
./xchain-cli acl query --account XC1572318884355000@xuper
3.2 转账
./xchain-cli transfer --to XC1572318884355000@xuper --amount 10000 --keys data/keys/ -H 127.0.0.1:37101
3.3 查询账号余额
./xchain-cli account balance XC1572318884355000@xuper -H 127.0.0.1:37101
3.4 修改账号ACL
- 新的配置文件
update.json
,内容如下:
{
"module_name":"xkernel",
"method_name":"SetAccountAcl",
"args" : {
"account_name":"XC1572318884355000@xuper",
"acl": "{\"pm\":{\"rule\": 1,\"acceptValue\":0.6},\"aksWeight\": {\"YFS2JNvTmgwLK14JNsyXQ5F6cYsY1i75V\":0.5,\"SwFBN77Nq34ibFKkPHrHza3ESRcf1azro\":0.5}}"
}
}
其中method_name
要修改为:SetAccountAcl
- 查询生成多重签名交易需要的费用
./xchain-cli multisig gen --desc releate_file/update.json --from XC1572318884355000@xuper
- 生成多重签名交易
./xchain-cli multisig gen --desc releate_file/update.json --from XC1572318884355000@xuper --fee 1
默认产生一个tx.out
文件,可以指定文件名称:
./xchain-cli multisig gen --desc releate_file/update.json --from XC1572318884355000@xuper --fee 1 --output update.out
- 对生成的交易做签名
./xchain-cli multisig sign --tx update.out --keys data/keys/
默认生成sign.out文件,可以指定文件名称:
./xchain-cli multisig sign --tx update.out --keys data/keys/ --output node1.sign
./xchain-cli multisig sign --tx update.out --keys ../node2/data/keys/ --output node2.sign
- 发送签名后的交易
./xchain-cli multisig send --tx update.out node1.sign,node2.sign node1.sign,node2.sign
- 修改ACL成功