Ori Newman 9a344152aa
[NOD-1517] Properly initialize consensus with Genesis block (#1009)
* [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
2020-11-08 15:17:20 +02:00

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)
}