Commit 5b2e6574 authored by 谢昇's avatar 谢昇

Update cli独立模块命令.md

parent 1819af9a
**版本:V6.2.0** **版本:V6.2.0**
...@@ -340,241 +340,391 @@ Flags: ...@@ -340,241 +340,391 @@ Flags:
`cli wallet sign -d 字符串A6 -i 2 -k 签名私钥` `cli wallet sign -d 字符串A6 -i 2 -k 签名私钥`
后续再发送交易即可。 后续再发送交易即可。
# multisig 多重签名合约
## 合约基本功能
创建一个多重签名的账户,并指定owner以及其权重;
账户属性交易包括:
- owner的add/del/modify/replace
- 资产每日限额的修改
- 请求权重的修改
账户属性的修改都是一个交易,需要满足权重的要求才能被执行。
账户交易的确认和撤销:
当交易提交者的权重不能满足权重要求时,需要其余的owner来一起确认。
owner可以撤销自己对某笔交易的确认,但此交易必须是没有被执行。已执行的不应许撤销。
多重签名账户的转入和转出:
转入时,to地址必须是多重签名地址,from地址必须是非多重签名地址;
转出时,from地址必须是多重签名地址,to地址必须是非多重签名地址; 转出交易需要校验权重。
***
## 合约操作流程
- 准备阶段
准备5个地址
"18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs" xs0
"1KoiQmaFg3DoZr84JehxrEWiR7SorSgbUx" xs1
"1KbM8ewfmNzsp1j3GHKz5tGn28ouaAGZAG" xs2
"17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH" xs3
"1JeVN3q938vx8Pqcg7Kodmih8sWT5eQHHs" xs4
分别打入1000BTY后,转入500BTY进入多重签名合约。
`cli coins transfer -a 1000 -t 地址`
`cli coins send_exec -a 500 -e multisig`
***
- cli命令概览
`cli multisig -h`
```
Available Commands:
account multisig account
owner multisig owner
tx multisig tx
```
cli命令分为三大块,分别为账户、拥有者、交易。
`cli multisig account -h`
## multisig 多重签名合约
新建6个测试地址
"1LmbKkDke6FB4mATfF1WQD2QLQQbk1JUFa" xs1
"1JDVvcppsUpfbaXqdoKyGTYV7eeakZgCHN" xs2
"1GV8NGi8fgbG5kqpL6v64fQNkszkxyvwZ7" xs3
"197MWT1nNxHnmz4Wd6SWCPbL3naUy5WLiz" xs4
"1PpeeGeWfT8hCUroKEYUur12SQsbTyMdQz" xs5
"1LFqpeEiGuWSVUMztxifLGTT7gsmJatGJi" xs6
分别打入1000
由xs1和xs2创建一个多重签名地址
``` ```
cli send multisig account create -d 5 -k "18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs" -e coins -a "1LmbKkDke6FB4mATfF1WQD2QLQQbk1JUFa 1JDVvcppsUpfbaXqdoKyGTYV7eeakZgCHN" -w "20 15" -r 15 -s BTY Available Commands:
address get multisig account address
assets get assets of multisig account
count get multisig account count
create Create a multisig account transaction
creator get all multisig accounts created by the address
dailylimit Create a modify assets dailylimit transaction
info get multisig account info
owner get multisig accounts by the owner
unspent get assets unspent today amount
weight Create a modify required weight transaction
``` ```
*** ***
测试symbol `cli multisig owner -h`
``` ```
cli send multisig account create -d 5 -k "18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs" -e coins -a "1LmbKkDke6FB4mATfF1WQD2QLQQbk1JUFa 1JDVvcppsUpfbaXqdoKyGTYV7eeakZgCHN" -w "20 15" -r 15 -s Bty Available Commands:
ErrInvalidSymbol add Create a add owner transaction
del Create a del owner transaction
modify Create a modify owner weight transaction
replace Create a replace owner transaction
``` ```
只允许大写字母
*** ***
`cli multisig tx -h`
查询指定地址创建的所有多重签名账户
cli multisig account creator -a "18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs"
``` ```
{ Available Commands:
"address": [ confirm Create a confirm transaction
"3Ko3NXqnc7HbKVzX7CmHh1hxaT2HyyGb6k", confirmed_weight get the weight of the transaction confirmed.
"3N6xUeeo2CghiYhGZNeVfGs4ZVU7Q23WQj" count get multisig tx count
] info get multisig account tx info
} transfer_in Create a transfer to multisig account transaction
transfer_out Create a transfer from multisig account transaction
txids get multisig txids
``` ```
*** ***
获取指定账户上指定资产的每日余额 - 创建多重签名地址
cli multisig account unspent -a "3Ko3NXqnc7HbKVzX7CmHh1hxaT2HyyGb6k" -e coins -s Bty `cli multisig account create -h`
```
[
{
"symbol": "BTY",
"execer": "coins",
"unspent": "5.0000"
}
]
``` ```
Flags:
-d, --daily_limit float daily_limit of assets
-e, --execer string assets execer name
-h, --help help for create
-a, --owners_addr string address of owners,separated by '-', addr0-addr1-addr2...
-w, --owners_weight string weight of owners,separated by '-', w0-w1-w2..., uint64 type
-r, --required_weight uint required weight of account execute tx
-s, --symbol string assets symbol
```
由xs0创建一个多重签名地址,参与者为xs1和xs2:
`cli multisig account create -d 5 -e coins -a 1KoiQmaFg3DoZr84JehxrEWiR7SorSgbUx-1KbM8ewfmNzsp1j3GHKz5tGn28ouaAGZAG -w 20-10 -r 15 -s BTY`
**xs0**地址签名并发送
-d为每日交易限额,低于该限额的转账无需达到权重签名;
-e指定了具体合约,目前支持coins、token、paracross合约;
-a为该多重签名地址设置的拥有者地址,地址间以-分隔;
-w为该多重签名地址各拥有者的权重,为正整数,以-分隔;
-r为该多重签名地址设置的交易所需的权重值,为正整数;
-s为该多重签名支持的代币名。
使用token进行测试,向xs4、5、6各转入1000JTT ***
使用4/5创建多重签名地址 - 查询指定地址创建的所有多重签名账户
cli send multisig account create -d 5 -k "18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs" -e token -s JTT -a "197MWT1nNxHnmz4Wd6SWCPbL3naUy5WLiz 1PpeeGeWfT8hCUroKEYUur12SQsbTyMdQz" -w "20 10" -r 15 `cli multisig account creator -a "18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs"`
``` ```
{ {
"address": [ "address": [
"3Ko3NXqnc7HbKVzX7CmHh1hxaT2HyyGb6k", "3Ko3NXqnc7HbKVzX7CmHh1hxaT2HyyGb6k",
"3N6xUeeo2CghiYhGZNeVfGs4ZVU7Q23WQj", "3N6xUeeo2CghiYhGZNeVfGs4ZVU7Q23WQj",
"35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ",
"3AAmTZighdcpputVjXTeTL7co27vfVyBLy",
"3N1AzFYq4Q3toT2BAYyizpb3FuXr2xyjVH",
"33YP9MzzMzasTe256zfKuWd7doDEX9k25C",
"3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"3Mp38WrtHG5hPskxBeUFzuuG9x7uVWTfrH"
] ]
} }
``` ```
前两个为BTY地址,第三个为JTT地址 该地址创建的所有多重签名地址按创建先后列表;
多重签名地址的规则与普通地址不同,为3开头的地址。
***
- 对指定多重签名地址增加拥有者
为多重签名地址3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7增加拥有者xs3,权重为6;
`cli multisig owner add -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -w 6 -o 17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH`
用xs1签名并发送,因xs1地址权重为20超过需要的15,因此不需要其他人继续签名即可成功。
- 对指定多重签名地址删除拥有者
`cli multisig owner del -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -o 17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH`
用xs1签名并发送。
- 修改指定多重签名地址指定拥有者的权重
`cli multisig owner modify -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -o 17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH -w 7`
用xs1签名并发送。
- 修改指定多重签名地址的指定拥有者
`cli multisig owner replace -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -o 17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH -n 1JeVN3q938vx8Pqcg7Kodmih8sWT5eQHHs`
用xs1签名并发送。
-n后为修改后的地址。
*** ***
cli multisig account count统计的是全合约创建的多重签名地址数量 - 查询指定多重签名地址的相关信息
`cli multisig account info -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7`
``` ```
{ {
"data": 5 "createAddr": "18jUpfSuYCk2iQu8ZqB3d6hNWNWA4ty3Xs",
"multiSigAddr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"owners": [
{
"ownerAddr": "1KoiQmaFg3DoZr84JehxrEWiR7SorSgbUx",
"weight": 20
},
{
"ownerAddr": "1KbM8ewfmNzsp1j3GHKz5tGn28ouaAGZAG",
"weight": 10
},
{
"ownerAddr": "17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH",
"weight": 6
}
],
"dailyLimits": [
{
"symbol": "BTY",
"execer": "coins",
"dailyLimit": "5.0000",
"spent": "0.0000",
"lastday": "2019-07-24 10:49:59"
}
],
"txCount": 1,
"requiredWeight": 15
} }
``` ```
*** ***
cli multisig account address -e 1 -s 1 - 根据索引查询全合约下的多重签名地址
根据索引查询全合约下的多重签名地址 `cli multisig account address -e 9 -s 8`
cli multisig account address -e 1.1 -s 1.1
Error: invalid argument "1.1" for "-e, --end" flag: strconv.ParseInt: parsing "1.1": invalid syntax
***
cli multisig account address -e 5 -s 0
一共五个地址
``` ```
{ {
"address": [ "address": [
"3NVH8VX89S6m9nfkTrYK77EJxcVdjXyfbU", "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"3Ko3NXqnc7HbKVzX7CmHh1hxaT2HyyGb6k", "3Mp38WrtHG5hPskxBeUFzuuG9x7uVWTfrH"
"3N6xUeeo2CghiYhGZNeVfGs4ZVU7Q23WQj",
"35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ",
"3AAmTZighdcpputVjXTeTL7co27vfVyBLy",
""
] ]
} }
``` ```
多返回了一个空地址
***
向4/5多重签名合约转入100JTT
***
从4地址向多重地址转账JTT
查询多重签名地址的余额
cli token token_balance -a 35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ -e multisig -s JTT
```
[
{
"Token": "JTT",
"balance": "0.0000",
"frozen": "10.0000",
"addr": "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ"
}
]
```
*** ***
由多重地址转入6地址JTT - 使用多重签名地址转账
cli send multisig tx transfer_out -a 1.5 -e token -s JTT -f "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -t 1LFqpeEiGuWSVUMztxifLGTT7gsmJatGJi -k 197MWT1nNxHnmz4Wd6SWCPbL3naUy5WLiz
1.5未达到5的limit
* 错误发送地址
* 错误的拥有者签名
* 错误的数量
* 错误的执行器和symbol
查询接收 1.向多重签名地址转入代币
cli token token_balance -a 1LFqpeEiGuWSVUMztxifLGTT7gsmJatGJi -e multisig -s JTT 先向多重签名地址3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7中转入BTY,需要从multisig合约中有BTY的地址转出,指定xs4转出:
`cli multisig tx transfer_in -a 100 -e coins -s BTY -t 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -n test `
由xs4签名并发送。
查询3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7地址余额:
`cli account balance -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7`
``` ```
[ {
{ "addr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"Token": "JTT", "execAccount": [
"balance": "1.5000", {
"frozen": "0.0000", "execer": "multisig",
"addr": "1LFqpeEiGuWSVUMztxifLGTT7gsmJatGJi" "account": {
} "balance": "0.0000",
] "frozen": "100.0000"
}
}
]
}
``` ```
取回
cli send token withdraw -a 1.5 -e multisig -s JTT -k "1LFqpeEiGuWSVUMztxifLGTT7gsmJatGJi" 可以看到该地址的多重签名合约中有了刚转入的100BTY,并被冻结。
*** ※多重签名地址没有私钥,向该地址的其他合约地址转入的代币无法被取出。
低权限转币后查询unpsent
cli multisig account unspent -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" 2.低于每日限额的低权重转出代币
使用权重为10的xs2地址转出3个BTY, 转入地址xs4:
`cli multisig tx transfer_out -a 3 -e coins -s BTY -f 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -t 1JeVN3q938vx8Pqcg7Kodmih8sWT5eQHHs`
因其低于每日限额,无需达到权重即可出币;
每日限额为24小时累计。
查询指定账户上指定资产的每日余额:
`cli multisig account unspent -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -e coins -s BTY`
``` ```
[ [
{ {
"symbol": "JTT", "symbol": "BTY",
"execer": "token", "execer": "coins",
"unspent": "3.5000" "unspent": "2.0000"
} }
] ]
``` ```
初始设定为5,消耗3后,剩余为2。
隔日,低权限转币 成功 3.超过每日限额的低权重转出代币
超过限额后转币,需要确认 使用权重为10的xs2地址转出10个BTY,转入地址xs4:
获取交易计数: `cli multisig tx transfer_out -a 10 -e coins -s BTY -f 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -t 1JeVN3q938vx8Pqcg7Kodmih8sWT5eQHHs`
cli multisig tx count -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ"
获取该多重签名地址下的所有交易计数:
`cli multisig tx count -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7`
``` ```
{ {
"data": 6 "data": 3
} }
``` ```
通过交易计数查询等待签名的交易索引:
查询所有交易及其状态 `cli multisig tx txids -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -s 0 -e 2 -x f`
cli multisig tx txids -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -s 0 -e 5 -p 1 -x 0
``` ```
{ {
"multiSigAddr": "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ", "multiSigAddr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"txids": [ "txids": [
5 2
] ]
} }
``` ```
-x为是否已成功执行的选项,默认不填为true;
查询交易信息 -p为是否等待的选项,默认不填为true;
cli multisig tx info -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -i 5 两者可根据需要选填。
***
- 通过索引查询指定交易的状态:
`cli multisig tx info -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -i 2`
``` ```
{ {
"txid": 5, "txid": 2,
"txHash": "c87b7e78e90caa0a5e43a73886d33972aaf863cceed7429a0a4fded6457ea215", "txHash": "0x00ad8c8548c231b6d03c353cff3081f9684601fb6769a5e3dc5dec9aff8a9047",
"txType": 3, "txType": 3,
"multiSigAddr": "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ", "multiSigAddr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"confirmedOwner": [ "confirmedOwner": [
{ {
"ownerAddr": "1PpeeGeWfT8hCUroKEYUur12SQsbTyMdQz", "ownerAddr": "1KbM8ewfmNzsp1j3GHKz5tGn28ouaAGZAG",
"weight": 10 "weight": 10
} }
] ]
} }
``` ```
正常已完成交易信息
cli multisig tx info -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -i 4 - 使用xs3的6权重为该交易确认/撤销:
`cli send multisig tx confirm -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -c t -i 2 `
由xs3签名并发送。
-c后为确认交易或撤销交易,默认为t为确认交易;设置为f即为撤销交易,需已确认且交易未完成。
- 再次查询该交易的状态:
`cli multisig tx info -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -i 2`
``` ```
{ {
"txid": 4, "txid": 2,
"txHash": "63695698959b89714484cd63a6b166cca506f78b6d05d27bd124b4e14e408af8", "txHash": "0x00ad8c8548c231b6d03c353cff3081f9684601fb6769a5e3dc5dec9aff8a9047",
"executed": true, "executed": true,
"txType": 3, "txType": 3,
"multiSigAddr": "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ", "multiSigAddr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"confirmedOwner": [ "confirmedOwner": [
{ {
"ownerAddr": "1PpeeGeWfT8hCUroKEYUur12SQsbTyMdQz", "ownerAddr": "1KbM8ewfmNzsp1j3GHKz5tGn28ouaAGZAG",
"weight": 10 "weight": 10
},
{
"ownerAddr": "17mFjHjMHdtTU31QhFsLGcjNWxvGaVZcPH",
"weight": 6
} }
] ]
} }
``` ```
使用同权限继续签名确认 交易已成功执行。
返回失败重复确认 ***
针对已完成的交易确认 - 修改指定多重签名地址的每日限额:
返回失败交易已执行 `cli multisig account dailylimit -d 10 -e coins -s BTY -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7`
针对索引外交易确认 由xs1地址签名并发送。
返回交易不存在 ***
-修改指定多重签名地址的额定需要权重:
改变dailylimit为6 `cli multisig account weight -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -w 4 `
cli send multisig account dailylimit -d 6 -e token -s JTT -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -k 197MWT1nNxHnmz4Wd6SWCPbL3naUy5WLiz 由xs1签名并发送。
-w为新设置的需要的权重。
增加owner
cli send multisig owner add -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -o 1LFqpeEiGuWSVUMztxifLGTT7gsmJatGJi -w 3 -k 197MWT1nNxHnmz4Wd6SWCPbL3naUy5WLiz
删除owner ***
删除地址6 其余相关查询:
删除地址5 - 查询指定多重签名地址交易汇总:
删除地址4时返回报错剩余权重不足 `cli multisig account assets -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -e coins -s BTY`
再次删除地址5 返回owner不存在 ```
添加地址5 [
再次添加地址5 返回owner已存在 {
"execer": "coins",
针对交易5用地址4撤销 返回确认不存在 "symbol": "BTY",
使用地址5撤销交易5 "balance": "0.0000",
cli send multisig tx confirm -a "35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ" -i 5 -c f -k 1PpeeGeWfT8hCUroKEYUur12SQsbTyMdQz "frozen": "87.0000",
"receiver": "100.0000",
使用地址4确认交易5 "addr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7"
使用地址4再次确认交易5 返回已执行 }
]
添加地址6权重5 ```
删除地址4
添加地址4 用地址5和地址6签名 构造两个添加交易,为交易15和16。交易16失败,返回owner已存在。 - 查询全网全部多重签名地址总量:
删除地址4 添加地址4为20权重 `cli multisig account count`
针对不是owner的地址修改权重,返回不是owner ```
{
modify权重至不足weight,返回权重和不足 "data": 10
replace owner 使用同一owner替换 返回已存在 }
替换地址6为地址3 ```
- 通过索引查询多重签名地址:
`cli multisig account address -s 0 -e 9`
```
{
"address": [
"3NVH8VX89S6m9nfkTrYK77EJxcVdjXyfbU",
"3Ko3NXqnc7HbKVzX7CmHh1hxaT2HyyGb6k",
"3N6xUeeo2CghiYhGZNeVfGs4ZVU7Q23WQj",
"35bZddFf69H8h4Ww7BnZWsPtWETu5MHyBQ",
"3AAmTZighdcpputVjXTeTL7co27vfVyBLy",
"3DiR3zRtTRjJqxHdsGEob7zUor9qvSZaES",
"3N1AzFYq4Q3toT2BAYyizpb3FuXr2xyjVH",
"33YP9MzzMzasTe256zfKuWd7doDEX9k25C",
"3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"3Mp38WrtHG5hPskxBeUFzuuG9x7uVWTfrH"
]
}
```
- 通过owner查询多重签名地址
`cli multisig account owner -a "1KoiQmaFg3DoZr84JehxrEWiR7SorSgbUx"`
```
{
"items": [
{
"multiSigAddr": "3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7",
"ownerAddr": "1KoiQmaFg3DoZr84JehxrEWiR7SorSgbUx",
"weight": 20
},
{
"multiSigAddr": "3Mp38WrtHG5hPskxBeUFzuuG9x7uVWTfrH",
"ownerAddr": "1KoiQmaFg3DoZr84JehxrEWiR7SorSgbUx",
"weight": 20
}
]
}
```
-a可选,若不填则显示本地钱包中所有owner。
***
- 通过索引查询指定交易已确认的权重值:
`cli multisig tx confirmed_weight -a 3BJqXn4v741wDJY6Fzb4YbLSftXwgDzFE7 -i 2`
```
{
"data": 16
}
```
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment