Active Channels
enable this functionality.
When an Interchain Account is registered using MsgRegisterInterchainAccount
, a new channel is created on a particular port. During the OnChanOpenAck
and OnChanOpenConfirm
steps (on controller & host chain respectively) the Active Channel
for this interchain account is stored in state.
It is possible to create a new channel using the same controller chain portID if the previously set Active Channel
is now in a CLOSED
state. This channel creation can be initialized programmatically by sending a new MsgChannelOpenInit
message like so:
Active Channel
is in a CLOSED
state. This is done by initiating the channel handshake on the controller chain using the same portID associated with the interchain account in question.
It is important to note that once a channel has been opened for a given interchain account, new channels can not be opened for this account until the currently set Active Channel
is set to CLOSED
.
Future improvements
Future versions of the ICS-27 protocol and the Interchain Accounts module will likely use a new channel type that provides ordering of packets without the channel closing in the event of a packet timing out, thus removing the need forActive Channels
entirely.
The following is a list of issues which will provide the infrastructure to make this possible: