Skip to content

Commit 3864793

Browse files
authored
imp: added simpler events (#7613)
1 parent ce8dcf2 commit 3864793

File tree

3 files changed

+98
-68
lines changed

3 files changed

+98
-68
lines changed

modules/core/04-channel/v2/keeper/events.go

+88-54
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"encoding/hex"
66
"fmt"
77

8+
"github.com/cosmos/gogoproto/proto"
9+
810
sdk "github.com/cosmos/cosmos-sdk/types"
911

1012
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/v2/types"
@@ -14,99 +16,131 @@ import (
1416
func emitSendPacketEvents(ctx context.Context, packet types.Packet) {
1517
sdkCtx := sdk.UnwrapSDKContext(ctx)
1618

19+
encodedPacket, err := proto.Marshal(&packet)
20+
if err != nil {
21+
panic(err)
22+
}
23+
1724
sdkCtx.EventManager().EmitEvents(sdk.Events{
1825
sdk.NewEvent(
1926
types.EventTypeSendPacket,
2027
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
2128
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
2229
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
2330
sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.TimeoutTimestamp)),
24-
sdk.NewAttribute(types.AttributeKeyPayloadLength, fmt.Sprintf("%d", len(packet.Payloads))),
25-
sdk.NewAttribute(types.AttributeKeyVersion, packet.Payloads[0].Version),
26-
sdk.NewAttribute(types.AttributeKeyEncoding, packet.Payloads[0].Encoding),
27-
sdk.NewAttribute(types.AttributeKeyData, hex.EncodeToString(packet.Payloads[0].Value)),
31+
sdk.NewAttribute(types.AttributeKeyPacketDataHex, hex.EncodeToString(encodedPacket)),
2832
),
2933
sdk.NewEvent(
3034
sdk.EventTypeMessage,
3135
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
3236
),
3337
})
34-
35-
for i, payload := range packet.Payloads {
36-
sdkCtx.EventManager().EmitEvents(sdk.Events{
37-
sdk.NewEvent(
38-
types.EventTypeSendPayload,
39-
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
40-
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
41-
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
42-
sdk.NewAttribute(types.AttributeKeyPayloadSequence, fmt.Sprintf("%d", i)),
43-
sdk.NewAttribute(types.AttributeKeyVersion, payload.Version),
44-
sdk.NewAttribute(types.AttributeKeyEncoding, payload.Encoding),
45-
sdk.NewAttribute(types.AttributeKeyData, hex.EncodeToString(payload.Value)),
46-
),
47-
sdk.NewEvent(
48-
sdk.EventTypeMessage,
49-
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
50-
),
51-
})
52-
}
5338
}
5439

5540
// emitRecvPacketEvents emits events for the RecvPacket handler.
5641
func emitRecvPacketEvents(ctx context.Context, packet types.Packet) {
5742
sdkCtx := sdk.UnwrapSDKContext(ctx)
5843

44+
encodedPacket, err := proto.Marshal(&packet)
45+
if err != nil {
46+
panic(err)
47+
}
48+
5949
sdkCtx.EventManager().EmitEvents(sdk.Events{
6050
sdk.NewEvent(
6151
types.EventTypeRecvPacket,
6252
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
6353
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
6454
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
6555
sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.TimeoutTimestamp)),
66-
sdk.NewAttribute(types.AttributeKeyPayloadLength, fmt.Sprintf("%d", len(packet.Payloads))),
67-
sdk.NewAttribute(types.AttributeKeyVersion, packet.Payloads[0].Version),
68-
sdk.NewAttribute(types.AttributeKeyEncoding, packet.Payloads[0].Encoding),
69-
sdk.NewAttribute(types.AttributeKeyData, hex.EncodeToString(packet.Payloads[0].Value)),
56+
sdk.NewAttribute(types.AttributeKeyPacketDataHex, hex.EncodeToString(encodedPacket)),
7057
),
7158
sdk.NewEvent(
7259
sdk.EventTypeMessage,
7360
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
7461
),
7562
})
63+
}
7664

