Skip to content

Commit 4709a05

Browse files
authored
Merge pull request #495 from icon-project/fix/missing-conn-check
fix: missing valid connection check
2 parents c5ec398 + 825be7d commit 4709a05

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

relayer/chains/solana/listener.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,24 @@ func (p *Provider) processTxSignature(ctx context.Context, sign solana.Signature
160160
return txn, nil
161161
}
162162

163+
func (p *Provider) isValidConnectionMessage(logs []string) bool {
164+
validConnections := []string{}
165+
if p.cfg.ConnectionProgram != "" {
166+
validConnections = append(validConnections, p.cfg.ConnectionProgram)
167+
}
168+
for _, conn := range p.cfg.OtherConnections {
169+
validConnections = append(validConnections, conn)
170+
}
171+
for _, conn := range validConnections {
172+
for _, log := range logs {
173+
if strings.HasPrefix(log, fmt.Sprintf("Program %s invoke", conn)) {
174+
return true
175+
}
176+
}
177+
}
178+
return false
179+
}
180+
163181
func (p *Provider) parseMessagesFromEvent(solEvent types.SolEvent) ([]*relayertypes.Message, error) {
164182
messages := []*relayertypes.Message{}
165183

@@ -193,6 +211,9 @@ func (p *Provider) parseMessagesFromEvent(solEvent types.SolEvent) ([]*relayerty
193211
if slices.Equal(ev.Discriminator, discriminator) {
194212
switch ev.Name {
195213
case types.EventSendMessage:
214+
if !p.isValidConnectionMessage(solEvent.Logs) {
215+
continue
216+
}
196217
smEvent := types.SendMessageEvent{}
197218
if err := borsh.Deserialize(&smEvent, eventBytes); err != nil {
198219
return nil, fmt.Errorf("failed to decode send message event: %w", err)

relayer/chains/wasm/events.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ func (p *Provider) ParseMessageFromEvents(eventsList []abiTypes.Event) ([]*relay
4141
EventType: events.EmitMessage,
4242
Src: p.NID(),
4343
}
44+
45+
isValidConnectionMessage := false
46+
for _, attr := range ev.Attributes {
47+
if attr.Key == EventAttrKeyContractAddress && attr.Value == p.cfg.Contracts[relayerTypes.ConnectionContract] {
48+
isValidConnectionMessage = true
49+
}
50+
}
51+
if !isValidConnectionMessage {
52+
continue
53+
}
54+
4455
for _, attr := range ev.Attributes {
4556
switch attr.Key {
4657
case EventAttrKeyMsg:
@@ -61,6 +72,7 @@ func (p *Provider) ParseMessageFromEvents(eventsList []abiTypes.Event) ([]*relay
6172
msg.Src = attr.Value
6273
}
6374
}
75+
6476
messages = append(messages, msg)
6577
case EventTypeWasmCallMessage:
6678
msg := &relayerTypes.Message{

0 commit comments

Comments
 (0)