x/auth/tx
Abstract
This document specifies the x/auth/tx
package of the Cosmos SDK.
This package represents the Cosmos SDK implementation of the client.TxConfig
, client.TxBuilder
, client.TxEncoder
and client.TxDecoder
interfaces.
Contents
Transactions
TxConfig
client.TxConfig
defines an interface a client can utilize to generate an application-defined concrete transaction type.
The interface defines a set of methods for creating a client.TxBuilder
.
https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/client/tx_config.go#L25-L31
The default implementation of client.TxConfig
is instantiated by NewTxConfig
in x/auth/tx
module.
https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/x/auth/tx/config.go#L22-L28
TxBuilder
https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/client/tx_config.go#L33-L50
The client.TxBuilder
interface is as well implemented by x/auth/tx
.
A client.TxBuilder
can be accessed with TxConfig.NewTxBuilder()
.
TxEncoder
/ TxDecoder
More information about TxEncoder
and TxDecoder
can be found here.
x/auth/tx/config
The x/auth/tx/config
contains a depinject module.
The depinject module is to outputs the TxConfig
and TxConfigOptions
for the app.
Storage
This module has no store key. Do not forget to add the module name in the SkipStoreKeys
runtime config present in the app config.
SkipStoreKeys: []string{
authtxconfig.DepinjectModuleName,
validate.ModuleName,
},
Client
CLI
Query
The x/auth/tx
module provides a CLI command to query any transaction, given its hash, transaction sequence or signature.
Without any argument, the command will query the transaction using the transaction hash.
simd query tx DFE87B78A630C0EFDF76C80CD24C997E252792E0317502AE1A02B9809F0D8685
When querying a transaction from an account given its sequence, use the --type=acc_seq
flag:
simd query tx --type=acc_seq cosmos1u69uyr6v9qwe6zaaeaqly2h6wnedac0xpxq325/1
When querying a transaction given its signature, use the --type=signature
flag:
simd query tx --type=signature Ofjvgrqi8twZfqVDmYIhqwRLQjZZ40XbxEamk/veH3gQpRF0hL2PH4ejRaDzAX+2WChnaWNQJQ41ekToIi5Wqw==
When querying a transaction given its events, use the --type=events
flag:
simd query txs --events 'message.sender=cosmos...' --page 1 --limit 30
The x/auth/block
module provides a CLI command to query any block, given its hash, height, or events.
When querying a block by its hash, use the --type=hash
flag:
simd query block --type=hash DFE87B78A630C0EFDF76C80CD24C997E252792E0317502AE1A02B9809F0D8685
When querying a block by its height, use the --type=height
flag:
simd query block --type=height 1357
When querying a block by its events, use the --query
flag:
simd query blocks --query 'message.sender=cosmos...' --page 1 --limit 30
Transactions
The x/auth/tx
module provides a convenient CLI command for decoding and encoding transactions.
encode
The encode
command encodes a transaction created with the --generate-only
flag or signed with the sign command.
The transaction is serialized it to Protobuf and returned as base64.
$ simd tx encode tx.json
Co8BCowBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEmwKLWNvc21vczFsNnZzcWhoN3Jud3N5cjJreXozampnM3FkdWF6OGd3Z3lsODI3NRItY29zbW9zMTU4c2FsZHlnOHBteHU3Znd2dDBkNng3amVzd3A0Z3d5a2xrNnkzGgwKBXN0YWtlEgMxMDASBhIEEMCaDA==
$ simd tx encode tx.signed.json
More information about the encode
command can be found running simd tx encode --help
.
decode
The decode
commands decodes a transaction encoded with the encode
command.
simd tx decode Co8BCowBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEmwKLWNvc21vczFsNnZzcWhoN3Jud3N5cjJreXozampnM3FkdWF6OGd3Z3lsODI3NRItY29zbW9zMTU4c2FsZHlnOHBteHU3Znd2dDBkNng3amVzd3A0Z3d5a2xrNnkzGgwKBXN0YWtlEgMxMDASBhIEEMCaDA==
More information about the decode
command can be found running simd tx decode --help
.
gRPC
A user can query the x/auth/tx
module using gRPC endpoints.
TxDecode
The TxDecode
endpoint allows to decode a transaction.
cosmos.tx.v1beta1.Service/TxDecode
Example:
grpcurl -plaintext \
-d '{"tx_bytes":"Co8BCowBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEmwKLWNvc21vczFsNnZzcWhoN3Jud3N5cjJreXozampnM3FkdWF6OGd3Z3lsODI3NRItY29zbW9zMTU4c2FsZHlnOHBteHU3Znd2dDBkNng3amVzd3A0Z3d5a2xrNnkzGgwKBXN0YWtlEgMxMDASBhIEEMCaDA=="}' \
localhost:9090 \
cosmos.tx.v1beta1.Service/TxDecode
Example Output:
{
"tx": {
"body": {
"messages": [
{"@type":"/cosmos.bank.v1beta1.MsgSend","amount":[{"denom":"stake","amount":"100"}],"fromAddress":"cosmos1l6vsqhh7rnwsyr2kyz3jjg3qduaz8gwgyl8275","toAddress":"cosmos158saldyg8pmxu7fwvt0d6x7jeswp4gwyklk6y3"}
]
},
"authInfo": {
"fee": {
"gasLimit": "200000"
}
}
}
}
TxEncode
The TxEncode
endpoint allows to encode a transaction.
cosmos.tx.v1beta1.Service/TxEncode
Example:
grpcurl -plaintext \
-d '{"tx": {
"body": {
"messages": [
{"@type":"/cosmos.bank.v1beta1.MsgSend","amount":[{"denom":"stake","amount":"100"}],"fromAddress":"cosmos1l6vsqhh7rnwsyr2kyz3jjg3qduaz8gwgyl8275","toAddress":"cosmos158saldyg8pmxu7fwvt0d6x7jeswp4gwyklk6y3"}
]
},
"authInfo": {
"fee": {
"gasLimit": "200000"
}
}
}}' \
localhost:9090 \
cosmos.tx.v1beta1.Service/TxEncode
Example Output:
{
"txBytes": "Co8BCowBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEmwKLWNvc21vczFsNnZzcWhoN3Jud3N5cjJreXozampnM3FkdWF6OGd3Z3lsODI3NRItY29zbW9zMTU4c2FsZHlnOHBteHU3Znd2dDBkNng3amVzd3A0Z3d5a2xrNnkzGgwKBXN0YWtlEgMxMDASBhIEEMCaDA=="
}
TxDecodeAmino
The TxDecode
endpoint allows to decode an amino transaction.
cosmos.tx.v1beta1.Service/TxDecodeAmino
Example:
grpcurl -plaintext \
-d '{"amino_binary": "KCgWqQpvqKNhmgotY29zbW9zMXRzeno3cDJ6Z2Q3dnZrYWh5ZnJlNHduNXh5dTgwcnB0ZzZ2OWg1Ei1jb3Ntb3MxdHN6ejdwMnpnZDd2dmthaHlmcmU0d241eHl1ODBycHRnNnY5aDUaCwoFc3Rha2USAjEwEhEKCwoFc3Rha2USAjEwEMCaDCIGZm9vYmFy"}' \
localhost:9090 \
cosmos.tx.v1beta1.Service/TxDecodeAmino
Example Output:
{
"aminoJson": "{\"type\":\"cosmos-sdk/StdTx\",\"value\":{\"msg\":[{\"type\":\"cosmos-sdk/MsgSend\",\"value\":{\"from_address\":\"cosmos1tszz7p2zgd7vvkahyfre4wn5xyu80rptg6v9h5\",\"to_address\":\"cosmos1tszz7p2zgd7vvkahyfre4wn5xyu80rptg6v9h5\",\"amount\":[{\"denom\":\"stake\",\"amount\":\"10\"}]}}],\"fee\":{\"amount\":[{\"denom\":\"stake\",\"amount\":\"10\"}],\"gas\":\"200000\"},\"signatures\":null,\"memo\":\"foobar\",\"timeout_height\":\"0\"}}"
}
TxEncodeAmino
The TxEncodeAmino
endpoint allows to encode an amino transaction.
cosmos.tx.v1beta1.Service/TxEncodeAmino
Example:
grpcurl -plaintext \
-d '{"amino_json":"{\"type\":\"cosmos-sdk/StdTx\",\"value\":{\"msg\":[{\"type\":\"cosmos-sdk/MsgSend\",\"value\":{\"from_address\":\"cosmos1tszz7p2zgd7vvkahyfre4wn5xyu80rptg6v9h5\",\"to_address\":\"cosmos1tszz7p2zgd7vvkahyfre4wn5xyu80rptg6v9h5\",\"amount\":[{\"denom\":\"stake\",\"amount\":\"10\"}]}}],\"fee\":{\"amount\":[{\"denom\":\"stake\",\"amount\":\"10\"}],\"gas\":\"200000\"},\"signatures\":null,\"memo\":\"foobar\",\"timeout_height\":\"0\"}}"}' \
localhost:9090 \
cosmos.tx.v1beta1.Service/TxEncodeAmino
Example Output:
{
"amino_binary": "KCgWqQpvqKNhmgotY29zbW9zMXRzeno3cDJ6Z2Q3dnZrYWh5ZnJlNHduNXh5dTgwcnB0ZzZ2OWg1Ei1jb3Ntb3MxdHN6ejdwMnpnZDd2dmthaHlmcmU0d241eHl1ODBycHRnNnY5aDUaCwoFc3Rha2USAjEwEhEKCwoFc3Rha2USAjEwEMCaDCIGZm9vYmFy"
}