77-
for i, payload := range packet.Payloads {
78-
sdkCtx.EventManager().EmitEvents(sdk.Events{
79-
sdk.NewEvent(
80-
types.EventTypeRecvPayload,
81-
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
82-
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
83-
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
84-
sdk.NewAttribute(types.AttributeKeyPayloadSequence, fmt.Sprintf("%d", i)),
85-
sdk.NewAttribute(types.AttributeKeyVersion, payload.Version),
86-
sdk.NewAttribute(types.AttributeKeyEncoding, payload.Encoding),
87-
sdk.NewAttribute(types.AttributeKeyData, hex.EncodeToString(payload.Value)),
88-
),
89-
sdk.NewEvent(
90-
sdk.EventTypeMessage,
91-
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
92-
),
93-
})
65+
// emitWriteAcknowledgementEvents emits events for WriteAcknowledgement.
66+
func emitWriteAcknowledgementEvents(ctx context.Context, packet types.Packet, ack types.Acknowledgement) {
67+
sdkCtx := sdk.UnwrapSDKContext(ctx)
68+
69+
encodedPacket, err := proto.Marshal(&packet)
70+
if err != nil {
71+
panic(err)
9472
}
95-
}
9673

97-
// EmitWriteAcknowledgementEvents emits events for WriteAcknowledgement.
98-
func EmitWriteAcknowledgementEvents(ctx context.Context, packet types.Packet, ack types.Acknowledgement) {
99-
// TODO: https://github.com/cosmos/ibc-go/issues/7386
74+
encodedAck, err := proto.Marshal(&ack)
75+
if err != nil {
76+
panic(err)
77+
}
78+
79+
sdkCtx.EventManager().EmitEvents(sdk.Events{
80+
sdk.NewEvent(
81+
types.EventTypeWriteAck,
82+
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
83+
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
84+
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
85+
sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.TimeoutTimestamp)),
86+
sdk.NewAttribute(types.AttributeKeyPacketDataHex, hex.EncodeToString(encodedPacket)),
87+
sdk.NewAttribute(types.AttributeKeyAckDataHex, hex.EncodeToString(encodedAck)),
88+
),
89+
sdk.NewEvent(
90+
sdk.EventTypeMessage,
91+
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
92+
),
93+
})
10094
}
10195

102-
// EmitAcknowledgePacketEvents emits events for the AcknowledgePacket handler.
103-
func EmitAcknowledgePacketEvents(ctx context.Context, packet types.Packet) {
104-
// TODO: https://github.com/cosmos/ibc-go/issues/7386
96+
// emitAcknowledgePacketEvents emits events for the AcknowledgePacket handler.
97+
func emitAcknowledgePacketEvents(ctx context.Context, packet types.Packet) {
98+
sdkCtx := sdk.UnwrapSDKContext(ctx)
99+
100+
encodedPacket, err := proto.Marshal(&packet)
101+
if err != nil {
102+
panic(err)
103+
}
104+
105+
sdkCtx.EventManager().EmitEvents(sdk.Events{
106+
sdk.NewEvent(
107+
types.EventTypeAcknowledgePacket,
108+
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
109+
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
110+
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
111+
sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.TimeoutTimestamp)),
112+
sdk.NewAttribute(types.AttributeKeyPacketDataHex, hex.EncodeToString(encodedPacket)),
113+
),
114+
sdk.NewEvent(
115+
sdk.EventTypeMessage,
116+
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
117+
),
118+
})
105119
}
106120

107-
// EmitTimeoutPacketEvents emits events for the TimeoutPacket handler.
108-
func EmitTimeoutPacketEvents(ctx context.Context, packet types.Packet) {
109-
// TODO: https://github.com/cosmos/ibc-go/issues/7386
121+
// emitTimeoutPacketEvents emits events for the TimeoutPacket handler.
122+
func emitTimeoutPacketEvents(ctx context.Context, packet types.Packet) {
123+
sdkCtx := sdk.UnwrapSDKContext(ctx)
124+
125+
encodedPacket, err := proto.Marshal(&packet)
126+
if err != nil {
127+
panic(err)
128+
}
129+
130+
sdkCtx.EventManager().EmitEvents(sdk.Events{
131+
sdk.NewEvent(
132+
types.EventTypeTimeoutPacket,
133+
sdk.NewAttribute(types.AttributeKeySrcChannel, packet.SourceChannel),
134+
sdk.NewAttribute(types.AttributeKeyDstChannel, packet.DestinationChannel),
135+
sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.Sequence)),
136+
sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.TimeoutTimestamp)),
137+
sdk.NewAttribute(types.AttributeKeyPacketDataHex, hex.EncodeToString(encodedPacket)),
138+
),
139+
sdk.NewEvent(
140+
sdk.EventTypeMessage,
141+
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
142+
),
143+
})
110144
}
111145

