From 2e3592e351c09b94e919dae743d240d608d4cd51 Mon Sep 17 00:00:00 2001 From: Ori Newman Date: Wed, 5 May 2021 18:13:00 +0300 Subject: [PATCH] Calculate virtual's acceptance data and multiset after importing a new pruning point (#1700) (cherry picked from commit b405ea50e5736fc8a80880f6884414a3745f6590) --- .../blockprocessor/validateandinsertblock.go | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/domain/consensus/processes/blockprocessor/validateandinsertblock.go b/domain/consensus/processes/blockprocessor/validateandinsertblock.go index bcf250a77..fc207b9f0 100644 --- a/domain/consensus/processes/blockprocessor/validateandinsertblock.go +++ b/domain/consensus/processes/blockprocessor/validateandinsertblock.go @@ -59,6 +59,22 @@ func (bp *blockProcessor) setBlockStatusAfterBlockValidation( return nil } +func (bp *blockProcessor) updateVirtualAcceptanceDataAfterImportingPruningPoint(stagingArea *model.StagingArea) error { + + _, virtualAcceptanceData, virtualMultiset, err := + bp.consensusStateManager.CalculatePastUTXOAndAcceptanceData(stagingArea, model.VirtualBlockHash) + if err != nil { + return err + } + + log.Debugf("Staging virtual acceptance data after importing the pruning point") + bp.acceptanceDataStore.Stage(stagingArea, model.VirtualBlockHash, virtualAcceptanceData) + + log.Debugf("Staging virtual multiset after importing the pruning point") + bp.multisetStore.Stage(stagingArea, model.VirtualBlockHash, virtualMultiset) + return nil +} + func (bp *blockProcessor) validateAndInsertBlock(stagingArea *model.StagingArea, block *externalapi.DomainBlock, isPruningPoint bool) (*externalapi.BlockInsertionResult, error) { @@ -102,6 +118,11 @@ func (bp *blockProcessor) validateAndInsertBlock(stagingArea *model.StagingArea, if err != nil { return nil, err } + } else { + err := bp.updateVirtualAcceptanceDataAfterImportingPruningPoint(stagingArea) + if err != nil { + return nil, err + } } }