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 in comparison to v6.0.0-alpha1. Please see the v6.0.0 changelog for the full set of changes included in this pre-release.
dependencies
- Cosmos SDK has been bumped to v0.46.2.
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
- 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
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.2 and ibc-go v6.0.0-beta1, please follow: