From c951e0cc83a86c84b5b0ee2fc82c5a5ea3463ebc Mon Sep 17 00:00:00 2001 From: Aayush Rajasekaran Date: Wed, 25 Mar 2020 06:48:17 -0400 Subject: [PATCH] do not reprocess duplicate messages in a block --- chain/stmgr/stmgr.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/chain/stmgr/stmgr.go b/chain/stmgr/stmgr.go index 8f6ea9dcb..087e4a3d3 100644 --- a/chain/stmgr/stmgr.go +++ b/chain/stmgr/stmgr.go @@ -154,6 +154,7 @@ func (sm *StateManager) ApplyBlocks(ctx context.Context, pstate cid.Cid, bms []B } var receipts []cbg.CBORMarshaler + processedMsgs := map[cid.Cid]bool{} for _, b := range bms { vmi.SetBlockMiner(b.Miner) @@ -162,7 +163,9 @@ func (sm *StateManager) ApplyBlocks(ctx context.Context, pstate cid.Cid, bms []B for _, cm := range append(b.BlsMessages, b.SecpkMessages...) { m := cm.VMMessage() - + if _, found := processedMsgs[m.Cid()]; found { + continue + } r, err := vmi.ApplyMessage(ctx, m) if err != nil { return cid.Undef, cid.Undef, err @@ -177,6 +180,7 @@ func (sm *StateManager) ApplyBlocks(ctx context.Context, pstate cid.Cid, bms []B return cid.Undef, cid.Undef, err } } + processedMsgs[m.Cid()] = true } var err error