mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-08-23 02:53:14 +00:00

* Modify DefaultTimeout to 120 seconds A temporary workaround for nodes having trouble to sync (currently the download of pruning point related data during IBD takes more than 30 seconds) * Cache existence in reachability store * Cache block level in the header * Fix IBD indication on submit block * Add hardForkOmitGenesisFromParentsDAAScore logic * Fix NumThreads bug in the wallet * Get rid of ParentsAtLevel header method * Fix a bug in BuildPruningPointProof * Increase race detector timeout * Add cache to BuildPruningPointProof * Add comments and temp comment out go vet * Fix ParentsAtLevel * Dont fill empty parents * Change HardForkOmitGenesisFromParentsDAAScore in fast netsync test * Add --allow-submit-block-when-not-synced in stability tests * Fix TestPruning * Return fast tests * Fix off by one error on kaspawallet * Fetch only one block with trusted data at a time * Update fork DAA score * Don't ban for unexpected message type * Fix tests Co-authored-by: Michael Sutton <mikisiton2@gmail.com> Co-authored-by: Ori Newman <>
48 lines
1.6 KiB
Go
48 lines
1.6 KiB
Go
package parentssanager
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/constants"
|
|
)
|
|
|
|
type parentsManager struct {
|
|
hardForkOmitGenesisFromParentsDAAScore uint64
|
|
genesisHash *externalapi.DomainHash
|
|
}
|
|
|
|
// New instantiates a new ParentsManager
|
|
func New(genesisHash *externalapi.DomainHash, hardForkOmitGenesisFromParentsDAAScore uint64) model.ParentsManager {
|
|
return &parentsManager{
|
|
genesisHash: genesisHash,
|
|
hardForkOmitGenesisFromParentsDAAScore: hardForkOmitGenesisFromParentsDAAScore,
|
|
}
|
|
}
|
|
|
|
func (pm *parentsManager) ParentsAtLevel(blockHeader externalapi.BlockHeader, level int) externalapi.BlockLevelParents {
|
|
var parentsAtLevel externalapi.BlockLevelParents
|
|
if len(blockHeader.Parents()) > level {
|
|
parentsAtLevel = blockHeader.Parents()[level]
|
|
}
|
|
|
|
if len(parentsAtLevel) == 0 && len(blockHeader.DirectParents()) > 0 && blockHeader.DAAScore() >= pm.hardForkOmitGenesisFromParentsDAAScore {
|
|
return externalapi.BlockLevelParents{pm.genesisHash}
|
|
}
|
|
|
|
return parentsAtLevel
|
|
}
|
|
|
|
func (pm *parentsManager) Parents(blockHeader externalapi.BlockHeader) []externalapi.BlockLevelParents {
|
|
numParents := len(blockHeader.Parents())
|
|
if blockHeader.DAAScore() >= pm.hardForkOmitGenesisFromParentsDAAScore {
|
|
numParents = constants.MaxBlockLevel + 1
|
|
}
|
|
|
|
parents := make([]externalapi.BlockLevelParents, numParents)
|
|
for i := 0; i < numParents; i++ {
|
|
parents[i] = pm.ParentsAtLevel(blockHeader, i)
|
|
}
|
|
|
|
return parents
|
|
}
|