zoukankan      html  css  js  c++  java
  • cosmos 多签/多重签名

    1. 生成两个普通账户
    nscli keys add mykeyname
    nscli keys add mykeyname2
    
    1. 生成多签账户lee,该账户对外转账需要mykeynamemykeyname2的签名
    nscli keys add --multisig=mykeyname,mykeyname2 --multisig-threshold=2 lee
    
    1. 给多签账户转一点币,便于测试
    nscli tx send $(nscli keys show -a alice) $(nscli keys show -a lee) 10bde --chain-id=namechain 
    
    1. 创建一笔多签交易:多签账户对bob转2bde
    nscli tx send $(nscli keys show -a lee) $(nscli keys show -a bob) 2bde --generate-only --chain-id=namechain > unsignedTx.json
    

    unsignedTx.json

    {
    	"type": "cosmos-sdk/StdTx",
    	"value": {
    		"msg": [{
    			"type": "cosmos-sdk/MsgSend",
    			"value": {
    				"from_address": "cosmos1zmyxa4a26mnm7vd9r9vr9j73dzlrjxh4ld9s87",
    				"to_address": "cosmos1y23vxhglf798838xjp048h8em0xk0q6c05aqzp",
    				"amount": [{
    					"denom": "bde",
    					"amount": "2"
    				}]
    			}
    		}],
    		"fee": {
    			"amount": [],
    			"gas": "200000"
    		},
    		"signatures": null,
    		"memo": ""
    	}
    }
    
    1. 账户1 mykeyname 签名
    nscli tx sign unsignedTx.json --from=$(nscli keys show -a mykeyname) --multisig=$(nscli keys show -a lee) --chain-id=namec
    hain > signature1.json
    
    {
    	"pub_key": {
    		"type": "tendermint/PubKeySecp256k1",
    		"value": "A6h0GxSoYceL0azPbQbsFPOTfl6KRzYe9lm5yRNWeU97"
    	},
    	"signature": "uerHnA5MtXftQ5RUbGgPNMTaT4JwIX3lg0JkwA7N5RtDA2OXc+G01h/aThs8mt+QmZ3ucy70/ssd7EjctSU5Kw=="
    }
    
    1. 账户2 mykeyname2 签名
    nscli tx sign unsignedTx.json --from=$(nscli keys show -a mykeyname2) --multisig=$(nscli keys show -a lee) --chain-id=namec
    hain > signature2.json
    
    {
    	"pub_key": {
    		"type": "tendermint/PubKeySecp256k1",
    		"value": "AhozeSl91stP+jSrP08UjsPD166P0uvo7QIHUA7XH5Ce"
    	},
    	"signature": "vkeh7QeVNJodqGdMYf3hhQiEWbTtT1TeRXC1kceqqSx/g6XlFCLwj6P0oP7QRmYKItgNW2e/2HyvP/ieAJXZDw=="
    }
    
    1. 合并签名
    nscli tx multisign unsignedTx.json lee signature1.json signature2.json --chain-id=namechain > signedTx.json
    
    {
    	"type": "cosmos-sdk/StdTx",
    	"value": {
    		"msg": [{
    			"type": "cosmos-sdk/MsgSend",
    			"value": {
    				"from_address": "cosmos1zmyxa4a26mnm7vd9r9vr9j73dzlrjxh4ld9s87",
    				"to_address": "cosmos1y23vxhglf798838xjp048h8em0xk0q6c05aqzp",
    				"amount": [{
    					"denom": "bde",
    					"amount": "2"
    				}]
    			}
    		}],
    		"fee": {
    			"amount": [],
    			"gas": "200000"
    		},
    		"signatures": [{
    			"pub_key": {
    				"type": "tendermint/PubKeyMultisigThreshold",
    				"value": {
    					"threshold": "2",
    					"pubkeys": [{
    						"type": "tendermint/PubKeySecp256k1",
    						"value": "A6h0GxSoYceL0azPbQbsFPOTfl6KRzYe9lm5yRNWeU97"
    					}, {
    						"type": "tendermint/PubKeySecp256k1",
    						"value": "AhozeSl91stP+jSrP08UjsPD166P0uvo7QIHUA7XH5Ce"
    					}]
    				}
    			},
    			"signature": "CgUIAhIBwBJAuerHnA5MtXftQ5RUbGgPNMTaT4JwIX3lg0JkwA7N5RtDA2OXc+G01h/aThs8mt+QmZ3ucy70/ssd7EjctSU5KxJAvkeh7QeVNJodqGdMYf3hhQiEWbTtT1TeRXC1kceqqSx/g6XlFCLwj6P0oP7QRmYKItgNW2e/2HyvP/ieAJXZDw=="
    		}],
    		"memo": ""
    	}
    }
    
    1. 广播交易
    nscli tx broadcast signedTx.json
    

    多重签名原理参考:

    https://www.ipfsbi.com/%E6%AF%94%E7%89%B9%E5%B8%81%E7%9A%84%E5%A4%9A%E9%87%8D%E7%AD%BE%E5%90%8D/
    
  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/cqvoip/p/13677815.html
Copyright © 2011-2022 走看看