Unverified Commit ddceefd1 authored by icehawk-hyb's avatar icehawk-hyb Committed by GitHub

Delete multisig合约.txt

删除此文件,功能描述doc.go文件
parent dc596c96
++ /dev/null
多重签名合约实现功能:
创建一个多重签名的账户,并指定owner已经权重
账户属性交易:
owner的add/del/modify/replace
资产每日限额的修改
请求权重的修改
账户属性的修改都是一个交易,需要满足权重的要求才能被执行。
账户交易的确认和撤销:当交易提交者的权重不能满足权重要求时,需要其余的owner来一起确认。owner可以撤销自己对某笔交易的确认,但此交易必须是没有被执行。已执行的不应许撤销
多重签名账户的转入和转出:转入时,to地址必须是多重签名地址,from地址必须是非多重签名地址;
转出时,from地址必须是多重签名地址,to地址必须是非多重签名地址; 传出交易需要校验权重
第一:创建一个多重签名的账户地址(创建交易的txhash 生成对应的addr),创建时必须指定两个初始的owner 以及requiredWeight权重,owner的权重之和必须不能小于requiredWeight
此多重签名账户拥有的属性:
owner列表:owner 地址已经weight
assets dailyLimit : "execer": 和"symbol": 以及对应"dailyLimit" 。
注释:当从此账户转出的额度小于每日限额时,不需要校验owner的权重是否大于requiredWeight权重。
当转出额度超过每日限额时,需要多个owner一起来确认此交易,并且确认此交易的owner的权重之和必须大于requiredWeight权重,校验才能被执行。
"requiredWeight": 交易额度超过每日限额只有需要的权重。
//cli命令行:构造交易并签名发送
cli multisig create -d 10 -e coins -s bty -a "1Kkgztjcni3xKw95y2VZHwPpsSHDEH5sXF 1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj" -w "20 10" -r 15
cli wallet sign -a “创建者地址” -d
cli wallet send -d
//查看创建的账户个数
cli multisig get_account_count
//通过账户index获取账户地址,此时的index就是上面get_account_count的返回值。index从0开始的。为了以后分区间获取账户信息
cli multisig get_accounts -e 0 -s 0
//通过账户addr获取账户详情,142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc 多重签名账户地址
cli multisig get_acc_info -a "142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc"
第二步:给指定的多重签名账户142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc添加owner:1KHwX7ZadNeQDjBGpnweb4k2dqj2CWtAYo 。使用已存在的owner 提交交易1Kkgztjcni3xKw95y2VZHwPpsSHDEH5sXF
cli multisig owner_add -a "142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc" -o 1KHwX7ZadNeQDjBGpnweb4k2dqj2CWtAYo -w 5
//del owner
cli multisig owner_del -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -o "1C5xK2ytuoFqxmVGMcyz9XFKFWcDA8T3rK"
//replace owner
cli multisig owner_replace -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -n 1C5xK2ytuoFqxmVGMcyz9XFKFWcDA8T3rK -o 1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj
// modify owner
cli multisig owner_modify -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -o "1KHwX7ZadNeQDjBGpnweb4k2dqj2CWtAYo" -w 11
cli wallet sign -a 1Kkgztjcni3xKw95y2VZHwPpsSHDEH5sXF -d
cli wallet send -d
第三步:多重签名账户交易查询:
// 查询多重签名账户上的交易计数,需要指定多重签名账户地址
cli multisig get_tx_count -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc
{
"data": 1
}
// 查询多重签名账户交易,需要指定多重签名账户地址以及txid 索引区间,可以指定查询交易的执行状态
cli multisig get_txids -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -s 0 -e 0
// 查询交易信息
cli multisig get_tx_info -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -i 0
第四部:请求权重和资产每日限额的修改:
// modify dailylimit 修改coins:bty的每日限额为11个
cli multisig dailylimit -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -e coins -s bty -d 11
//增加token:TEST的资产每日限额为11个
cli multisig dailylimit -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -e token -s TEST -d 11
// modify weight 修改请求权重的值。
cli multisig weight_modify -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -w 16
第五步:账户交易的确认和撤销
//确认某笔交易,只能确认没有被执行的交易
cli multisig confirm -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -i 9
//撤销对某笔交易的确认,只能撤销没有被执行的交易
cli multisig confirm -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -i 9 -c f
第六步:多重签名账户的资产转入和转出
//转入:
//首先1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd账户需要向 multisig合约中转币
cli exec addr -e "multisig"
14uBEP6LSHKdFvy97pTYRPVPAqij6bteee
cli send bty transfer -a 50 -n test -t 14uBEP6LSHKdFvy97pTYRPVPAqij6bteee -k 1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd
//然后才能在multisig合约中从1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd账户转币到多重签名账户142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc
cli multisig transfer_in -a 40 -e coins -s bty -f 1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd -t 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -n test
cli wallet sign -a 1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd -d
cli wallet send -d
//此时可以查看多重签名账户142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc的资产,转入的币都被冻结
cli multisig get_assets -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc
//转出:在multisig合约中从多重签名账户142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc转币到1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj账户。由owner 1Kkgztjcni3xKw95y2VZHwPpsSHDEH5sXF提交交易
cli multisig transfer_out -a 11 -e coins -s bty -f 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc -t 1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj -n test
cli wallet sign -a 1Kkgztjcni3xKw95y2VZHwPpsSHDEH5sXF -d
cli wallet send -d
//此时可以查看多重签名账户142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc的资产,冻结币有减少
cli multisig get_assets -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc
cli account balance -a 142YMLZKZr3aBeiQcNqbSGkcj48ctka1tc
//查看1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj账户在multisig合约中的余额有增加
cli multisig get_assets -a 1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj
cli account balance -a 1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj
//从 multisig合约中取出1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj账户上的币
cli bty withdraw -a 1LDGrokrZjo1HtSmSnw8ef3oy5Vm1nctbj -e multisig
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