Packet Tx Commands
Table of Contents
Fungible token transfer
Use the tx ft-transfer
command to send ICS-20 fungible token transfer packets.
NOTE: This command is mainly used for testing the packet features of Hermes.
DESCRIPTION:
Send a fungible token transfer test transaction (ICS20 MsgTransfer)
USAGE:
hermes tx ft-transfer [OPTIONS] --dst-chain <DST_CHAIN_ID> --src-chain <SRC_CHAIN_ID> --src-port <SRC_PORT_ID> --src-channel <SRC_CHANNEL_ID> --amount <AMOUNT>
OPTIONS:
--denom <DENOM>
Denomination of the coins to send [default: samoleans]
-h, --help
Print help information
--key-name <KEY_NAME>
Use the given signing key name (default: `key_name` config)
--memo <MEMO>
Optional memo included in the transfer
--number-msgs <NUMBER_MSGS>
Number of messages to send
--receiver <RECEIVER>
The account address on the destination chain which will receive the tokens. If omitted,
the relayer's wallet on the destination chain will be used
--timeout-height-offset <TIMEOUT_HEIGHT_OFFSET>
Timeout in number of blocks since current [default: 0]
--timeout-seconds <TIMEOUT_SECONDS>
Timeout in seconds since current [default: 0]
REQUIRED:
--amount <AMOUNT>
Amount of coins (samoleans, by default) to send (e.g. `100000`)
--dst-chain <DST_CHAIN_ID>
Identifier of the destination chain
--src-chain <SRC_CHAIN_ID>
Identifier of the source chain
--src-channel <SRC_CHANNEL_ID>
Identifier of the source channel [aliases: src-chan]
--src-port <SRC_PORT_ID>
Identifier of the source port
Example
Send two transfer packets from the transfer
module and channel-0
of ibc-0
to ibc-1
. Each transfer if for 9999
samoleans
(default denomination) and a timeout offset of 10
blocks. The transfer fee is paid by the associated account on ibc-1
.
hermes tx ft-transfer --timeout-height-offset 1000 --number-msgs 2 --dst-chain ibc-1 --src-chain ibc-0 --src-port transfer --src-channel channel-0 --amount 9999
Success: [
SendPacket(
SendPacket {
height: Height {
revision: 0,
height: 431,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(4),
},
),
SendPacket(
SendPacket {
height: Height {
revision: 0,
height: 431,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(5),
},
),
]
The transfer packets are stored on ibc-0
and can be relayed.
To send transfer packets with a custom receiver address use the
--receiver
flag.
hermes tx ft-transfer --timeout-height-offset 1000 --number-msgs 1 --receiver board:1938586739 --dst-chain ibc-1 --src-chain ibc-0 --src-port transfer --src-channel channel-0 --amount 9999
Success: [
SendPacket(
SendPacket {
height: Height {
revision: 0,
height: 546,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(7),
},
),
]
Relay receive and timeout packets
Use the tx packet-recv
command to relay the packets sent but not yet received. If the packets sent have timed out then a timeout packet is sent to the source chain.
DESCRIPTION:
Relay receive or timeout packets
USAGE:
hermes tx packet-recv [OPTIONS] --dst-chain <DST_CHAIN_ID> --src-chain <SRC_CHAIN_ID> --src-port <SRC_PORT_ID> --src-channel <SRC_CHANNEL_ID>
OPTIONS:
-h, --help
Print help information
--packet-data-query-height <PACKET_DATA_QUERY_HEIGHT>
Exact height at which the packet data is queried via block_results RPC
--packet-sequences <PACKET_SEQUENCES>
Sequences of packets to be cleared on `dst-chain`. Either a single sequence or a range
of sequences can be specified. If not provided, all pending recv or timeout packets will
be cleared. Each element of the comma-separated list must be either a single sequence or
a range of sequences. Example: `1,10..20` will clear packets with sequences 1, 10, 11,
..., 20
REQUIRED:
--dst-chain <DST_CHAIN_ID> Identifier of the destination chain
--src-chain <SRC_CHAIN_ID> Identifier of the source chain
--src-channel <SRC_CHANNEL_ID> Identifier of the source channel [aliases: src-chan]
--src-port <SRC_PORT_ID> Identifier of the source port
Example
Send the two transfer packets to the ibc-1
module bound to the transfer
port and the channel-0
's counterparty.
NOTE: Hermes prepends a Client Update
message before the Receive
messages.
hermes tx packet-recv --dst-chain ibc-1 --src-chain ibc-0 --src-port transfer --src-channel channel-0
Success: [
UpdateClient(
UpdateClient {
common: Attributes {
height: Height {
revision: 1,
height: 439,
},
client_id: ClientId(
"07-tendermint-1",
),
client_type: Tendermint,
consensus_height: Height {
revision: 0,
height: 449,
},
},
header: Some(
Tendermint(...),
),
},
),
WriteAcknowledgement(
WriteAcknowledgement {
height: Height {
revision: 1,
height: 439,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(4),
ack: [
123,
34,
114,
101,
115,
117,
108,
116,
34,
58,
34,
65,
81,
61,
61,
34,
125,
],
},
),
WriteAcknowledgement(
WriteAcknowledgement {
height: Height {
revision: 1,
height: 439,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(5),
ack: [
123,
34,
114,
101,
115,
117,
108,
116,
34,
58,
34,
65,
81,
61,
61,
34,
125,
],
},
),
]
Both packets have been relayed to ibc-1
and acknowledged.
Relay acknowledgment packets
Use the tx packet-ack
command to relay acknowledgments to the original source of the packets.
DESCRIPTION:
Relay acknowledgment packets
USAGE:
hermes tx packet-ack [OPTIONS] --dst-chain <DST_CHAIN_ID> --src-chain <SRC_CHAIN_ID> --src-port <SRC_PORT_ID> --src-channel <SRC_CHANNEL_ID>
OPTIONS:
-h, --help
Print help information
--packet-data-query-height <PACKET_DATA_QUERY_HEIGHT>
Exact height at which the packet data is queried via block_results RPC
--packet-sequences <PACKET_SEQUENCES>
Sequences of packets to be cleared on `dst-chain`. Either a single sequence or a range
of sequences can be specified. If not provided, all pending ack packets will be cleared.
Each element of the comma-separated list must be either a single sequence or a range of
sequences. Example: `1,10..20` will clear packets with sequences 1, 10, 11, ..., 20
REQUIRED:
--dst-chain <DST_CHAIN_ID> Identifier of the destination chain
--src-chain <SRC_CHAIN_ID> Identifier of the source chain
--src-channel <SRC_CHANNEL_ID> Identifier of the source channel [aliases: src-chan]
--src-port <SRC_PORT_ID> Identifier of the source port
Example
Send the acknowledgments to the ibc-0
module bound to the transfer
port and the channel-1
's counterparty.
NOTE: The relayer prepends a client update message before the acknowledgments.
hermes tx packet-ack --dst-chain ibc-0 --src-chain ibc-1 --src-port transfer --src-channel channel-1
Success: [
UpdateClient(
UpdateClient {
common: Attributes {
height: Height {
revision: 0,
height: 495,
},
client_id: ClientId(
"07-tendermint-0",
),
client_type: Tendermint,
consensus_height: Height {
revision: 1,
height: 483,
},
},
header: Some(
Tendermint(...),
),
},
),
AcknowledgePacket(
AcknowledgePacket {
height: Height {
revision: 0,
height: 495,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(4),
},
),
AcknowledgePacket(
AcknowledgePacket {
height: Height {
revision: 0,
height: 495,
},
packet: PortId("transfer") ChannelId("channel-0") Sequence(5),
},
),
]
Both acknowledgments have been received on ibc-0
.