@@ -198,11 +198,10 @@ func (i IMTokenBiz) ChainMessages(ctx context.Context, req filscan.ChainMessages
198
198
if err != nil || transfers == nil {
199
199
return
200
200
}
201
- var transferList []* filscan.MessageBasic
202
- if transfers != nil {
203
- transferList = transfers .TracesByAccountIDList
204
- }
201
+ transferList := transfers .TracesByAccountIDList
202
+
205
203
cidMethod := make (map [string ]string )
204
+ uniq := make (map [string ]struct {})
206
205
var runners []parallel.Runner [filscan.MessageByCidResponse ]
207
206
for _ , transfer := range transferList {
208
207
cid := transfer .Cid
@@ -216,7 +215,10 @@ func (i IMTokenBiz) ChainMessages(ctx context.Context, req filscan.ChainMessages
216
215
ch := parallel .Run [filscan.MessageByCidResponse ](ctx , 50 , runners )
217
216
err = parallel .Wait [filscan.MessageByCidResponse ](ch , func (v filscan.MessageByCidResponse ) error {
218
217
if v .Message != nil {
219
- resp .MessageList = append (resp .MessageList , v .Message )
218
+ if _ , ok := uniq [v .Message .Cid ]; ! ok {
219
+ uniq [v .Message .Cid ] = struct {}{}
220
+ resp .MessageList = append (resp .MessageList , v .Message )
221
+ }
220
222
}
221
223
return nil
222
224
})
@@ -239,7 +241,7 @@ func (i IMTokenBiz) ChainMessages(ctx context.Context, req filscan.ChainMessages
239
241
}
240
242
}
241
243
for index := 1 ; index < len (resp .MessageList ); index ++ {
242
- //给每个消息打标签,避免通过cid找消息将recieve这种变成了send
244
+ //给每个消息打标签,避免通过cid找消息将receive这种变成了send
243
245
messageIMToken := resp .MessageList [index ]
244
246
if messageIMToken .Cid != "" {
245
247
messageIMToken .Method = cidMethod [messageIMToken .Cid ]
0 commit comments