EOS多签命令行实现--by Skyh
2018-09-26 本文已影响225人
skyh25
最近好多朋友问多签问题, 昨天eos又被偷了几个亿(做空啊),安全问题刻不容缓,刚好我最近研究完成了一次主网多签,于是分享给大家
找了些资料:
https://helpdesk.eostoolkit.io/hc/en-us/articles/360013330031-Multisig-Tutorial
之前在telegram的 eos developer群,generEOS团队给了个教程:
https://medium.com/coinmonks/advanced-eos-multisignature-tutorial-bf4da94f8360
试过不行,只能修改权限。。多签网站和scatter经常出现各种问题
下面给出我自己主网上的解决方案,网站+命令行。(未完整)
1 eostookit修改权限
为了不用命令行,还是用eostookit和scatter修改账户权限吧,
登录scatter之后,导入账户, 这个步骤只需要做一次
image.png
点击update 最终看到success
image.png
要点:1. active原先是某个秘钥对,现在该账户多签,
可以把相关用户名的active导入,weight设置账户权重(重要程度),
这些用户各自签名后,权重之和超过阈值Treshold就可以实现转账
举个栗子:
比如三个账号,两个人同意就可以交易,那么可以设置3个账号,权重为1, 阈值一样设为2即可
2 命令行实现多签转账交易
试过网上钱包不能多签后,我们直接用命令行来实现多签吧
如果没有创建本地钱包
./cleos wallet create --to-console
image.png
有或者锁住就要解锁:
./cleos wallet unlock --password PW5Jwd****
image.png
导入本地钱包,用主网的私钥
./cleos wallet import --private-key 5***
image.png- 先检查权限,连接随便节点即可(这里是https://api.eosnewyork.io:443)
./cleos -u https://api.eosnewyork.io:443 get account skyhigh12345
image.png
刚才我们已经导入私钥,现在试试转账
image.png
可以看到,导入钱包后的账户haytqmzugige 可以转账skyhigh12345没有权限,也可以直接区块链浏览器查到交易
image.png- 前戏完成,实现多签转账
- 2.3.1 发起提案
http://api.eosnewyork.io:80 multisig propose payme \
'[{"actor": "haytqmzugige", "permission": "active"}, {"actor": "xiaozuoyou55", "permission": "active"}]' \
'[{"actor": "skyhigh12345", "permission": "active"}]' eosio.token transfer \
'{"from":"skyhigh12345", "to":"haytqmzugige", "quantity":"0.1000 EOS", "memo":"Pay multisig some money"}' -p haytqmzugige@active
image.png
链上能查到
image.png
- 2.3.2 添加签名
./cleos -u http://api.eosnewyork.io:80 multisig approve haytqmzugige payme '{"actor": "haytqmzugige", "permission": "active"}' -p haytqmzugige@active
image.png
同时别人的机器装了cleos也执行 -p 改成别人
./cleos -u http://api.eosnewyork.io:80 multisig approve haytqmzugige payme '{"actor": "xiaozuoyou55", "permission": "active"}' -p xiaozuoyou55@active
- 2.3.3 执行多签交易
刚才第二步图片尝试执行交易时候不通过
当相关负责人签名后,这时候只要exec 刚才那个payme交易就可以啦
./cleos -u http://api.eosnewyork.io:80 multisig exec haytqmzugige payme -p haytqmzugige@active
image.png
3 不足改进地方
- 当用owner用户私钥导入钱包,也是可以实现转账的!! 完全也可以设置owner多签,以后修改权限多个人同意,可以自己尝试(怕弄坏账户不敢改,这样就可能有一个问题,掌握owner私钥就有绝对掌控权,可以自己尝试owner权限)
- 功能做起来不难, 钱包完全也可以添加,就是还没有,觉得是个机会!
以上EOS纯属自己理解,描述不正确请见谅