112146
// emitCreateChannelEvent emits a channel create event.

modules/core/04-channel/v2/keeper/packet.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ func (k Keeper) WriteAcknowledgement(
205205

206206
k.Logger(ctx).Info("acknowledgement written", "sequence", strconv.FormatUint(packet.Sequence, 10), "dest-channel", packet.DestinationChannel)
207207

208-
// TODO: decide how relayers will reconstruct the packet as it is not being passed.
209-
// EmitWriteAcknowledgementEvents(ctx, packet, ack)
208+
emitWriteAcknowledgementEvents(ctx, packet, ack)
210209

211210
// TODO: delete the packet that has been stored in ibc-core.
212211

@@ -230,7 +229,7 @@ func (k *Keeper) acknowledgePacket(ctx context.Context, packet types.Packet, ack
230229
commitment := k.GetPacketCommitment(ctx, packet.SourceChannel, packet.Sequence)
231230
if len(commitment) == 0 {
232231
// TODO: signal noop in events?
233-
EmitAcknowledgePacketEvents(ctx, packet)
232+
emitAcknowledgePacketEvents(ctx, packet)
234233

235234
// This error indicates that the acknowledgement has already been relayed
236235
// or there is a misconfigured relayer attempting to prove an acknowledgement
@@ -265,7 +264,7 @@ func (k *Keeper) acknowledgePacket(ctx context.Context, packet types.Packet, ack
265264

266265
k.Logger(ctx).Info("packet acknowledged", "sequence", strconv.FormatUint(packet.GetSequence(), 10), "source_channel_id", packet.GetSourceChannel(), "destination_channel_id", packet.GetDestinationChannel())
267266

268-
EmitAcknowledgePacketEvents(ctx, packet)
267+
emitAcknowledgePacketEvents(ctx, packet)
269268

270269
return nil
271270
}
@@ -308,7 +307,7 @@ func (k *Keeper) timeoutPacket(
308307
// check that the commitment has not been cleared and that it matches the packet sent by relayer
309308
commitment := k.GetPacketCommitment(ctx, packet.SourceChannel, packet.Sequence)
310309
if len(commitment) == 0 {
311-
EmitTimeoutPacketEvents(ctx, packet)
310+
emitTimeoutPacketEvents(ctx, packet)
312311
// This error indicates that the timeout has already been relayed
313312
// or there is a misconfigured relayer attempting to prove a timeout
314313
// for a packet never sent. Core IBC will treat this error as a no-op in order to
@@ -342,7 +341,7 @@ func (k *Keeper) timeoutPacket(
342341

343342
k.Logger(ctx).Info("packet timed out", "sequence", strconv.FormatUint(packet.Sequence, 10), "src_channel_id", packet.SourceChannel, "dst_channel_id", packet.DestinationChannel)
344343

345-
EmitTimeoutPacketEvents(ctx, packet)
344+
emitTimeoutPacketEvents(ctx, packet)
346345

347346
return nil
348347
}

modules/core/04-channel/v2/types/events.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ const (
1212
EventTypeRegisterCounterparty = "register_counterparty"
1313
EventTypeSendPacket = "send_packet"
1414
EventTypeRecvPacket = "recv_packet"
15-
16-
EventTypeSendPayload = "send_payload"
17-
EventTypeRecvPayload = "recv_payload"
15+
EventTypeTimeoutPacket = "timeout_packet"
16+
EventTypeAcknowledgePacket = "acknowledge_packet"
17+
EventTypeWriteAck = "write_acknowledgement"
1818

1919
AttributeKeyChannelID = "channel_id"
2020
AttributeKeyClientID = "client_id"
@@ -23,11 +23,8 @@ const (
2323
AttributeKeyDstChannel = "packet_dest_channel"
2424
AttributeKeySequence = "packet_sequence"
2525
AttributeKeyTimeoutTimestamp = "packet_timeout_timestamp"
26-
AttributeKeyPayloadLength = "packet_payload_length"
27-
AttributeKeyPayloadSequence = "payload_sequence"
28-
AttributeKeyVersion = "payload_version"
29-
AttributeKeyEncoding = "payload_encoding"
30-
AttributeKeyData = "payload_data"
26+
AttributeKeyPacketDataHex = "packet_data_hex"
27+
AttributeKeyAckDataHex = "acknowledgement_data_hex"
3128
)
3229

3330
// IBC channel events vars

0 commit comments

Comments
 (0)