mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-29 10:16:45 +00:00

* Get rid of insertMode * Rename AddBlockToVirtual->AddBlock * When F is not in the future of P, enforce finality with P and not with F. * Don't allow blocks with invalid parents or with missing block body * Check finality violation before checking block status * Implement CalculateIndependentPruningPoint * Move checkBlockStatus to validateBlock * Add ValidateBlock to block processor interface * Adjust SetPruningPoint to the new IBD flow * Add pruning store to CSM's constructor * Flip wrong condition on AddHeaderTip * Fix func (hts *headerSelectedTipStore) Has * Fix block stage order * Call to ValidateBodyInContext from validatePostProofOfWork * Enable overrideDAGParams * Update log * Rename SetPruningPoint to ValidateAndInsertPruningPoint and move most of its logic inside block processor * Rename hasValidatedHeader->hasValidatedOnlyHeader * Fix typo * Name return values for fetchMissingUTXOSet * Add comment * Return ErrMissingParents when block body is missing * Add logs and comments * Fix merge error * Fix pruning point calculation to be by virtual selected parent * Replace CalculateIndependentPruningPoint to CalculatePruningPointByHeaderSelectedTip * Fix isAwaitingUTXOSet to check pruning point by headers * Change isAwaitingUTXOSet indication * Remove IsBlockInHeaderPruningPointFuture from BlockInfo * Fix LowestChainBlockAboveOrEqualToBlueScore * Add validateNewPruningPointTransactions * Add validateNewPruningAgainstPastUTXO * Rename set_pruning_utxo_set.go to update_pruning_utxo_set.go * Check missing block body hashes by missing block instead of status * Validate pruning point against past UTXO with the pruning point as block hash * Remove virtualHeaderHash * Fix comment * Fix imports
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package syncmanager
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
)
|
|
|
|
func (sm *syncManager) syncInfo() (*externalapi.SyncInfo, error) {
|
|
isAwaitingUTXOSet, ibdRootUTXOBlockHash, err := sm.isAwaitingUTXOSet()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
headerCount := sm.getHeaderCount()
|
|
blockCount := sm.getBlockCount()
|
|
|
|
return &externalapi.SyncInfo{
|
|
IsAwaitingUTXOSet: isAwaitingUTXOSet,
|
|
IBDRootUTXOBlockHash: ibdRootUTXOBlockHash,
|
|
HeaderCount: headerCount,
|
|
BlockCount: blockCount,
|
|
}, nil
|
|
}
|
|
|
|
func (sm *syncManager) isAwaitingUTXOSet() (isAwaitingUTXOSet bool, ibdRootUTXOBlockHash *externalapi.DomainHash,
|
|
err error) {
|
|
|
|
pruningPointByHeaders, err := sm.pruningManager.CalculatePruningPointByHeaderSelectedTip()
|
|
if err != nil {
|
|
return false, nil, err
|
|
}
|
|
|
|
pruningPoint, err := sm.pruningStore.PruningPoint(sm.databaseContext)
|
|
if err != nil {
|
|
return false, nil, err
|
|
}
|
|
|
|
// If the pruning point by headers is different from the current point
|
|
// it means we need to request the new pruning point UTXO set.
|
|
if *pruningPoint != *pruningPointByHeaders {
|
|
return true, pruningPointByHeaders, nil
|
|
}
|
|
|
|
return false, nil, nil
|
|
}
|
|
|
|
func (sm *syncManager) getHeaderCount() uint64 {
|
|
return sm.blockHeaderStore.Count()
|
|
}
|
|
|
|
func (sm *syncManager) getBlockCount() uint64 {
|
|
return sm.blockStore.Count()
|
|
}
|