diff --git a/x/ibc/04-channel/keeper/packet.go b/x/ibc/04-channel/keeper/packet.go index 8b1cad2111..e14e51579a 100644 --- a/x/ibc/04-channel/keeper/packet.go +++ b/x/ibc/04-channel/keeper/packet.go @@ -246,6 +246,13 @@ func (k Keeper) PacketExecuted( } if len(acknowledgement) > 0 || channel.Ordering == types.UNORDERED { + if _, found := k.GetPacketAcknowledgement(ctx, packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()); found { + return sdkerrors.Wrapf( + types.ErrInvalidPacket, + "packet sequence (%d) already has been received", packet.GetSequence(), + ) + } + k.SetPacketAcknowledgement( ctx, packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence(), types.CommitAcknowledgement(acknowledgement),