Channel Close Handshake
The channel close handshake involves two steps: init and confirm.
Table of Contents
Channel Close Init
Use the chan-close-init
command to initialize the closure of a channel.
DESCRIPTION:
Initiate the closing of a channel (ChannelCloseInit)
USAGE:
hermes tx chan-close-init --dst-chain <DST_CHAIN_ID> --src-chain <SRC_CHAIN_ID> --dst-connection <DST_CONNECTION_ID> --dst-port <DST_PORT_ID> --src-port <SRC_PORT_ID> --dst-channel <DST_CHANNEL_ID> --src-channel <SRC_CHANNEL_ID>
OPTIONS:
-h, --help Print help information
REQUIRED:
--dst-chain <DST_CHAIN_ID>
Identifier of the destination chain
--dst-channel <DST_CHANNEL_ID>
Identifier of the destination channel (required) [aliases: dst-chan]
--dst-connection <DST_CONNECTION_ID>
Identifier of the destination connection [aliases: dst-conn]
--dst-port <DST_PORT_ID>
Identifier of the destination port
--src-chain <SRC_CHAIN_ID>
Identifier of the source chain
--src-channel <SRC_CHANNEL_ID>
Identifier of the source channel (required) [aliases: src-chan]
--src-port <SRC_PORT_ID>
Identifier of the source port
Example
hermes tx chan-close-init --dst-chain ibc-0 --src-chain ibc-1 --dst-connection connection-0 --dst-port transfer --src-port transfer --dst-channel channel-0 --src-channel channel-1
Success: CloseInitChannel(
CloseInit(
Attributes {
height: Height {
revision: 0,
height: 77,
},
port_id: PortId(
"transfer",
),
channel_id: Some(
ChannelId(
"channel-0",
),
),
connection_id: ConnectionId(
"connection-0",
),
counterparty_port_id: PortId(
"transfer",
),
counterparty_channel_id: Some(
ChannelId(
"channel-1",
),
),
},
),
)
Channel Close Confirm
Use the chan-close-confirm
command to confirm the closure of a channel.
DESCRIPTION:
Confirm the closing of a channel (ChannelCloseConfirm)
USAGE:
hermes tx chan-close-confirm --dst-chain <DST_CHAIN_ID> --src-chain <SRC_CHAIN_ID> --dst-connection <DST_CONNECTION_ID> --dst-port <DST_PORT_ID> --src-port <SRC_PORT_ID> --dst-channel <DST_CHANNEL_ID> --src-channel <SRC_CHANNEL_ID>
OPTIONS:
-h, --help Print help information
REQUIRED:
--dst-chain <DST_CHAIN_ID>
Identifier of the destination chain
--dst-channel <DST_CHANNEL_ID>
Identifier of the destination channel (required) [aliases: dst-chan]
--dst-connection <DST_CONNECTION_ID>
Identifier of the destination connection [aliases: dst-conn]
--dst-port <DST_PORT_ID>
Identifier of the destination port
--src-chain <SRC_CHAIN_ID>
Identifier of the source chain
--src-channel <SRC_CHANNEL_ID>
Identifier of the source channel (required) [aliases: src-chan]
--src-port <SRC_PORT_ID>
Identifier of the source port
Example
hermes tx chan-close-confirm --dst-chain ibc-1 --src-chain ibc-0 --dst-connection connection-1 --dst-port transfer --src-port transfer --dst-channel channel-1 --src-channel channel-0
Success: CloseConfirmChannel(
CloseConfirm(
Attributes {
height: Height {
revision: 1,
height: 551,
},
port_id: PortId(
"transfer",
),
channel_id: Some(
ChannelId(
"channel-1",
),
),
connection_id: ConnectionId(
"connection-1",
),
counterparty_port_id: PortId(
"transfer",
),
counterparty_channel_id: Some(
ChannelId(
"channel-0",
),
),
},
),
)
NOTE: The cosmos-sdk
transfer module implementation does not allow the user (hermes
in this case) to initiate the closing of channels.
Therefore, when using the Gaia release image, the chan-close-init
command
fails as the MsgChannelCloseInit
message included in the transaction is rejected.
To be able to test channel closure, you need to patch your gaia deployments.