mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-23 23:36:56 +00:00

* [NOD-1517] Properly initialize consensus with Genesis block * [NOD-1517] Remove redundant AddHeaderTip * [NOD-1517] Don't return nil from dbHash<->DomainHash converters * [NOD-1517] Use pointer receivers * [NOD-1517] Use domain block in dagParams * [NOD-1517] Remove boolean from SelectedTip * [NOD-1517] Rename hasHeader to isHeadersOnlyBlock * [NOD-1517] Add comment * [NOD-1517] Change genesis version * [NOD-1517] Rename TestNewFactory->TestNewConsensus
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package reachabilitymanager
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
)
|
|
|
|
func (rt *reachabilityManager) data(blockHash *externalapi.DomainHash) (*model.ReachabilityData, error) {
|
|
hasData, err := rt.reachabilityDataStore.HasReachabilityData(rt.databaseContext, blockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if !hasData {
|
|
return &model.ReachabilityData{
|
|
TreeNode: nil,
|
|
FutureCoveringSet: nil,
|
|
}, nil
|
|
}
|
|
|
|
return rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
|
|
}
|
|
|
|
func (rt *reachabilityManager) futureCoveringSet(blockHash *externalapi.DomainHash) ([]*externalapi.DomainHash, error) {
|
|
data, err := rt.data(blockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return data.FutureCoveringSet, nil
|
|
}
|
|
|
|
func (rt *reachabilityManager) treeNode(blockHash *externalapi.DomainHash) (*model.ReachabilityTreeNode, error) {
|
|
data, err := rt.data(blockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return data.TreeNode, nil
|
|
}
|
|
|
|
func (rt *reachabilityManager) interval(blockHash *externalapi.DomainHash) (*model.ReachabilityInterval, error) {
|
|
treeNode, err := rt.treeNode(blockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return treeNode.Interval, nil
|
|
}
|
|
|
|
func (rt *reachabilityManager) children(blockHash *externalapi.DomainHash) ([]*externalapi.DomainHash, error) {
|
|
data, err := rt.data(blockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return data.TreeNode.Children, nil
|
|
}
|
|
|
|
func (rt *reachabilityManager) parent(blockHash *externalapi.DomainHash) (*externalapi.DomainHash, error) {
|
|
data, err := rt.data(blockHash)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return data.TreeNode.Parent, nil
|
|
}
|
|
|
|
func (rt *reachabilityManager) reindexRoot() (*externalapi.DomainHash, error) {
|
|
return rt.reachabilityDataStore.ReachabilityReindexRoot(rt.databaseContext)
|
|
}
|