mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-04 13:16:43 +00:00

* [NOD-1579] Rename AcceptedTxIDs to AcceptedTransactionIDs. * [NOD-1579] Add InsertBlockResult to ValidateAndInsertBlock results. * [NOD-1593] Rename InsertBlockResult to BlockInsertionResult. * [NOD-1593] Add SelectedParentChainChanges to AddBlockToVirtual's result. * [NOD-1593] Implement findSelectedParentChainChanges. * [NOD-1593] Implement TestFindSelectedParentChainChanges. * [NOD-1593] Fix a string. * [NOD-1593] Finish implementing TestFindSelectedParentChainChanges. * [NOD-1593] Fix merge errors. * [NOD-1593] Fix merge errors. * [NOD-1593] Rename findSelectedParentChainChanges to calculateSelectedParentChainChanges. * [NOD-1593] Expand TestCalculateSelectedParentChainChanges.
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package blockprocessor
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/consensus/ruleerrors"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/consensushashing"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func (bp *blockProcessor) validateAndInsertPruningPoint(newPruningPoint *externalapi.DomainBlock, serializedUTXOSet []byte) error {
|
|
log.Info("Checking that the given pruning point is the expected pruning point")
|
|
|
|
expectedNewPruningPointHash, err := bp.pruningManager.CalculatePruningPointByHeaderSelectedTip()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
newPruningPointHash := consensushashing.BlockHash(newPruningPoint)
|
|
|
|
if *expectedNewPruningPointHash != *newPruningPointHash {
|
|
return errors.Wrapf(ruleerrors.ErrUnexpectedPruningPoint, "expected pruning point %s but got %s",
|
|
expectedNewPruningPointHash, newPruningPointHash)
|
|
}
|
|
|
|
// We have to validate the pruning point block before we set the new pruning point in consensusStateManager.
|
|
log.Infof("Validating the new pruning point %s", newPruningPointHash)
|
|
err = bp.validateBlockAndDiscardChanges(newPruningPoint)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = bp.consensusStateManager.UpdatePruningPoint(newPruningPoint, serializedUTXOSet)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = bp.ValidateAndInsertBlock(newPruningPoint)
|
|
return err
|
|
}
|