Tx
签名、广播、查询交易
可用命令
名称 | 描述 |
---|---|
sign | 签名生成的离线交易文件 |
broadcast | 广播一个已签名交易到网络 |
multisig | 用多个账户为同一交易签名 |
tx | 使用交易hash查询交易 |
txs | 使用Tag查询交易 |
iris tx sign
签名生成的离线交易文件。该文件由generate-only
标志生成。
iris tx sign <file> [flags]
标志
命令,速记 | 类型 | 必须 | 默认 | 描述 |
---|---|---|---|---|
-h,--help | 打印帮助 | |||
--append | bool | true | 将签名附加到现有签名 | |
--multisig | string | true | 代表交易签名的multisig帐户的地址 | |
--from | string | 是 | 用于签名的私钥名称 | |
--offline | bool | false | 离线模式 | |
--signature-only | bool | false | 仅打印生成的签名,然后退出 |
生成离线交易
提示
任意类型的离线交易都可以通过追加--generate-only
标志来生成
下面示例中使用Transfer交易:
iris tx bank send iaa1w9lvhwlvkwqvg08q84n2k4nn896u9pqx93velx iaa15uys54epmd2xzhcn32szps56wvev40tt908h62 10iris --chain-id=irishub --generate-only
unsigned.json
看起来是这样的:
{
"type": "cosmos-sdk/StdTx",
"value": {
"msg": [
{
"type": "cosmos-sdk/MsgSend",
"value": {
"from_address": "iaa1w9lvhwlvkwqvg08q84n2k4nn896u9pqx93velx",
"to_address": "iaa15uys54epmd2xzhcn32szps56wvev40tt908h62",
"amount": [
{
"denom": "iris",
"amount": "10"
}
]
}
}
],
"fee": {
"amount": [],
"gas": "200000"
},
"signatures": null,
"memo": ""
}
}
签名离线交易
iris tx sign unsigned.json --name=<key-name> > signed.tx
signed.json
看起来是这样的:
{
"type": "auth/StdTx",
"value": {
"msg": [
{
"type": "cosmos-sdk/Send",
"value": {
"inputs": [
{
"address": "iaa106nhdckyf996q69v3qdxwe6y7408pvyvyxzhxh",
"coins": [
{
"denom": "uiris",
"amount": "10000000"
}
]
}
],
"outputs": [
{
"address": "iaa1893x4l2rdshytfzvfpduecpswz7qtpstevr742",
"coins": [
{
"denom": "uiris",
"amount": "10000000"
}
]
}
]
}
}
],
"fee": {
"amount": [
{
"denom": "uiris",
"amount": "40000000"
}
],
"gas": "200000"
},
"signatures": [
{
"pub_key": {
"type": "tendermint/PubKeySecp256k1",
"value": "Auouudrg0P86v2kq2lykdr97AJYGHyD6BJXAQtjR1gzd"
},
"signature": "sJewd6lKjma49rAiGVfdT+V0YYerKNx6ZksdumVCvuItqGm24bEN9msh7IJ12Sil1lYjqQjdAcjVCX/77FKlIQ==",
"account_number": "0",
"sequence": "3"
}
],
"memo": "test"
}
}
签名之后,signed.json
中的signature
字段将不再为空。
现在准备广播这个已签名交易到IRIS Hub。
iris tx broadcast
这个命令用于广播已离线签名的交易到网络。
广播离线签名的交易
iris tx broadcast signed.json --chain-id=irishub
iris tx multisign
用多个账户为一个交易签名。这个交易只有在签名数满足multisig-threshold时才可以广播。
iris tx multisign <file> <key-name> <[signature]...> [flags]
用多签密钥创建离线交易
提示
没有多签密钥?创建一个
iris tx bank send <from> <to> 10iris --fees=0.3iris --chain-id=irishub --from=<multisig-keyname> --generate-only > unsigned.json
签名多签交易
查询多签地址
iris keys show <multisig-keyname>
unsigned.json
签名假定multisig-threshold是2,我们使用2个签名者签名unsigned.json
用signer-1签名:
iris tx sign unsigned.json --from=<signer-keyname-1> --chain-id=irishub --multisig=<multisig-address> --signature-only > signed-1.json
用signer-2签名:
iris tx sign unsigned.json --from=<signer-keyname-2> --chain-id=irishub --multisig=<multisig-address> --signature-only > signed-2.json
合并签名
合并所有签名到 signed.json
iris tx multisign --chain-id=irishub unsigned.json <multisig-keyname> signed-1.json signed-2.json > signed.json
现在可以广播这个已签名交易了。
iris query tx
iris query tx [hash] [flags]
iris query txs
iris query txs --events 'message.sender=<iaa...>&message.action=xxxx' --page 1 --limit 30
其中message.action
可取值:
module | Msg | action |
---|---|---|
bank | cosmos-sdk/MsgSend | transfer |
cosmos-sdk/MsgMultiSend | transfer | |
distribution | cosmos-sdk/MsgModifyWithdrawAddress | set_withdraw_address |
cosmos-sdk/MsgWithdrawValidatorCommission | withdraw_commission | |
cosmos-sdk/MsgWithdrawDelegatorReward | withdraw_rewards | |
gov | cosmos-sdk/MsgSubmitProposal | submit_proposal |
cosmos-sdk/MsgDeposit | proposal_deposit | |
cosmos-sdk/MsgVote | proposal_vote | |
stake | cosmos-sdk/MsgCreateValidator | create_validator |
cosmos-sdk/MsgEditValidator | edit_validator | |
cosmos-sdk/MsgDelegate | delegate | |
cosmos-sdk/MsgBeginRedelegate | redelegate | |
cosmos-sdk/MsgUndelegate | unbond | |
slashing | cosmos-sdk/MsgUnjail | unjail |
coinswap | irismod/MsgSwapOrder | swap |
irismod/MsgAddLiquidity | add_liquidity | |
irismod/MsgRemoveLiquidity | remove_liquidity | |
htlc | irismod/MsgCreateHTLC | create_htlc |
irismod/MsgClaimHTLC | claim_htlc | |
irismod/MsgRefundHTLC | refund_htlc | |
nft | irismod/MsgIssueDenom | issue_denom |
irismod/MsgMintNFT | mint_nft | |
irismod/MsgBurnNFT | burn_nft | |
irismod/MsgTransferNFT | transfer_nft | |
irismod/MsgEditNFT | edit_nft | |
record | irismod/MsgCreateRecord | create_record |
token | irismod/MsgIssueToken | issue_token |
irismod/MsgEditToken | edit_token | |
irismod/MsgTransferTokenOwner | transfer_token_owner | |
irismod/MsgMintToken | mint_token |