v6.0.0
UPDATES
- 20th December 2022: This release is NOT recommended since it uses a version of Cosmos SDK (v0.46.6) that has been retracted. Please use version >= 6.1.0.
This release introduces a series of improvements to ICS-27 Interchain Accounts (ICA).
We appreciate very much the feedback that we have got since the initial release of ICA in ibc-go v3.0.0 and we have recognized that the lack of a default underlying app (aka authentication module) has been one the primary reasons for the slow adoption of ICA (i.e. lack of controller chains in mainnet). With the release of Cosmos SDK v0.46.x we have also realized the need to separate authentication and application logic: the new design of x/gov
and x/group
allow for arbitrary message passing via the message router and these modules can act as authentication modules with respect to interchain accounts integration.
ibc-go v6.0.0 includes changes to ICA that makes integrating the controller chain functionality easier. It introduces a new message server to the controller submodule and, once application callbacks are implemented (see ADR-008), all use cases for ICA will be supported by the message server without the need for an underlying app and we will incrementally move towards deprecation of the public APIs (this and this).
To minimize disruption to developers working on the original design of the ICS-27 controller module, all changes are made made in a backwards compatible fashion. The only difference is in terms of how the channel capability is claimed. Instead of the underlying app claiming the channel capability, it is now the controller submodule who will claim it. Any logic associated with claiming the capability should be now removed from the OnChanOpenInit
callback of the underlying app. See ADR-009 for more information on these changes.
We present here a summary of the most relevant changes, please see the v6.0.0 changelog for the full set of changes included in this release.
dependencies
- Cosmos SDK has been bumped to v0.46.6.
core/03-connection
- A gRPC query endpoint and CLI have been added to retrieve the 03-connection params.
core/04-channel
- The signature of
SendPacket
has been modified to take in all necessary arguments to construct the packet, rather than taking in an entire packet. The generated packet sequence is returned by theSendPacket
function.
apps/transfer
- The public
SendTransfer
function has been removed in favor of a privatesendTransfer
function. All IBC transfers must be initiated withMsgTransfer
. - The packet sequence has been added to
MsgTransferResponse
. - An optional
memo
field has been added toFungibleTokenPacketData
andMsgTransfer
. Token transfers that include a non-empty memo field will fail if the receiver chain is not running a version of ibc-go that also supports thememo
field. Please read this blog post for more information.
apps/27-interchain-accounts
- A new
MsgServer
has been added to the controller submodule that exposes two RPC endpoints:RegisterInterchainAccount
andSendTx
. Corresponding CLI commands have also been added. - The controller submodule now claims the channel capability in
OnChanOpenInit
instead of the underlying app. - An upgrade migration handler has been added to controller submodule that reassigns ownership of the channel capability from the underlying app to the controller module.
- An ICS-27 module automatic migration has been added to assert ownership of channel capabilities and check that the upgrade handler channel capability migration has been performed successfully. The ICS-27 module consensus version has been bumped from 1 to 2.
- The default for the host param
allow_messages
has changed to allow all host messages. - A new CLI command has been added to the host submodule to generate ICS-27 packet data. The generated packet data can then be used as input for the controller submodule CLI command to send a transaction to the host chain.
- The check in
OnChanOpenTry
callback on the host submodule that required the port ID on the controller chain to be prefixed byicacontroller-
has been removed. Thanks to @LaurensKubat and @catShaark for this recommendation.
Special thanks to our external contributors on this release: @Anmol1696 @georgelombardi97 @alizahidraja @agouin @nicolaslara @LaurensKubat @alpe
To learn more about ibc-go versioning, please read our RELEASES.md.
IMPORTANT: Please read the migration guides for any versions of ibc-go that you might be going through when upgrading to this version. For example: if you upgrade from the IBC module contained in the Cosmos SDK 0.42.0 to SDK v0.46.6 and ibc-go v6.0.0, please follow: