链
Ante 装饰器
core/ante 中的 AnteDecorator 类型已重命名为 RedundantRelayDecorator(对应的构造函数也重命名为 NewRedundantRelayDecorator)。因此,在创建 sdk.AnteHandler 类型实例的函数中(例如 NewAnteHandler),变更如下所示:
AnteDecorator 实际上曾被重命名过两次,但你可以在这个 PR中查看最终一次重命名所做的修改。
IBC 应用
Core
modules/core/keeper 中 NewKeeper 函数的 key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名):
modules/core 中的 RegisterRESTRoutes 函数已被移除。
ICS03 - Connection
modules/core/03-connection/keeper 中 NewKeeper 函数的 key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名):
ICS04 - Channel
modules/core/04-channel/types 中的 NewPacketId 函数已重命名为 NewPacketID:
modules/core/04-channel/keeper 中 NewKeeper 函数的 key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名):
ICS20 - Transfer
modules/apps/transfer/keeper 中 NewKeeper 函数的 key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名):
modules/apps/transfer/types 中 GetTransferCoin 函数的 amount 参数现在的类型为 math.Int("cosmossdk.io/math"):
modules/apps/transfer 中的 RegisterRESTRoutes 函数已被移除。
ICS27 - Interchain Accounts
以下位置中NewKeeper 函数的 key 和 msgRouter 参数类型已发生变化:
modules/apps/27-interchain-accounts/controller/keepermodules/apps/27-interchain-accounts/host/keeper
key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名),而 msgRouter 参数现在的类型为 *icatypes.MessageRouter(其中 icatypes 是对 "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/types" 的导入别名):
MessageRouter 接口定义如下:
modules/apps/27-interchain-accounts 中的 RegisterRESTRoutes 函数已被移除。
modules/apps/27-interchain-accounts/host/keeper 中 host 子模块的 NewKeeper 函数新增了一个参数 ics4Wrapper。
这使得 host 子模块能够在 OnChanOpenTry 回调中,为通道重新打开握手正确解包通道版本。
数据包确认中的 Cosmos SDK 消息处理器响应
主机链上消息执行的交易响应构造方式已发生变化。sdk.TxMsgData 中的 Data 字段已被弃用,自 Cosmos SDK 0.46 起,MsgResponses 字段会保存打包为 Any 的消息处理器响应。
对于使用 Cosmos SDK 0.45 及以下版本的链,消息响应的构造方式如下:
OnAcknowledgementPacket 回调中处理确认时,需要根据 txMsgData.Data 是否为空来决定处理消息处理器响应的逻辑。只有使用 Cosmos SDK 0.46 或以上版本的 controller 链,才能编写处理来自 Cosmos SDK 0.46 或以上版本 host 链响应所需的逻辑。
ICS29 - Fee Middleware
modules/apps/29-fee 中 NewKeeper 函数的 key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名):
modules/apps/29-fee 中的 RegisterRESTRoutes 函数已被移除。
IBC 测试包
MockIBCApp 类型已重命名为 IBCApp(对应的构造函数也重命名为 NewIBCApp)。因此带来了以下变化:
testing/mock中*IBCModule的IBCApp字段类型也变更为*IBCApp:
testing/mock中*NewIBCModule的app参数类型也变更为*IBCApp:
MockEmptyAcknowledgement 类型已重命名为 EmptyAcknowledgement(对应的构造函数也重命名为 NewEmptyAcknowledgement)。
testing 中的 TestingApp 接口也经历了一些修改:
GetStakingKeeper函数的返回类型不再是具体类型stakingkeeper.Keeper(其中stakingkeeper是对"github.com/cosmos/cosmos-sdk/x/staking/keeper"的导入别名),而是改为接口ibctestingtypes.StakingKeeper(其中ibctestingtypes是对""github.com/cosmos/ibc-go/v5/testing/types"的导入别名)。更多细节请参见此 PR。StakingKeeper接口定义如下:
LastCommitID函数的返回类型已变更为storetypes.CommitID(其中storetypes是对"github.com/cosmos/cosmos-sdk/store/types"的导入别名)。
git diff:
testing 中 SetupWithGenesisValSet 函数的 powerReduction 参数现在的类型为 math.Int("cosmossdk.io/math"):
testing/simapp 中以下函数的 accAmt 参数现在的类型为 math.Int("cosmossdk.io/math"):
AddTestAddrsFromPubKeys,AddTestAddrs- 以及
AddTestAddrsIncremental
testing/mock 中的 RegisterRESTRoutes 函数已被移除。
Relayers
- 此版本没有相关变更。
IBC 轻客户端
ICS02 - Client
modules/core/02-client/keeper 中 NewKeeper 函数的 key 参数现在的类型为 storetypes.StoreKey(其中 storetypes 是对 "github.com/cosmos/cosmos-sdk/store/types" 的导入别名):
This document is intended to highlight significant changes which may require more information than presented in the CHANGELOG. Any changes that must be done by a user of ibc-go should be documented here. 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 to bump the version number on major releases.
Chains
Ante decorator
TheAnteDecorator type in core/ante has been renamed to RedundantRelayDecorator (and the corresponding constructor function to NewRedundantRelayDecorator). Therefore in the function that creates the instance of the sdk.AnteHandler type (e.g. NewAnteHandler) the change would be like this:
AnteDecorator was actually renamed twice, but in this PR you can see the changes made for the final rename.
IBC Apps
Core
Thekey parameter of the NewKeeper function in modules/core/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
RegisterRESTRoutes function in modules/core has been removed.
ICS03 - Connection
Thekey parameter of the NewKeeper function in modules/core/03-connection/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
ICS04 - Channel
The functionNewPacketId in modules/core/04-channel/types has been renamed to NewPacketID:
key parameter of the NewKeeper function in modules/core/04-channel/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
ICS20 - Transfer
Thekey parameter of the NewKeeper function in modules/apps/transfer/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
amount parameter of function GetTransferCoin in modules/apps/transfer/types is now of type math.Int ("cosmossdk.io/math"):
RegisterRESTRoutes function in modules/apps/transfer has been removed.
ICS27 - Interchain Accounts
Thekey and msgRouter parameters of the NewKeeper functions in
modules/apps/27-interchain-accounts/controller/keeper- and
modules/apps/27-interchain-accounts/host/keeper
key parameter is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"), and the msgRouter parameter is now of type *icatypes.MessageRouter (where icatypes is an import alias for "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/types"):
MessageRouter interface is defined as:
RegisterRESTRoutes function in modules/apps/27-interchain-accounts has been removed.
An additional parameter, ics4Wrapper has been added to the host submodule NewKeeper function in modules/apps/27-interchain-accounts/host/keeper.
This allows the host submodule to correctly unwrap the channel version for channel reopening handshakes in the OnChanOpenTry callback.
Cosmos SDK message handler responses in packet acknowledgement
The construction of the transaction response of a message execution on the host chain has changed. TheData field in the sdk.TxMsgData has been deprecated and since Cosmos SDK 0.46 the MsgResponses field contains the message handler responses packed into Anys.
For chains on Cosmos SDK 0.45 and below, the message response was constructed like this:
OnAcknowledgementPacket callback of a custom ICA controller module, then depending on whether txMsgData.Data is empty or not, the logic to handle the message handler response will be different. Only controller chains on Cosmos SDK 0.46 or above will be able to write the logic needed to handle the response from a host chain on Cosmos SDK 0.46 or above.
ICS29 - Fee Middleware
Thekey parameter of the NewKeeper function in modules/apps/29-fee is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):
RegisterRESTRoutes function in modules/apps/29-fee has been removed.
IBC testing package
TheMockIBCApp type has been renamed to IBCApp (and the corresponding constructor function to NewIBCApp). This has resulted therefore in:
- The
IBCAppfield of the*IBCModuleintesting/mockto change its type as well to*IBCApp:
- The
appparameter to*NewIBCModuleintesting/mockto change its type as well to*IBCApp:
MockEmptyAcknowledgement type has been renamed to EmptyAcknowledgement (and the corresponding constructor function to NewEmptyAcknowledgement).
The TestingApp interface in testing has gone through some modifications:
- The return type of the function
GetStakingKeeperis not the concrete typestakingkeeper.Keeperanymore (wherestakingkeeperis an import alias for"github.com/cosmos/cosmos-sdk/x/staking/keeper"), but it has been changed to the interfaceibctestingtypes.StakingKeeper(whereibctestingtypesis an import alias for""github.com/cosmos/ibc-go/v5/testing/types"). See this PR for more details. TheStakingKeeperinterface is defined as:
- The return type of the function
LastCommitIDhas changed tostoretypes.CommitID(wherestoretypesis an import alias for"github.com/cosmos/cosmos-sdk/store/types").
git diff for more details:
powerReduction parameter of the function SetupWithGenesisValSet in testing is now of type math.Int ("cosmossdk.io/math"):
accAmt parameter of the functions
AddTestAddrsFromPubKeys,AddTestAddrs- and
AddTestAddrsIncremental
testing/simapp are now of type math.Int ("cosmossdk.io/math"):
RegisterRESTRoutes function in testing/mock has been removed.
Relayers
- No relevant changes were made in this release.
IBC Light Clients
ICS02 - Client
Thekey parameter of the NewKeeper function in modules/core/02-client/keeper is now of type storetypes.StoreKey (where storetypes is an import alias for "github.com/cosmos/cosmos-sdk/store/types"):