v8.0.0
of ibc-go.
There are four sections based on the four potential user groups of this document:
Note: ibc-go supports golang semantic versioning and therefore all imports must be updated on major version releases.
Chains
The type of thePortKeeper
field of the IBC keeper have been changed to *portkeeper.Keeper
:
app.go
.
An extra parameter totalEscrowed
of type sdk.Coins
has been added to transfer module’s NewGenesisState
function. This parameter specifies the total amount of tokens that are in the module’s escrow accounts.
Cosmos SDK v0.50 upgrade
Versionv8.0.0
of ibc-go upgrades to Cosmos SDK v0.50. Please follow the Cosmos SDK v0.50 upgrading guide to account for its API breaking changes.
Authority
An authority identifier (e.g. an address) needs to be passed in theNewKeeper
functions of the following keepers:
MsgUpdateParams
).
Testing package
- The function
SetupWithGenesisAccounts
has been removed. - The function
RelayPacketWithResults
has been added. This function returns the result of the packet receive transaction, the acknowledgement written on the receiving chain, an error if a relay step fails or the packet commitment does not exist on either chain.
Params migration
Params are now self managed in the following submodules: Each module has a correspondingMsgUpdateParams
message with a Params
which can be specified in full to update the modules’ Params
.
Legacy params subspaces must still be initialised in app.go in order to successfully migrate from `x/params“ to the new self-contained approach. See reference this for reference.
For new chains which do not rely on migration of parameters from x/params
, an expected interface has been added for each module. This allows chain developers to provide nil
as the legacySubspace
argument to NewKeeper
functions.
Governance V1 migration
Proposals have been migrated to gov v1 messages (see #4620). The proposalClientUpdateProposal
has been deprecated and MsgRecoverClient
should be used instead. Likewise, the proposal UpgradeProposal
has been deprecated and MsgIBCSoftwareUpgrade
should be used instead. Both proposals will be removed in the next major release.
MsgRecoverClient
and MsgIBCSoftwareUpgrade
will only be allowed to be executed if the signer is the authority designated at the time of instantiating the IBC keeper. So please make sure that the correct authority is provided to the IBC keeper.
Remove the UpgradeProposalHandler
and UpdateClientProposalHandler
from the BasicModuleManager
:
ClientUpdateProposal
) will be made for v8, but chains should use MsgRecoverClient
only afterwards to avoid in-flight client recovery failing when upgrading to v9. See this issue for more information.
Please note that ibc-go offers facilities to test an ibc-go upgrade:
- All e2e tests of the repository can be run with custom Docker chain images.
- An importable workflow that can be used from any other repository to test chain upgrades.
Transfer migration
An automatic migration handler is configured in the transfer module to set the denomination metadata for the IBC denominations of all vouchers minted by the transfer module.IBC Apps
ICS20 - Transfer
- The function
IsBound
has been renamed tohasCapability
and made unexported.
ICS27 - Interchain Accounts
- Functions
SerializeCosmosTx
andDeserializeCosmosTx
now accept an extra parameterencoding
of typestring
that specifies the format in which the transaction messages are marshaled. Both protobuf and proto3 JSON formats are supported. - The function
IsBound
of controller submodule has been renamed tohasCapability
and made unexported. - The function
IsBound
of host submodule has been renamed tohasCapability
and made unexported.
Relayers
- Getter functions in
MsgChannelOpenInitResponse
,MsgChannelOpenTryResponse
,MsgTransferResponse
,MsgRegisterInterchainAccountResponse
andMsgSendTxResponse
have been removed. The fields can be accessed directly. channeltypes.EventTypeTimeoutPacketOnClose
(wherechanneltypes
is an import alias for"github.com/cosmos/ibc-go/v8/modules/core/04-channel"
) has been removed, since core IBC does not emit any event with this key.- Attribute with key
counterparty_connection_id
has been removed from event with keyconnectiontypes.EventTypeConnectionOpenInit
(whereconnectiontypes
is an import alias for"github.com/cosmos/ibc-go/v8/modules/core/03-connection/types"
) and attribute with keycounterparty_channel_id
has been removed from event with keychanneltypes.EventTypeChannelOpenInit
(wherechanneltypes
is an import alias for"github.com/cosmos/ibc-go/v8/modules/core/04-channel"
) since both (counterparty connection ID and counterparty channel ID) are empty onConnectionOpenInit
andChannelOpenInit
respectively. - As part of the migration to governance V1 messages the following changes in events have been made:
IBC Light Clients
- Functions
Pretty
andString
of typeMerklePath
have been removed.