Skip to content

Commit

Permalink
Revert "refactor: use event service in transfer mod (#7725)"
Browse files Browse the repository at this point in the history
This reverts commit 0e72d08.
  • Loading branch information
gjermundgaraba committed Feb 7, 2025
1 parent 7983ff5 commit ee661b7
Show file tree
Hide file tree
Showing 8 changed files with 174 additions and 169 deletions.
13 changes: 8 additions & 5 deletions modules/apps/transfer/ibc_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/telemetry"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
Expand Down Expand Up @@ -180,9 +181,7 @@ func (im IBCModule) OnRecvPacket(
// we are explicitly wrapping this emit event call in an anonymous function so that
// the packet data is evaluated after it has been assigned a value.
defer func() {
if err := im.keeper.EmitOnRecvPacketEvent(ctx, data, ack, ackErr); err != nil {
ack = channeltypes.NewErrorAcknowledgement(err)
}
events.EmitOnRecvPacketEvent(ctx, data, ack, ackErr)
}()

data, ackErr = types.UnmarshalPacketData(packet.GetData(), channelVersion, "")
Expand Down Expand Up @@ -261,7 +260,9 @@ func (im IBCModule) OnAcknowledgementPacket(
}
}

return im.keeper.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
events.EmitOnAcknowledgementPacketEvent(ctx, data, ack)

return nil
}

// OnTimeoutPacket implements the IBCModule interface
Expand All @@ -287,7 +288,9 @@ func (im IBCModule) OnTimeoutPacket(
}
}

return im.keeper.EmitOnTimeoutEvent(ctx, data)
events.EmitOnTimeoutEvent(ctx, data)

return nil
}

// OnChanUpgradeInit implements the IBCModule interface
Expand Down
151 changes: 151 additions & 0 deletions modules/apps/transfer/internal/events/events.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
package events

import (
"context"
"encoding/json"
"strconv"

sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
)

// EmitTransferEvent emits a ibc transfer event on successful transfers.
func EmitTransferEvent(ctx context.Context, sender, receiver string, tokens types.Tokens, memo string, forwardingHops []types.Hop) {
sdkCtx := sdk.UnwrapSDKContext(ctx)
tokensStr := mustMarshalJSON(tokens)
forwardingHopsStr := mustMarshalJSON(forwardingHops)

sdkCtx.EventManager().EmitEvents(sdk.Events{
sdk.NewEvent(
types.EventTypeTransfer,
sdk.NewAttribute(types.AttributeKeySender, sender),
sdk.NewAttribute(types.AttributeKeyReceiver, receiver),
sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
sdk.NewAttribute(types.AttributeKeyMemo, memo),
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
),
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
),
})
}

// EmitOnRecvPacketEvent emits a fungible token packet event in the OnRecvPacket callback
func EmitOnRecvPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack ibcexported.Acknowledgement, ackErr error) {
tokensStr := mustMarshalJSON(packetData.Tokens)
forwardingHopStr := mustMarshalJSON(packetData.Forwarding.Hops)

eventAttributes := []sdk.Attribute{
sdk.NewAttribute(types.AttributeKeySender, packetData.Sender),
sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopStr),
sdk.NewAttribute(types.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
}

if ackErr != nil {
eventAttributes = append(eventAttributes, sdk.NewAttribute(types.AttributeKeyAckError, ackErr.Error()))
}

sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917

sdkCtx.EventManager().EmitEvents(sdk.Events{
sdk.NewEvent(
types.EventTypePacket,
eventAttributes...,
),
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
),
})
}

// EmitOnAcknowledgementPacketEvent emits a fungible token packet event in the OnAcknowledgementPacket callback
func EmitOnAcknowledgementPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack channeltypes.Acknowledgement) {
tokensStr := mustMarshalJSON(packetData.Tokens)
forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
sdkCtx.EventManager().EmitEvents(sdk.Events{
sdk.NewEvent(
types.EventTypePacket,
sdk.NewAttribute(sdk.AttributeKeySender, packetData.Sender),
sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
sdk.NewAttribute(types.AttributeKeyAck, ack.String()),
),
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
),
})

switch resp := ack.Response.(type) {
case *channeltypes.Acknowledgement_Result:
sdkCtx.EventManager().EmitEvent(
sdk.NewEvent(
types.EventTypePacket,
sdk.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)),
),
)
case *channeltypes.Acknowledgement_Error:
sdkCtx.EventManager().EmitEvent(
sdk.NewEvent(
types.EventTypePacket,
sdk.NewAttribute(types.AttributeKeyAckError, resp.Error),
),
)
}
}

// EmitOnTimeoutEvent emits a fungible token packet event in the OnTimeoutPacket callback
func EmitOnTimeoutEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2) {
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
tokensStr := mustMarshalJSON(packetData.Tokens)
forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)

sdkCtx.EventManager().EmitEvents(sdk.Events{
sdk.NewEvent(
types.EventTypeTimeout,
sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Sender),
sdk.NewAttribute(types.AttributeKeyRefundTokens, tokensStr),
sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
),
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
),
})
}

// EmitDenomEvent emits a denomination event in the OnRecv callback.
func EmitDenomEvent(ctx context.Context, token types.Token) {
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
denomStr := mustMarshalJSON(token.Denom)

sdkCtx.EventManager().EmitEvent(
sdk.NewEvent(
types.EventTypeDenom,
sdk.NewAttribute(types.AttributeKeyDenomHash, token.Denom.Hash().String()),
sdk.NewAttribute(types.AttributeKeyDenom, denomStr),
),
)
}

// mustMarshalJSON json marshals the given type and panics on failure.
func mustMarshalJSON(v any) string {
bz, err := json.Marshal(v)
if err != nil {
panic(err)
}

return string(bz)
}
148 changes: 0 additions & 148 deletions modules/apps/transfer/keeper/events.go

This file was deleted.

5 changes: 2 additions & 3 deletions modules/apps/transfer/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/telemetry"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
Expand Down Expand Up @@ -91,9 +92,7 @@ func (k Keeper) Transfer(ctx context.Context, msg *types.MsgTransfer) (*types.Ms
return nil, err
}

if err := k.EmitTransferEvent(ctx, sender.String(), msg.Receiver, tokens, msg.Memo, hops); err != nil {
return nil, err
}
events.EmitTransferEvent(ctx, sender.String(), msg.Receiver, tokens, msg.Memo, hops)

destinationPort := channel.Counterparty.PortId
destinationChannel := channel.Counterparty.ChannelId
Expand Down
5 changes: 2 additions & 3 deletions modules/apps/transfer/keeper/relay.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
internaltypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
Expand Down Expand Up @@ -190,9 +191,7 @@ func (k Keeper) OnRecvPacket(
k.SetDenomMetadata(ctx, token.Denom)
}

if err := k.EmitDenomEvent(ctx, token); err != nil {
return nil, err
}
events.EmitDenomEvent(ctx, token)

voucher := sdk.NewCoin(voucherDenom, transferAmount)

Expand Down
Loading

0 comments on commit ee661b7

Please sign in to comment.