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/
    
  • 相关阅读:
    每日博客
    每日博客
    软件设计命令模式
    软件设计中介者模式
    软件设计模式
    软件设计迭代器模式
    1.7学习进度
    软件设计解释器模式
    软件设计代理模式
    软件设计备忘录模式
  • 原文地址:https://www.cnblogs.com/cqvoip/p/13677815.html
Copyright © 2011-2022 走看看