Skip to content

Commit ee661b7

Browse files
Revert "refactor: use event service in transfer mod (#7725)"
This reverts commit 0e72d08.
1 parent 7983ff5 commit ee661b7

File tree

8 files changed

+174
-169
lines changed

8 files changed

+174
-169
lines changed

modules/apps/transfer/ibc_module.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

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

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

188187
data, ackErr = types.UnmarshalPacketData(packet.GetData(), channelVersion, "")
@@ -261,7 +260,9 @@ func (im IBCModule) OnAcknowledgementPacket(
261260
}
262261
}
263262

264-
return im.keeper.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
263+
events.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
264+
265+
return nil
265266
}
266267

267268
// OnTimeoutPacket implements the IBCModule interface
@@ -287,7 +288,9 @@ func (im IBCModule) OnTimeoutPacket(
287288
}
288289
}
289290

290-
return im.keeper.EmitOnTimeoutEvent(ctx, data)
291+
events.EmitOnTimeoutEvent(ctx, data)
292+
293+
return nil
291294
}
292295

293296
// OnChanUpgradeInit implements the IBCModule interface
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
package events
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"strconv"
7+
8+
sdk "github.com/cosmos/cosmos-sdk/types"
9+
10+
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
11+
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
12+
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
13+
)
14+
15+
// EmitTransferEvent emits a ibc transfer event on successful transfers.
16+
func EmitTransferEvent(ctx context.Context, sender, receiver string, tokens types.Tokens, memo string, forwardingHops []types.Hop) {
17+
sdkCtx := sdk.UnwrapSDKContext(ctx)
18+
tokensStr := mustMarshalJSON(tokens)
19+
forwardingHopsStr := mustMarshalJSON(forwardingHops)
20+
21+
sdkCtx.EventManager().EmitEvents(sdk.Events{
22+
sdk.NewEvent(
23+
types.EventTypeTransfer,
24+
sdk.NewAttribute(types.AttributeKeySender, sender),
25+
sdk.NewAttribute(types.AttributeKeyReceiver, receiver),
26+
sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
27+
sdk.NewAttribute(types.AttributeKeyMemo, memo),
28+
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
29+
),
30+
sdk.NewEvent(
31+
sdk.EventTypeMessage,
32+
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
33+
),
34+
})
35+
}
36+
37+
// EmitOnRecvPacketEvent emits a fungible token packet event in the OnRecvPacket callback
38+
func EmitOnRecvPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack ibcexported.Acknowledgement, ackErr error) {
39+
tokensStr := mustMarshalJSON(packetData.Tokens)
40+
forwardingHopStr := mustMarshalJSON(packetData.Forwarding.Hops)
41+
42+
eventAttributes := []sdk.Attribute{
43+
sdk.NewAttribute(types.AttributeKeySender, packetData.Sender),
44+
sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
45+
sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
46+
sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
47+
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopStr),
48+
sdk.NewAttribute(types.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
49+
}
50+
51+
if ackErr != nil {
52+
eventAttributes = append(eventAttributes, sdk.NewAttribute(types.AttributeKeyAckError, ackErr.Error()))
53+
}
54+
55+
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
56+
57+
sdkCtx.EventManager().EmitEvents(sdk.Events{
58+
sdk.NewEvent(
59+
types.EventTypePacket,
60+
eventAttributes...,
61+
),
62+
sdk.NewEvent(
63+
sdk.EventTypeMessage,
64+
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
65+
),
66+
})
67+
}
68+
69+
// EmitOnAcknowledgementPacketEvent emits a fungible token packet event in the OnAcknowledgementPacket callback
70+
func EmitOnAcknowledgementPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack channeltypes.Acknowledgement) {
71+
tokensStr := mustMarshalJSON(packetData.Tokens)
72+
forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
73+
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
74+
sdkCtx.EventManager().EmitEvents(sdk.Events{
75+
sdk.NewEvent(
76+
types.EventTypePacket,
77+
sdk.NewAttribute(sdk.AttributeKeySender, packetData.Sender),
78+
sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
79+
sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
80+
sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
81+
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
82+
sdk.NewAttribute(types.AttributeKeyAck, ack.String()),
83+
),
84+
sdk.NewEvent(
85+
sdk.EventTypeMessage,
86+
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
87+
),
88+
})
89+
90+
switch resp := ack.Response.(type) {
91+
case *channeltypes.Acknowledgement_Result:
92+
sdkCtx.EventManager().EmitEvent(
93+
sdk.NewEvent(
94+
types.EventTypePacket,
95+
sdk.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)),
96+
),
97+
)
98+
case *channeltypes.Acknowledgement_Error:
99+
sdkCtx.EventManager().EmitEvent(
100+
sdk.NewEvent(
101+
types.EventTypePacket,
102+
sdk.NewAttribute(types.AttributeKeyAckError, resp.Error),
103+
),
104+
)
105+
}
106+
}
107+
108+
// EmitOnTimeoutEvent emits a fungible token packet event in the OnTimeoutPacket callback
109+
func EmitOnTimeoutEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2) {
110+
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
111+
tokensStr := mustMarshalJSON(packetData.Tokens)
112+
forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
113+
114+
sdkCtx.EventManager().EmitEvents(sdk.Events{
115+
sdk.NewEvent(
116+
types.EventTypeTimeout,
117+
sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Sender),
118+
sdk.NewAttribute(types.AttributeKeyRefundTokens, tokensStr),
119+
sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
120+
sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
121+
),
122+
sdk.NewEvent(
123+
sdk.EventTypeMessage,
124+
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
125+
),
126+
})
127+
}
128+
129+
// EmitDenomEvent emits a denomination event in the OnRecv callback.
130+
func EmitDenomEvent(ctx context.Context, token types.Token) {
131+
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
132+
denomStr := mustMarshalJSON(token.Denom)
133+
134+
sdkCtx.EventManager().EmitEvent(
135+
sdk.NewEvent(
136+
types.EventTypeDenom,
137+
sdk.NewAttribute(types.AttributeKeyDenomHash, token.Denom.Hash().String()),
138+
sdk.NewAttribute(types.AttributeKeyDenom, denomStr),
139+
),
140+
)
141+
}
142+
143+
// mustMarshalJSON json marshals the given type and panics on failure.
144+
func mustMarshalJSON(v any) string {
145+
bz, err := json.Marshal(v)
146+
if err != nil {
147+
panic(err)
148+
}
149+
150+
return string(bz)
151+
}

modules/apps/transfer/keeper/events.go

Lines changed: 0 additions & 148 deletions
This file was deleted.

modules/apps/transfer/keeper/msg_server.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

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

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

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

9897
destinationPort := channel.Counterparty.PortId
9998
destinationChannel := channel.Counterparty.ChannelId

modules/apps/transfer/keeper/relay.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

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

13+
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
1314
internaltypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types"
1415
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
1516
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -190,9 +191,7 @@ func (k Keeper) OnRecvPacket(
190191
k.SetDenomMetadata(ctx, token.Denom)
191192
}
192193

193-
if err := k.EmitDenomEvent(ctx, token); err != nil {
194-
return nil, err
195-
}
194+
events.EmitDenomEvent(ctx, token)
196195

197196
voucher := sdk.NewCoin(voucherDenom, transferAmount)
198197

0 commit comments

Comments
 (0)