From f8fc0b8f70cb4f9099eb73d7b82798638c24b45c Mon Sep 17 00:00:00 2001 From: dylanhuang Date: Wed, 31 Jan 2024 10:04:27 +0800 Subject: [PATCH] fix: appHash mismatch causes by channelsMap (#385) --- x/ibc/endblock.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/x/ibc/endblock.go b/x/ibc/endblock.go index b56ea2d9d..670ee5f7f 100644 --- a/x/ibc/endblock.go +++ b/x/ibc/endblock.go @@ -43,22 +43,25 @@ func closeSideChainChannels(ctx sdk.Context, k Keeper) sdk.Events { govChannelId := sdk.ChannelID(gov.ProposalTypeManageChanPermission) permissions := k.sideKeeper.GetChannelSendPermissions(ctx, id) channels := k.sideKeeper.Config().ChannelIDs() - channelsMap := make(map[sdk.ChannelID]sdk.ChannelPermission) - for _, channelId := range channels { - channelsMap[channelId] = permissions[channelId] - } + // mirror, mirrorSync channel was enabled by BEP84(https://github.com/bnb-chain/BEPs/blob/master/BEPs/BEP84.md) // Those channels were bsc side channels, so they would not be in the bc store. - channelsMap[mirrorChannelID] = sdk.ChannelAllow - channelsMap[mirrorSyncChannelID] = sdk.ChannelAllow + if _, exist := permissions[mirrorChannelID]; !exist { + channels = append(channels, mirrorChannelID) + permissions[mirrorChannelID] = sdk.ChannelAllow + } + if _, exist := permissions[mirrorSyncChannelID]; !exist { + channels = append(channels, mirrorSyncChannelID) + permissions[mirrorSyncChannelID] = sdk.ChannelAllow + } // close all side chain channels except gov channel - for channelId, permission := range channelsMap { + for _, channelId := range channels { if channelId == govChannelId { // skip gov channel continue } - if permission == sdk.ChannelForbidden { + if permissions[channelId] == sdk.ChannelForbidden { // skip forbidden channel continue }