Connection
Table of Contents
Establish Connection
Use the create connection
command to create a new connection.
DESCRIPTION:
Create a new connection between two chains
USAGE:
hermes create connection [OPTIONS] --a-chain <A_CHAIN_ID> --b-chain <B_CHAIN_ID>
hermes create connection [OPTIONS] --a-chain <A_CHAIN_ID> --a-client <A_CLIENT_ID> --b-client <B_CLIENT_ID>
OPTIONS:
--delay <DELAY> Delay period parameter for the new connection (seconds) [default: 0]
-h, --help Print help information
FLAGS:
--a-chain <A_CHAIN_ID> Identifier of the side `a` chain for the new connection
--a-client <A_CLIENT_ID> Identifier of client hosted on chain `a`; default: None (creates
a new client)
--b-chain <B_CHAIN_ID> Identifier of the side `b` chain for the new connection
--b-client <B_CLIENT_ID> Identifier of client hosted on chain `b`; default: None (creates
a new client)
Examples
New connection over new clients
Create a new connection between ibc-0
and ibc-1
over new clients:
hermes create connection --a-chain ibc-0 --b-chain ibc-1
🥂 ibc-0 => OpenInitConnection(
OpenInit(
Attributes {
height: Height { revision: 0, height: 4073 },
connection_id: Some(
ConnectionId(
"connection-8",
),
),
client_id: ClientId(
"07-tendermint-8",
),
counterparty_connection_id: None,
counterparty_client_id: ClientId(
"07-tendermint-8",
),
},
),
)
🥂 ibc-1 => OpenTryConnection(
OpenTry(
Attributes {
height: Height { revision: 1, height: 4069 },
connection_id: Some(
ConnectionId(
"connection-8",
),
),
client_id: ClientId(
"07-tendermint-8",
),
counterparty_connection_id: Some(
ConnectionId(
"connection-8",
),
),
counterparty_client_id: ClientId(
"07-tendermint-8",
),
},
),
)
🥂 ibc-0 => OpenAckConnection(
OpenAck(
Attributes {
height: Height { revision: 0, height: 4081 },
connection_id: Some(
ConnectionId(
"connection-8",
),
),
client_id: ClientId(
"07-tendermint-8",
),
counterparty_connection_id: Some(
ConnectionId(
"connection-8",
),
),
counterparty_client_id: ClientId(
"07-tendermint-8",
),
},
),
)
🥂 ibc-1 => OpenConfirmConnection(
OpenConfirm(
Attributes {
height: Height { revision: 1, height: 4073 },
connection_id: Some(
ConnectionId(
"connection-8",
),
),
client_id: ClientId(
"07-tendermint-8",
),
counterparty_connection_id: Some(
ConnectionId(
"connection-8",
),
),
counterparty_client_id: ClientId(
"07-tendermint-8",
),
},
),
)
🥂🥂🥂 Connection handshake finished for [Connection {
delay_period: 0s,
a_side: ConnectionSide {
chain: ProdChainHandle {
chain_id: ChainId {
id: "ibc-0",
version: 0,
},
runtime_sender: Sender { .. },
},
client_id: ClientId(
"07-tendermint-8",
),
connection_id: ConnectionId(
"connection-8",
),
},
b_side: ConnectionSide {
chain: ProdChainHandle {
chain_id: ChainId {
id: "ibc-1",
version: 1,
},
runtime_sender: Sender { .. },
},
client_id: ClientId(
"07-tendermint-8",
),
connection_id: ConnectionId(
"connection-8",
),
},
}]
Success: Connection {
delay_period: 0s,
a_side: ConnectionSide {
chain: ProdChainHandle {
chain_id: ChainId {
id: "ibc-0",
version: 0,
},
runtime_sender: Sender { .. },
},
client_id: ClientId(
"07-tendermint-8",
),
connection_id: ConnectionId(
"connection-8",
),
},
b_side: ConnectionSide {
chain: ProdChainHandle {
chain_id: ChainId {
id: "ibc-1",
version: 1,
},
runtime_sender: Sender { .. },
},
client_id: ClientId(
"07-tendermint-8",
),
connection_id: ConnectionId(
"connection-8",
),
},
}
New connection over existing clients
Create a new connection between ibc-0
and ibc-1
over existing clients,
both with client id 07-tendermint-0
:
hermes create connection --a-chain ibc-0 --a-client 07-tendermint-0 --b-client 07-tendermint-0
Notice that one can omit the destination chain parameter, as Hermes will automatically
figure it out by looking up the given client on ibc-0
.
Non-zero Delay Connection
A connection can be created with a delay period parameter. This parameter specifies a period of time that must elpase after a successful client state update and before a packet with proofs using its commitment root can pe processed on chain. For more information see how packet delay works and the connection delay specification.